#include <sys/resource.h>
#include <errno.h>
#include <unistd.h>
-
+#if __DARWIN_UNIX03
+#include <limits.h>
+#endif /* __DARWIN_UNIX03 */
/*
* Backwards compatible nice.
*/
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);
}