/* run a function from a function table. If not found then call the specified usage function */ int net_run_function(int argc, const char **argv, struct functable *table, int (*usage_fn)(int argc, const char **argv)) { int i; if (argc < 1) { d_printf("\nUsage: \n"); return usage_fn(argc, argv); } for (i=0; table[i].funcname; i++) { if (StrCaseCmp(argv[0], table[i].funcname) == 0) return table[i].fn(argc-1, argv+1); } d_fprintf(stderr, "No command: %s\n", argv[0]); return usage_fn(argc, argv); }
void check_superuser(void (*usage_fn)(void)) { #ifndef WINDOWS32 if (geteuid() != 0) { warnx("Run as root and you'll be happy.\n"); usage_fn(); /* NOTREACHED */ } #endif }