--- setarch.c +++ setarch.c @@ -120,17 +121,27 @@ return 0; } +void show_usage(const char *progname) +{ + int f; + printf("Usage: %s%s [options] <program> [program arguments]\n\n", progname, + (!strcmp(progname,"setarch")?" <arch>":"")); + printf("Options:\n"); + for (f=0; f<sizeof(flags)/sizeof(flags[0]); f++) + printf("\t-%c\tEnable %s\n", flags[f].c, flags[f].name); +} + int main(int argc, char *argv[]) { + char *real_argv0; char *p = strrchr(argv[0], '/'); unsigned long options = 0; int got_arch = 0, verbose = 0; - p = p ? p + 1 : argv[0]; + real_argv0 = p = p ? p + 1 : argv[0]; if(argc <= 1) { - fprintf(stderr, "Usage: %s %s program arguments\n", - p, !strcmp(p, "setarch")?"arch":""); + show_usage(real_argv0); return 1; } @@ -155,6 +166,10 @@ verbose = 1; continue; } + if (arg[n] == 'h') { + show_usage(real_argv0); + return 0; + } for (f = 0; f < sizeof(flags)/sizeof(flags[0]); f++) { if (arg[n] == flags[f].c) {