Make the implementation and documentation agree. Specifically:

- document that sysctl() and sysctlbyname() return 0 on success

 - if the provided buffer is too small, set errno to ENOMEM and return -1
   instead of returning ENOMEM.
This commit is contained in:
Dag-Erling Smørgrav 1999-01-06 18:11:53 +00:00
parent fae0c289fb
commit eec1dbe6ce
2 changed files with 11 additions and 6 deletions

View File

@ -667,9 +667,10 @@ If the amount of free and cache memory falls below this value, the
pageout daemon will enter "memory conserving mode" to avoid deadlock.
.El
.Sh RETURN VALUES
If the call to
.Fn sysctl
is successful, the number of bytes copied out is returned.
and
.Fn sysctlbyname
return 0 when successful.
Otherwise \-1 is returned and
.Va errno
is set appropriately.

View File

@ -66,16 +66,20 @@ sysctl(name, namelen, oldp, oldlenp, newp, newlen)
switch (name[1]) {
case USER_CS_PATH:
if (oldp && *oldlenp < sizeof(_PATH_STDPATH))
return (ENOMEM);
if (oldp && *oldlenp < sizeof(_PATH_STDPATH)) {
errno = ENOMEM;
return -1;
}
*oldlenp = sizeof(_PATH_STDPATH);
if (oldp != NULL)
memmove(oldp, _PATH_STDPATH, sizeof(_PATH_STDPATH));
return (0);
}
if (oldp && *oldlenp < sizeof(int))
return (ENOMEM);
if (oldp && *oldlenp < sizeof(int)) {
errno = ENOMEM;
return (-1);
}
*oldlenp = sizeof(int);
if (oldp == NULL)
return (0);