2019-08-26 00:30:09 +02:00
|
|
|
import core.stdc.stdio;
|
|
|
|
import core.stdc.stdlib;
|
|
|
|
import usbextreme;
|
2019-02-08 22:51:12 +01:00
|
|
|
|
2019-08-26 00:30:09 +02:00
|
|
|
extern(C) int main(int argc, char[]* argv) {
|
2019-08-28 15:45:06 +02:00
|
|
|
UsbExtremeHeaders headers;
|
|
|
|
UsbExtremeFilestat[10] filestatsBuf = void;
|
2019-08-27 15:49:43 +02:00
|
|
|
|
2019-02-08 22:51:12 +01:00
|
|
|
if (argc < 2) {
|
|
|
|
printf("Usage: open-usbextreme-example <path/to/ul.cfg>\n");
|
|
|
|
return 1;
|
|
|
|
}
|
2019-08-26 00:30:09 +02:00
|
|
|
|
2019-08-26 01:20:38 +02:00
|
|
|
auto f = fopen(argv[0].ptr, "rb");
|
|
|
|
|
|
|
|
if (!f) {
|
|
|
|
printf("Open error with file: %s\n", argv[0].ptr);
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
2019-02-08 22:51:12 +01:00
|
|
|
fseek(f, 0, SEEK_END);
|
2019-08-26 00:30:09 +02:00
|
|
|
auto fsize = ftell(f);
|
|
|
|
|
2019-02-08 22:51:12 +01:00
|
|
|
if (fsize <= 0) {
|
|
|
|
return 1;
|
|
|
|
}
|
2019-08-26 00:30:09 +02:00
|
|
|
|
|
|
|
auto size = *(cast(ulong*) &fsize);
|
2019-02-08 22:51:12 +01:00
|
|
|
fseek(f, 0, SEEK_SET);
|
|
|
|
|
2019-08-26 00:30:09 +02:00
|
|
|
auto data = malloc(size + 1);
|
2019-02-08 22:51:12 +01:00
|
|
|
fread(data, size, 1, f);
|
|
|
|
fclose(f);
|
|
|
|
|
2019-08-27 00:13:41 +02:00
|
|
|
if (oueReadHeaders(headers, data[0..size]) <= 0) {
|
2019-02-08 22:51:12 +01:00
|
|
|
return 1;
|
|
|
|
}
|
2019-08-27 15:49:43 +02:00
|
|
|
|
|
|
|
auto filestats = oueRead(filestatsBuf, headers);
|
2019-02-08 22:51:12 +01:00
|
|
|
|
2019-08-27 15:49:43 +02:00
|
|
|
foreach (filestat; filestats) {
|
|
|
|
printf("Game name [%d]: %s\n", filestat.offset, filestat.name.ptr);
|
2019-02-08 22:51:12 +01:00
|
|
|
}
|
2019-08-26 00:30:09 +02:00
|
|
|
|
2019-02-08 22:51:12 +01:00
|
|
|
return 0;
|
|
|
|
}
|