Jim Meyering wrote: > +# elif HAVE_DECL___ARGV > + return last_component (__argv);
This should be: return last_component (*__argv); Or with a bit more care: if (*__argv == NULL) return ("?"); return last_component (__argv); And in the test: +int +main (void) +{ + char const *p = getprogname (); + assert (STREQ (p, "test-getprogname")); + return 0; +} getprogname() would return "test-getprogname.exe" on Windows. Hence a fail. BTW, what is 'base' used for here: # elif HAVE_GETEXECNAME const char *base = getexecname (); if (!base) base = "?"; return last_component (program_invocation_name); -- --gv