X-Git-Url: https://git.saurik.com/apple/libc.git/blobdiff_plain/9385eb3d10ebe5eb398c52040ec3dbfba9b0cdcf..507116e319a1470bb0a5040d4d23e5c76955ef97:/gen/FreeBSD/nice.c?ds=sidebyside diff --git a/gen/FreeBSD/nice.c b/gen/FreeBSD/nice.c index 453caa7..962eee1 100644 --- a/gen/FreeBSD/nice.c +++ b/gen/FreeBSD/nice.c @@ -10,10 +10,6 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. @@ -35,14 +31,16 @@ static char sccsid[] = "@(#)nice.c 8.1 (Berkeley) 6/4/93"; #endif /* LIBC_SCCS and not lint */ #include -__FBSDID("$FreeBSD: src/lib/libc/gen/nice.c,v 1.3 2002/03/22 21:52:05 obrien Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/gen/nice.c,v 1.4 2007/01/09 00:27:54 imp Exp $"); #include #include #include #include #include - +#if __DARWIN_UNIX03 +#include +#endif /* __DARWIN_UNIX03 */ /* * Backwards compatible nice. */ @@ -50,11 +48,18 @@ int nice(incr) int incr; { - int prio; + int prio, rv; errno = 0; prio = getpriority(PRIO_PROCESS, 0); if (prio == -1 && errno) return (-1); - return (setpriority(PRIO_PROCESS, 0, prio + incr)); +#if __DARWIN_UNIX03 + if (prio + incr > NZERO-1) + incr = NZERO-1-prio; +#endif /* __DARWIN_UNIX03 */ + rv = setpriority(PRIO_PROCESS, 0, prio + incr); + if (rv == -1 && errno == EACCES) + errno = EPERM; + return (rv == -1) ? rv : getpriority(PRIO_PROCESS, 0); }