]>
Commit | Line | Data |
---|---|---|
bfff8b1b | 1 | /* Copyright (C) 2003-2017 Free Software Foundation, Inc. |
cb8ed941 UD |
2 | This file is part of the GNU C Library. |
3 | ||
4 | The GNU C Library is free software; you can redistribute it and/or | |
5 | modify it under the terms of the GNU Lesser General Public | |
6 | License as published by the Free Software Foundation; either | |
7 | version 2.1 of the License, or (at your option) any later version. | |
8 | ||
9 | The GNU C Library is distributed in the hope that it will be useful, | |
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
12 | Lesser General Public License for more details. | |
13 | ||
14 | You should have received a copy of the GNU Lesser General Public | |
59ba27a6 PE |
15 | License along with the GNU C Library; if not, see |
16 | <http://www.gnu.org/licenses/>. */ | |
cb8ed941 UD |
17 | |
18 | #include <errno.h> | |
19 | #include <stdio.h> | |
20 | #include <unistd.h> | |
21 | ||
22 | ||
23 | /* Test that nice() does not incorrectly return 0. */ | |
24 | static int | |
25 | do_test (void) | |
26 | { | |
8c937b84 | 27 | int ret; |
cb8ed941 | 28 | const int incr = 10; |
41f3e892 | 29 | int old; |
cb8ed941 UD |
30 | |
31 | /* Discover current nice value. */ | |
32 | errno = 0; | |
41f3e892 RM |
33 | old = nice (0); |
34 | if (old == -1 && errno != 0) | |
cb8ed941 | 35 | { |
41f3e892 | 36 | printf ("break: nice(%d) return: %d, %m\n", 0, old); |
cb8ed941 UD |
37 | return 1; |
38 | } | |
cb8ed941 UD |
39 | |
40 | /* Nice ourselves up. */ | |
41 | errno = 0; | |
42 | ret = nice (incr); | |
43 | if (ret == -1 && errno != 0) | |
44 | { | |
41f3e892 | 45 | printf ("break: nice(%d) return: %d, %m\n", incr, ret); |
cb8ed941 UD |
46 | return 1; |
47 | } | |
48 | ||
49 | /* Check for return value being zero when it shouldn't. Cannot simply | |
41f3e892 RM |
50 | check for expected value since nice values are capped at 2^n-1. |
51 | But we assume that we didn't start at the cap and so should have | |
52 | increased some. */ | |
53 | if (ret <= old) | |
cb8ed941 | 54 | { |
41f3e892 | 55 | printf ("FAIL: retval (%d) of nice(%d) != %d\n", ret, incr, old + incr); |
cb8ed941 UD |
56 | return 1; |
57 | } | |
58 | ||
84895dca PP |
59 | /* BZ #18086. Make sure we don't reset errno. */ |
60 | errno = EBADF; | |
61 | nice (0); | |
62 | if (errno != EBADF) | |
63 | { | |
64 | printf ("FAIL: errno = %i, but wanted EBADF (%i)\n", errno, EBADF); | |
65 | return 1; | |
66 | } | |
67 | ||
cb8ed941 | 68 | |
84895dca | 69 | printf ("PASS: nice(%d) from %d return: %d\n", incr, old, ret); |
cb8ed941 UD |
70 | return 0; |
71 | } | |
72 | ||
73 | #define TEST_FUNCTION do_test () | |
74 | #include "../test-skeleton.c" |