> > Um ... so how would control get there with optind too large?
Sorry, I missed the simple explanation for that:
As option 'h' is missing an argument, getopt(_long) returns the
character '?' which is switched on through variable c, and the program
jumps to the '?' case handling.