195 |
|
* Main program |
196 |
|
*/ |
197 |
|
|
198 |
+ |
static void usage(const char *prg_name) |
199 |
+ |
{ |
200 |
+ |
printf("Usage: %s [OPTION...]\n", prg_name); |
201 |
+ |
printf("\nUnix options:\n"); |
202 |
+ |
printf(" --display STRING\n X display to use\n"); |
203 |
+ |
printf(" --break ADDRESS\n set ROM breakpoint\n"); |
204 |
+ |
printf(" --rominfo\n dump ROM information\n"); |
205 |
+ |
PrefsPrintUsage(); |
206 |
+ |
exit(0); |
207 |
+ |
} |
208 |
+ |
|
209 |
|
int main(int argc, char **argv) |
210 |
|
{ |
211 |
|
char str[256]; |
227 |
|
x_display_name = gdk_get_display(); // gtk_init() handles and removes the "--display" argument |
228 |
|
#endif |
229 |
|
|
230 |
< |
// Parse and remove arguments |
230 |
> |
// Read preferences |
231 |
> |
PrefsInit(argc, argv); |
232 |
> |
|
233 |
> |
// Parse command line arguments |
234 |
|
for (int i=1; i<argc; i++) { |
235 |
< |
if (strcmp(argv[i], "--display") == 0) { |
236 |
< |
argv[i] = NULL; |
237 |
< |
if ((i + 1) < argc && argv[i + 1]) { |
238 |
< |
argv[i++] = NULL; |
235 |
> |
if (strcmp(argv[i], "--help") == 0) { |
236 |
> |
usage(argv[0]); |
237 |
> |
} else if (strcmp(argv[i], "--display") == 0) { |
238 |
> |
i++; |
239 |
> |
if (i < argc) |
240 |
|
x_display_name = strdup(argv[i]); |
226 |
– |
} |
241 |
|
} else if (strcmp(argv[i], "--break") == 0) { |
242 |
< |
argv[i] = NULL; |
243 |
< |
if ((i + 1) < argc && argv[i + 1]) { |
230 |
< |
argv[i++] = NULL; |
242 |
> |
i++; |
243 |
> |
if (i < argc) |
244 |
|
ROMBreakpoint = strtol(argv[i], NULL, 0); |
232 |
– |
} |
245 |
|
} else if (strcmp(argv[i], "--rominfo") == 0) { |
234 |
– |
argv[i] = NULL; |
246 |
|
PrintROMInfo = true; |
247 |
< |
} |
248 |
< |
} |
249 |
< |
for (int i=1; i<argc; i++) { |
239 |
< |
int k; |
240 |
< |
for (k=i; k<argc; k++) |
241 |
< |
if (argv[k] != NULL) |
242 |
< |
break; |
243 |
< |
if (k > i) { |
244 |
< |
k -= i; |
245 |
< |
for (int j=i+k; j<argc; j++) |
246 |
< |
argv[j-k] = argv[j]; |
247 |
< |
argc -= k; |
247 |
> |
} else if (argv[i][0] == '-') { |
248 |
> |
fprintf(stderr, "Unrecognized option '%s'\n", argv[i]); |
249 |
> |
usage(argv[0]); |
250 |
|
} |
251 |
|
} |
252 |
|
|
264 |
|
XF86DGAForkApp(DefaultScreen(x_display)); |
265 |
|
#endif |
266 |
|
|
265 |
– |
// Read preferences |
266 |
– |
PrefsInit(argc, argv); |
267 |
– |
|
267 |
|
// Init system routines |
268 |
|
SysInit(); |
269 |
|
|