From Bugzilla Helper: User-Agent: Mozilla/5.0 Galeon/1.2.0 (X11; Linux i686; U;) Gecko/20020326 Description of problem: setnetgrent() has behavior that is inconsistent with setnetgrent() on Solaris. From the Solaris 8 man page getnetgrent(3C): The functions setnetgrent() and endnetgrent() return 0 upon success. Version-Release number of selected component (if applicable): How reproducible: Always Steps to Reproduce: Compile netgrouptest.c (gcc -o netgrouptest netgrouptest.c): #include <netdb.h> #include <stdio.h> #include <errno.h> int main(int argc, char *argv[]) { char *machine, *user, *domain; int rv; int i; char opt; int show_host = 0, show_user = 0; for ( i = 1 ; i < argc ; i++ ) { if ( (rv = setnetgrent(argv[i])) != 0 ) { printf("%s: setnetgrent(%s): %s\n", argv[0], argv[i], strerror(errno)); } else { printf("%s: setnetgrent(%s): OK\n", argv[0], argv[i]); } } return 0; } Actual Results: % ./netgrouptest desktops slfjslfjslfj ./netgrouptest: setnetgrent(desktops): No such file or directory ./netgrouptest: setnetgrent(slfjslfjslfj): OK Expected Results: % ./netgrouptest desktops slfjslfjslfj ./netgrouptest: setnetgrent(desktops): No such file or directory ./netgrouptest: setnetgrent(slfjslfjslfj): ???? The ???? denotes an unknown condition. The Solaris man page does not define what is returned when setnetgrent() fails. Solaris 8 returns 0 in both cases. Additional info:
But glibc documents the current behaviour: When the call is successful (i.e., when a netgroup with this name exists) the return value is `1'. When the return value is `0' no netgroup of this name is known or some other error occurred. Note that e.g. AIX/BSD/Darwin don't return anything from setnetgrent and endnetgrent, so relying on specific return value without checking it in configury is wrong anyway.
Very well. After going through the pain of using info, I found that this is indeed documented. We really need info2man or a hack on man that will bring up the appropriate info node (as a man page rather than in info) as part of its search path.