Turn off abbreviation in getopt_long (optarg.h)? Turn off abbreviation in getopt_long (optarg.h)? unix unix

Turn off abbreviation in getopt_long (optarg.h)?


Codeape,

It appears there isn't a way to disable the abbreviation feature. You aren't alone in wishing for this feature. See: http://sourceware.org/bugzilla/show_bug.cgi?id=6863

Unfortunately, It seems the glibc developers don't want the option as the bug report linked above was resolved with "WONTFIX". You may be out of luck here :-\


If you use argp_parse() instead of getopt() (highly reccommended, BTW), you can access the exact flag entered by the user through

state->argv[ state->next - 2 ]

It's a bit of a hack, but should work.


This is not perfect solution but you can check exact arg given by a user after calling getopt_long() (normally within switch) like below:

if (strcmp(argv[optind-1], "--longoption") == 0)

optind points a next argument that you need to process. Thus, you can access the original arg using optind-1.