Listing 2

/* tcmdopts.c, c\lib\test
* Test cmd_options routine
*/
#include <stdio.h>
#include "cmd_opts.h"

main(argc, argv) 
int argc;
char   *argv[];
{
    int cmd_errs, i;
    static char **barg, **darg;
    static struct   options sw[] =
        {'a',0,NULL,
         'b',0,&barg,
         'c',1,NULL,    /* generally useless */
         'd',1,&darg,
          0, 0,NULL};

    cmd_errs= cmd_options( & argc, argv, sw);
    if (sw[0].arg_flg > 0)
        printf("%d -a\n",sw[0].arg_flg);
    for (i= 0; i < sw[1].arg_flg; i++)
        printf("-b %s\n", barg[i]);
    if (sw[2].arg_flg > 0)
        printf("%d -c\n",sw[2].arg_flg);
    for (i= 0; i < sw[3].arg_flg; i++)
        printf("-d %s\n", darg[i]);
    puts("Unclaimed:");
    for (i= 1; i < argc; i++)    /* argv[0] is still
                   the command */
        printf(" %s",argv[i]);
    puts("\n");
    if (cmd_errs != 0)
    {
        printf("\7\ntcmdopts [-a] [-b<value>] -c -d<value> ...\n");
        printf("\n%d Command line options invalid\n", -cmd_errs);
        exit(1);
    }
}