#include <stdio.h> #include <getarg.h> #include <sl.h> #include "gss-commands.h" static int supported_mechanisms_wrap(int argc, char **argv) { int ret; int optidx = 0; struct getargs args[] = { { "help", 'h', arg_flag, NULL, NULL, NULL } }; int help_flag = 0; args[0].value = &help_flag; if(getarg(args, 1, argc, argv, &optidx)) goto usage; if(argc - optidx > 0) { fprintf(stderr, "Arguments given (%u) are more than expected (0).\n\n", argc - optidx); goto usage; } if(help_flag) goto usage; ret = supported_mechanisms(NULL, argc - optidx, argv + optidx); return ret; usage: arg_printusage (args, 1, "supported-mechanisms", ""); return 0; } static int help_wrap(int argc, char **argv) { int ret; int optidx = 0; struct getargs args[] = { { "help", 'h', arg_flag, NULL, NULL, NULL } }; int help_flag = 0; args[0].value = &help_flag; if(getarg(args, 1, argc, argv, &optidx)) goto usage; if(argc - optidx > 1) { fprintf(stderr, "Arguments given (%u) are more than expected (1).\n\n", argc - optidx); goto usage; } if(argc - optidx < 0) { fprintf(stderr, "Arguments given (%u) are less than expected (0).\n\n", argc - optidx); goto usage; } if(help_flag) goto usage; ret = help(NULL, argc - optidx, argv + optidx); return ret; usage: arg_printusage (args, 1, "help", "[command]"); return 0; } SL_cmd commands[] = { { "supported-mechanisms", supported_mechanisms_wrap, "supported-mechanisms", "Print the supported mechanisms" }, { "help", help_wrap, "help [command]", "Help! I need somebody." }, { "?" }, { NULL } };