#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int
main(int argc, char *argv[])
{
    int ch;

    while ((ch = getopt(argc, argv, ":abcd:")) != -1) {
        switch (ch) {
        case 'a':
        case 'b':
        case 'c':
            printf("ch=%c\n", ch);
            break;
        case 'd':
            printf("ch=%c optarg=%s\n", ch, optarg);
            break;
        case '?':
            printf("%c unknown option\n", optopt);
            break;
        case ':':
            printf("%c requires an arguments\n", optopt);
            break;
        }
    }

    printf("at final optind=%d\n", optind);
    printf("------------------\n");

    for (int i = 0; argv[i]; i++)
        printf("argv[%d]=%s\n", i, argv[i]);

    exit(EXIT_SUCCESS);
}
