common_env static int aVal = 141421; static unsigned int aFlag = 0x8aceU; static short aShort = (short)4523; static int aInt = 271828; static long aLong = 738905609L; static long long aLongLong = 738905609LL; static float aFloat = 3.1415926535; static double aDouble = 9.86960440108935861883; static const char ** aArgv = NULL; static struct poptOption optionsTable[] = { { "val", '\0', POPT_ARG_VAL | POPT_ARGFLAG_SHOW_DEFAULT, &aVal, 125992, "POPT_ARG_VAL: 125992 141421", 0}, { "int", 'i', POPT_ARG_INT | POPT_ARGFLAG_SHOW_DEFAULT, &aInt, 0, "POPT_ARG_INT: 271828", NULL }, { "short", 's', POPT_ARG_SHORT | POPT_ARGFLAG_SHOW_DEFAULT, &aShort, 0, "POPT_ARG_SHORT: 4523", NULL }, { "long", 'l', POPT_ARG_LONG | POPT_ARGFLAG_SHOW_DEFAULT, &aLong, 0, "POPT_ARG_LONG: 738905609", NULL }, { "longlong", 'L', POPT_ARG_LONGLONG | POPT_ARGFLAG_SHOW_DEFAULT, &aLongLong, 0, "POPT_ARG_LONGLONG: 738905609", NULL }, { "float", 'f', POPT_ARG_FLOAT | POPT_ARGFLAG_SHOW_DEFAULT, &aFloat, 0, "POPT_ARG_FLOAT: 3.14159", NULL }, { "double", 'd', POPT_ARG_DOUBLE | POPT_ARGFLAG_SHOW_DEFAULT, &aDouble, 0, "POPT_ARG_DOUBLE: 9.8696", NULL }, { "argv", '\0', POPT_ARG_ARGV, &aArgv, 0, "POPT_ARG_ARGV: append string to argv array (can be used multiple times)","STRING"}, POPT_AUTOALIAS POPT_AUTOHELP POPT_TABLEEND }; common_param poptContext poptGetContext(argv[0], argc, argv, optionsTable, 0) $0 = poptFreeContext($0); poptAddItem normal poptContext poptGetContext(argv[0], argc, argv, optionsTable, 0) poptFreeContext poptFini param1 normal poptItem NULL #include $0 = calloc(1, sizeof(*$0)); $0->option = *poptHelpOptionsI18N; $0->argc = 1; $0->argv = calloc(2, sizeof(*$0->argv)); $0->argv[0] = strdup("arg1"); poptAddItem param2 common_param struct poptAlias _alias #include static struct poptAlias _alias = { .longName = "longName", .shortName = 'l', .argc = 0, .argv = NULL }; $0.argc = 1; $0.argv = calloc($0.argc + 1, sizeof(*$0.argv)); $0.argv[0] = strdup("arg1"); common_param poptBits poptBits create_poptBits() poptBits create_poptBits() { poptBits a = NULL; (void) poptSaveBits(&a, 0, "foo"); (void) poptSaveBits(&a, 0, "bar"); (void) poptSaveBits(&a, 0, "baz"); return a; } normal const char *** &av #include const char ** av = NULL; free(av[0]); free(av); poptSaveString param1