distributable: url: http://ftp.rpm.org/popt/releases/popt-1.x/popt-{{ version.raw }}.tar.gz strip-components: 1 versions: github: rpm-software-management/popt/releases/tags strip: - /^popt-/ - /-release$/ build: dependencies: tea.xyz/gx/cc: c99 tea.xyz/gx/make: '*' script: | ./configure --disable-debug --disable-dependency-tracking --prefix={{ prefix }} make install test: dependencies: tea.xyz/gx/cc: c99 script: | mv $FIXTURE test.c gcc test.c -lpopt -o test test "$(./test -a 123 -b 456 -c 789 -f)" = "123::456::789::1::0" test "$(./test --optiona=987 --optionb=654 --optionc=321 --flag2)" = "987::654::321::0::1" fixture: | #include #include #include int main(int argc, char *argv[]) { int optiona=-1, optionb=-1, optionc=-1, flag1=0, flag2=0; poptContext pc; struct poptOption po[] = { {"optiona", 'a', POPT_ARG_INT, &optiona, 11001, "descrip1", "argDescrip1"}, {"optionb", 'b', POPT_ARG_INT, &optionb, 11002, "descrip2", "argDescrip2"}, {"optionc", 'c', POPT_ARG_INT, &optionc, 11003, "descrip3", "argDescrip3"}, {"flag1", 'f', POPT_ARG_NONE, &flag1, 11004, "descrip4", "argDescrip4"}, {"flag2", 'g', POPT_ARG_NONE, &flag2, 11005, "descrip5", "argDescrip5"}, POPT_AUTOHELP {NULL} }; pc = poptGetContext(NULL, argc, (const char **)argv, po, 0); poptSetOtherOptionHelp(pc, "[ARG...]"); if (argc < 2) { poptPrintUsage(pc, stderr, 0); exit(1); } int val; while ((val = poptGetNextOpt(pc)) >= 0); if (val != -1) { switch(val) { case POPT_ERROR_NOARG: printf("Argument missing for an option\\n"); exit(1); case POPT_ERROR_BADOPT: printf("Option's argument could not be parsed\\n"); exit(1); case POPT_ERROR_BADNUMBER: case POPT_ERROR_OVERFLOW: printf("Option could not be converted to number\\n"); exit(1); default: printf("Unknown error in option processing\\n"); exit(1); } } printf("%d::%d::%d::%d::%d", optiona, optionb, optionc, flag1, flag2); return 0; }