On Thu, Jan 24, 2002 at 11:52:09AM +0200, Ruslan Ermilov wrote: > Sounds like that, but changing it now would be too backwards incompatible.
Then shouldn't we fix the documentation to reflect reality? > On Wed, Jan 23, 2002 at 02:51:35AM -0800, Crist J . Clark wrote: > > Here is a quick, broken, program, > > > > #include <sys/types.h> > > #include <sys/sysctl.h> > > #include <sys/time.h> > > #include <sys/socket.h> > > #include <net/if.h> > > #include <net/route.h> > > > > #include <sysexits.h> > > > > /* #define MIB_LEN 6 */ > > #define MIB_LEN 5 > > > > int main(int argc, char *argv[]) > > { > > int mib[MIB_LEN]; > > size_t rttsize; > > > > mib[0] = CTL_NET; > > mib[1] = PF_ROUTE; > > mib[2] = 0; > > mib[3] = AF_INET; > > mib[4] = NET_RT_DUMP; > > /* mib[5] = 0; */ > > > > if (sysctl(mib, MIB_LEN, NULL, &rttsize, NULL, 0) != 0) > > err(EX_OSERR, "sysctl(3) for table size failed"); > > > > return 0; > > } > > > > This broken version will return, > > > > $ ./sysctlerr > > sysctlerr: sysctl(3) for table size failed: Invalid argument > > > > However, if we look at the errno descriptions in the sysctl(3) > > manpage, an EINVAL is returned when, > > > > [EINVAL] The name array is less than two or greater than > > CTL_MAXNAME. > > > > [EINVAL] A non-null newp is given and its specified length in > > newlen is too large or too small. > > > > Neither of which is the case here. I think it should be returning one > > of these, > > > > [ENOTDIR] The name array specifies an intermediate rather than > > terminal name. > > > > [EISDIR] The name array specifies a terminal name, but the > > actual name is not terminal. > > > > But "terminal" or "intermediate" names are not defined anywhere else > > in the manpage. -- Crist J. Clark | [EMAIL PROTECTED] | [EMAIL PROTECTED] http://people.freebsd.org/~cjc/ | [EMAIL PROTECTED] To Unsubscribe: send mail to [EMAIL PROTECTED] with "unsubscribe freebsd-hackers" in the body of the message