8322 nl: misleading-indentation
[unleashed/tickless.git] / usr / src / lib / libbc / libc / compat / sys5 / nice.c
blob926e79eb10383a20debbfe0027c7c3d9c3a7d286
1 /*
2 * CDDL HEADER START
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License"). You may not use this file except in compliance
7 * with the License.
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
20 * CDDL HEADER END
23 * Copyright 1986 Sun Microsystems, Inc. All rights reserved.
24 * Use is subject to license terms.
27 #pragma ident "%Z%%M% %I% %E% SMI"
28 /* from UCB 4.1 83/05/30 */
30 #include <sys/time.h>
31 #include <sys/resource.h>
32 #include <errno.h>
35 * Backwards compatible nice.
37 int
38 nice(incr)
39 int incr;
41 register int prio;
42 int serrno;
44 /* put in brain-damaged upper range checking */
45 if ((incr > 40) && (geteuid() != 0)) {
46 errno = EPERM;
47 return (-1);
50 serrno = errno;
51 errno = 0;
52 prio = getpriority(PRIO_PROCESS, 0);
53 if (prio == -1 && errno)
54 return (-1);
55 prio += incr;
56 if (prio < -20)
57 prio = -20;
58 else if (prio > 19)
59 prio = 19;
60 if (setpriority(PRIO_PROCESS, 0, prio) == -1) {
62 * 4.3BSD stupidly returns EACCES on an attempt by a
63 * non-super-user process to lower a priority; map
64 * it to EPERM.
66 if (errno == EACCES)
67 errno = EPERM;
68 return (-1);
70 errno = serrno;
71 return (prio);