| Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/coreutils/src/src/kill.c |
| Source code | Switch to Preprocessed file |
| Line | Source | Count | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | /* kill -- send a signal to a process | - | ||||||||||||||||||||||||
| 2 | Copyright (C) 2002-2018 Free Software Foundation, Inc. | - | ||||||||||||||||||||||||
| 3 | - | |||||||||||||||||||||||||
| 4 | This program is free software: you can redistribute it and/or modify | - | ||||||||||||||||||||||||
| 5 | it under the terms of the GNU General Public License as published by | - | ||||||||||||||||||||||||
| 6 | the Free Software Foundation, either version 3 of the License, or | - | ||||||||||||||||||||||||
| 7 | (at your option) any later version. | - | ||||||||||||||||||||||||
| 8 | - | |||||||||||||||||||||||||
| 9 | This program 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 | - | ||||||||||||||||||||||||
| 12 | GNU General Public License for more details. | - | ||||||||||||||||||||||||
| 13 | - | |||||||||||||||||||||||||
| 14 | You should have received a copy of the GNU General Public License | - | ||||||||||||||||||||||||
| 15 | along with this program. If not, see <https://www.gnu.org/licenses/>. */ | - | ||||||||||||||||||||||||
| 16 | - | |||||||||||||||||||||||||
| 17 | /* Written by Paul Eggert. */ | - | ||||||||||||||||||||||||
| 18 | - | |||||||||||||||||||||||||
| 19 | #include <config.h> | - | ||||||||||||||||||||||||
| 20 | #include <stdio.h> | - | ||||||||||||||||||||||||
| 21 | #include <getopt.h> | - | ||||||||||||||||||||||||
| 22 | #include <sys/types.h> | - | ||||||||||||||||||||||||
| 23 | #include <signal.h> | - | ||||||||||||||||||||||||
| 24 | - | |||||||||||||||||||||||||
| 25 | #include "system.h" | - | ||||||||||||||||||||||||
| 26 | #include "error.h" | - | ||||||||||||||||||||||||
| 27 | #include "sig2str.h" | - | ||||||||||||||||||||||||
| 28 | #include "operand2sig.h" | - | ||||||||||||||||||||||||
| 29 | #include "quote.h" | - | ||||||||||||||||||||||||
| 30 | - | |||||||||||||||||||||||||
| 31 | /* The official name of this program (e.g., no 'g' prefix). */ | - | ||||||||||||||||||||||||
| 32 | #define PROGRAM_NAME "kill" | - | ||||||||||||||||||||||||
| 33 | - | |||||||||||||||||||||||||
| 34 | #define AUTHORS proper_name ("Paul Eggert") | - | ||||||||||||||||||||||||
| 35 | - | |||||||||||||||||||||||||
| 36 | #if ! (HAVE_DECL_STRSIGNAL || defined strsignal) | - | ||||||||||||||||||||||||
| 37 | # if ! (HAVE_DECL_SYS_SIGLIST || defined sys_siglist) | - | ||||||||||||||||||||||||
| 38 | # if HAVE_DECL__SYS_SIGLIST || defined _sys_siglist | - | ||||||||||||||||||||||||
| 39 | # define sys_siglist _sys_siglist | - | ||||||||||||||||||||||||
| 40 | # elif HAVE_DECL___SYS_SIGLIST || defined __sys_siglist | - | ||||||||||||||||||||||||
| 41 | # define sys_siglist __sys_siglist | - | ||||||||||||||||||||||||
| 42 | # endif | - | ||||||||||||||||||||||||
| 43 | # endif | - | ||||||||||||||||||||||||
| 44 | # if HAVE_DECL_SYS_SIGLIST || defined sys_siglist | - | ||||||||||||||||||||||||
| 45 | # define strsignal(signum) (0 <= (signum) && (signum) <= SIGNUM_BOUND \ | - | ||||||||||||||||||||||||
| 46 | ? sys_siglist[signum] \ | - | ||||||||||||||||||||||||
| 47 | : 0) | - | ||||||||||||||||||||||||
| 48 | # endif | - | ||||||||||||||||||||||||
| 49 | # ifndef strsignal | - | ||||||||||||||||||||||||
| 50 | # define strsignal(signum) 0 | - | ||||||||||||||||||||||||
| 51 | # endif | - | ||||||||||||||||||||||||
| 52 | #endif | - | ||||||||||||||||||||||||
| 53 | - | |||||||||||||||||||||||||
| 54 | static char const short_options[] = | - | ||||||||||||||||||||||||
| 55 | "0::1::2::3::4::5::6::7::8::9::" | - | ||||||||||||||||||||||||
| 56 | "A::B::C::D::E::F::G::H::I::J::K::M::" | - | ||||||||||||||||||||||||
| 57 | "N::O::P::Q::R::S::T::U::V::W::X::Y::Z::" | - | ||||||||||||||||||||||||
| 58 | "Lln:s:t"; | - | ||||||||||||||||||||||||
| 59 | - | |||||||||||||||||||||||||
| 60 | static struct option const long_options[] = | - | ||||||||||||||||||||||||
| 61 | { | - | ||||||||||||||||||||||||
| 62 | {"list", no_argument, NULL, 'l'}, | - | ||||||||||||||||||||||||
| 63 | {"signal", required_argument, NULL, 's'}, | - | ||||||||||||||||||||||||
| 64 | {"table", no_argument, NULL, 't'}, | - | ||||||||||||||||||||||||
| 65 | {GETOPT_HELP_OPTION_DECL}, | - | ||||||||||||||||||||||||
| 66 | {GETOPT_VERSION_OPTION_DECL}, | - | ||||||||||||||||||||||||
| 67 | {NULL, 0, NULL, 0} | - | ||||||||||||||||||||||||
| 68 | }; | - | ||||||||||||||||||||||||
| 69 | - | |||||||||||||||||||||||||
| 70 | void | - | ||||||||||||||||||||||||
| 71 | usage (int status) | - | ||||||||||||||||||||||||
| 72 | { | - | ||||||||||||||||||||||||
| 73 | if (status != EXIT_SUCCESS)
| 2-8 | ||||||||||||||||||||||||
| 74 | emit_try_help (); executed 8 times by 1 test: end of blockExecuted by:
| 8 | ||||||||||||||||||||||||
| 75 | else | - | ||||||||||||||||||||||||
| 76 | { | - | ||||||||||||||||||||||||
| 77 | printf (_("\ | - | ||||||||||||||||||||||||
| 78 | Usage: %s [-s SIGNAL | -SIGNAL] PID...\n\ | - | ||||||||||||||||||||||||
| 79 | or: %s -l [SIGNAL]...\n\ | - | ||||||||||||||||||||||||
| 80 | or: %s -t [SIGNAL]...\n\ | - | ||||||||||||||||||||||||
| 81 | "), | - | ||||||||||||||||||||||||
| 82 | program_name, program_name, program_name); | - | ||||||||||||||||||||||||
| 83 | fputs (_("\ | - | ||||||||||||||||||||||||
| 84 | Send signals to processes, or list signals.\n\ | - | ||||||||||||||||||||||||
| 85 | "), stdout); | - | ||||||||||||||||||||||||
| 86 | - | |||||||||||||||||||||||||
| 87 | emit_mandatory_arg_note (); | - | ||||||||||||||||||||||||
| 88 | - | |||||||||||||||||||||||||
| 89 | fputs (_("\ | - | ||||||||||||||||||||||||
| 90 | -s, --signal=SIGNAL, -SIGNAL\n\ | - | ||||||||||||||||||||||||
| 91 | specify the name or number of the signal to be sent\n\ | - | ||||||||||||||||||||||||
| 92 | -l, --list list signal names, or convert signal names to/from numbers\n\ | - | ||||||||||||||||||||||||
| 93 | -t, --table print a table of signal information\n\ | - | ||||||||||||||||||||||||
| 94 | "), stdout); | - | ||||||||||||||||||||||||
| 95 | fputs (HELP_OPTION_DESCRIPTION, stdout); | - | ||||||||||||||||||||||||
| 96 | fputs (VERSION_OPTION_DESCRIPTION, stdout); | - | ||||||||||||||||||||||||
| 97 | fputs (_("\n\ | - | ||||||||||||||||||||||||
| 98 | SIGNAL may be a signal name like 'HUP', or a signal number like '1',\n\ | - | ||||||||||||||||||||||||
| 99 | or the exit status of a process terminated by a signal.\n\ | - | ||||||||||||||||||||||||
| 100 | PID is an integer; if negative it identifies a process group.\n\ | - | ||||||||||||||||||||||||
| 101 | "), stdout); | - | ||||||||||||||||||||||||
| 102 | printf (USAGE_BUILTIN_WARNING, PROGRAM_NAME); | - | ||||||||||||||||||||||||
| 103 | emit_ancillary_info (PROGRAM_NAME); | - | ||||||||||||||||||||||||
| 104 | } executed 2 times by 1 test: end of blockExecuted by:
| 2 | ||||||||||||||||||||||||
| 105 | exit (status); executed 10 times by 1 test: exit (status);Executed by:
| 10 | ||||||||||||||||||||||||
| 106 | } | - | ||||||||||||||||||||||||
| 107 | - | |||||||||||||||||||||||||
| 108 | /* Print a row of 'kill -t' output. NUM_WIDTH is the maximum signal | - | ||||||||||||||||||||||||
| 109 | number width, and SIGNUM is the signal number to print. The | - | ||||||||||||||||||||||||
| 110 | maximum name width is NAME_WIDTH, and SIGNAME is the name to print. */ | - | ||||||||||||||||||||||||
| 111 | - | |||||||||||||||||||||||||
| 112 | static void | - | ||||||||||||||||||||||||
| 113 | print_table_row (int num_width, int signum, | - | ||||||||||||||||||||||||
| 114 | int name_width, char const *signame) | - | ||||||||||||||||||||||||
| 115 | { | - | ||||||||||||||||||||||||
| 116 | char const *description = strsignal (signum); | - | ||||||||||||||||||||||||
| 117 | printf ("%*d %-*s %s\n", num_width, signum, name_width, signame, | - | ||||||||||||||||||||||||
| 118 | description ? description : "?"); | - | ||||||||||||||||||||||||
| 119 | } executed 126 times by 1 test: end of blockExecuted by:
| 126 | ||||||||||||||||||||||||
| 120 | - | |||||||||||||||||||||||||
| 121 | /* Print a list of signal names. If TABLE, print a table. | - | ||||||||||||||||||||||||
| 122 | Print the names specified by ARGV if nonzero; otherwise, | - | ||||||||||||||||||||||||
| 123 | print all known names. Return a suitable exit status. */ | - | ||||||||||||||||||||||||
| 124 | - | |||||||||||||||||||||||||
| 125 | static int | - | ||||||||||||||||||||||||
| 126 | list_signals (bool table, char *const *argv) | - | ||||||||||||||||||||||||
| 127 | { | - | ||||||||||||||||||||||||
| 128 | int signum; | - | ||||||||||||||||||||||||
| 129 | int status = EXIT_SUCCESS; | - | ||||||||||||||||||||||||
| 130 | char signame[SIG2STR_MAX]; | - | ||||||||||||||||||||||||
| 131 | - | |||||||||||||||||||||||||
| 132 | if (table)
| 3-7 | ||||||||||||||||||||||||
| 133 | { | - | ||||||||||||||||||||||||
| 134 | unsigned int name_width = 0; | - | ||||||||||||||||||||||||
| 135 | - | |||||||||||||||||||||||||
| 136 | /* Compute the maximum width of a signal number. */ | - | ||||||||||||||||||||||||
| 137 | unsigned int num_width = 1; | - | ||||||||||||||||||||||||
| 138 | for (signum = 1; signum <= SIGNUM_BOUND / 10; signum *= 10)
| 3 | ||||||||||||||||||||||||
| 139 | num_width++; executed 3 times by 1 test: num_width++;Executed by:
| 3 | ||||||||||||||||||||||||
| 140 | - | |||||||||||||||||||||||||
| 141 | /* Compute the maximum width of a signal name. */ | - | ||||||||||||||||||||||||
| 142 | for (signum = 1; signum <= SIGNUM_BOUND; signum++)
| 3-192 | ||||||||||||||||||||||||
| 143 | if (sig2str (signum, signame) == 0)
| 6-186 | ||||||||||||||||||||||||
| 144 | { | - | ||||||||||||||||||||||||
| 145 | size_t len = strlen (signame); | - | ||||||||||||||||||||||||
| 146 | if (name_width < len)
| 15-171 | ||||||||||||||||||||||||
| 147 | name_width = len; executed 15 times by 1 test: name_width = len;Executed by:
| 15 | ||||||||||||||||||||||||
| 148 | } executed 186 times by 1 test: end of blockExecuted by:
| 186 | ||||||||||||||||||||||||
| 149 | - | |||||||||||||||||||||||||
| 150 | if (argv)
| 1-2 | ||||||||||||||||||||||||
| 151 | for (; *argv; argv++)
| 1-2 | ||||||||||||||||||||||||
| 152 | { | - | ||||||||||||||||||||||||
| 153 | signum = operand2sig (*argv, signame); | - | ||||||||||||||||||||||||
| 154 | if (signum < 0)
| 0-2 | ||||||||||||||||||||||||
| 155 | status = EXIT_FAILURE; never executed: status = 1 ; | 0 | ||||||||||||||||||||||||
| 156 | else | - | ||||||||||||||||||||||||
| 157 | print_table_row (num_width, signum, name_width, signame); executed 2 times by 1 test: print_table_row (num_width, signum, name_width, signame);Executed by:
| 2 | ||||||||||||||||||||||||
| 158 | } | - | ||||||||||||||||||||||||
| 159 | else | - | ||||||||||||||||||||||||
| 160 | for (signum = 1; signum <= SIGNUM_BOUND; signum++)
| 2-128 | ||||||||||||||||||||||||
| 161 | if (sig2str (signum, signame) == 0)
| 4-124 | ||||||||||||||||||||||||
| 162 | print_table_row (num_width, signum, name_width, signame); executed 124 times by 1 test: print_table_row (num_width, signum, name_width, signame);Executed by:
| 124 | ||||||||||||||||||||||||
| 163 | } executed 3 times by 1 test: end of blockExecuted by:
| 3 | ||||||||||||||||||||||||
| 164 | else | - | ||||||||||||||||||||||||
| 165 | { | - | ||||||||||||||||||||||||
| 166 | if (argv)
| 1-6 | ||||||||||||||||||||||||
| 167 | for (; *argv; argv++)
| 6-10 | ||||||||||||||||||||||||
| 168 | { | - | ||||||||||||||||||||||||
| 169 | signum = operand2sig (*argv, signame); | - | ||||||||||||||||||||||||
| 170 | if (signum < 0)
| 3-7 | ||||||||||||||||||||||||
| 171 | status = EXIT_FAILURE; executed 3 times by 1 test: status = 1 ;Executed by:
| 3 | ||||||||||||||||||||||||
| 172 | else | - | ||||||||||||||||||||||||
| 173 | { | - | ||||||||||||||||||||||||
| 174 | if (ISDIGIT (**argv))
| 3-4 | ||||||||||||||||||||||||
| 175 | puts (signame); executed 4 times by 1 test: puts (signame);Executed by:
| 4 | ||||||||||||||||||||||||
| 176 | else | - | ||||||||||||||||||||||||
| 177 | printf ("%d\n", signum); executed 3 times by 1 test: printf ("%d\n", signum);Executed by:
| 3 | ||||||||||||||||||||||||
| 178 | } | - | ||||||||||||||||||||||||
| 179 | } | - | ||||||||||||||||||||||||
| 180 | else | - | ||||||||||||||||||||||||
| 181 | for (signum = 1; signum <= SIGNUM_BOUND; signum++)
| 1-64 | ||||||||||||||||||||||||
| 182 | if (sig2str (signum, signame) == 0)
| 2-62 | ||||||||||||||||||||||||
| 183 | puts (signame); executed 62 times by 1 test: puts (signame);Executed by:
| 62 | ||||||||||||||||||||||||
| 184 | } executed 7 times by 1 test: end of blockExecuted by:
| 7 | ||||||||||||||||||||||||
| 185 | - | |||||||||||||||||||||||||
| 186 | return status; executed 10 times by 1 test: return status;Executed by:
| 10 | ||||||||||||||||||||||||
| 187 | } | - | ||||||||||||||||||||||||
| 188 | - | |||||||||||||||||||||||||
| 189 | /* Send signal SIGNUM to all the processes or process groups specified | - | ||||||||||||||||||||||||
| 190 | by ARGV. Return a suitable exit status. */ | - | ||||||||||||||||||||||||
| 191 | - | |||||||||||||||||||||||||
| 192 | static int | - | ||||||||||||||||||||||||
| 193 | send_signals (int signum, char *const *argv) | - | ||||||||||||||||||||||||
| 194 | { | - | ||||||||||||||||||||||||
| 195 | int status = EXIT_SUCCESS; | - | ||||||||||||||||||||||||
| 196 | char const *arg = *argv; | - | ||||||||||||||||||||||||
| 197 | - | |||||||||||||||||||||||||
| 198 | do | - | ||||||||||||||||||||||||
| 199 | { | - | ||||||||||||||||||||||||
| 200 | char *endp; | - | ||||||||||||||||||||||||
| 201 | intmax_t n = (errno = 0, strtoimax (arg, &endp, 10)); | - | ||||||||||||||||||||||||
| 202 | pid_t pid = n; | - | ||||||||||||||||||||||||
| 203 | - | |||||||||||||||||||||||||
| 204 | if (errno == ERANGE || pid != n || arg == endp || *endp)
| 0-8 | ||||||||||||||||||||||||
| 205 | { | - | ||||||||||||||||||||||||
| 206 | error (0, 0, _("%s: invalid process id"), quote (arg)); | - | ||||||||||||||||||||||||
| 207 | status = EXIT_FAILURE; | - | ||||||||||||||||||||||||
| 208 | } executed 1 time by 1 test: end of blockExecuted by:
| 1 | ||||||||||||||||||||||||
| 209 | else if (kill (pid, signum) != 0)
| 0-7 | ||||||||||||||||||||||||
| 210 | { | - | ||||||||||||||||||||||||
| 211 | error (0, errno, "%s", quote (arg)); | - | ||||||||||||||||||||||||
| 212 | status = EXIT_FAILURE; | - | ||||||||||||||||||||||||
| 213 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 214 | } executed 8 times by 1 test: end of blockExecuted by:
| 8 | ||||||||||||||||||||||||
| 215 | while ((arg = *++argv));
| 0-8 | ||||||||||||||||||||||||
| 216 | - | |||||||||||||||||||||||||
| 217 | return status; executed 8 times by 1 test: return status;Executed by:
| 8 | ||||||||||||||||||||||||
| 218 | } | - | ||||||||||||||||||||||||
| 219 | - | |||||||||||||||||||||||||
| 220 | int | - | ||||||||||||||||||||||||
| 221 | main (int argc, char **argv) | - | ||||||||||||||||||||||||
| 222 | { | - | ||||||||||||||||||||||||
| 223 | int optc; | - | ||||||||||||||||||||||||
| 224 | bool list = false; | - | ||||||||||||||||||||||||
| 225 | bool table = false; | - | ||||||||||||||||||||||||
| 226 | int signum = -1; | - | ||||||||||||||||||||||||
| 227 | char signame[SIG2STR_MAX]; | - | ||||||||||||||||||||||||
| 228 | - | |||||||||||||||||||||||||
| 229 | initialize_main (&argc, &argv); | - | ||||||||||||||||||||||||
| 230 | set_program_name (argv[0]); | - | ||||||||||||||||||||||||
| 231 | setlocale (LC_ALL, ""); | - | ||||||||||||||||||||||||
| 232 | bindtextdomain (PACKAGE, LOCALEDIR); | - | ||||||||||||||||||||||||
| 233 | textdomain (PACKAGE); | - | ||||||||||||||||||||||||
| 234 | - | |||||||||||||||||||||||||
| 235 | atexit (close_stdout); | - | ||||||||||||||||||||||||
| 236 | - | |||||||||||||||||||||||||
| 237 | while ((optc = getopt_long (argc, argv, short_options, long_options, NULL))
| 19-37 | ||||||||||||||||||||||||
| 238 | != -1)
| 19-37 | ||||||||||||||||||||||||
| 239 | switch (optc) | - | ||||||||||||||||||||||||
| 240 | { | - | ||||||||||||||||||||||||
| 241 | case '0': case '1': case '2': case '3': case '4': executed 3 times by 1 test: case '0':Executed by:
executed 3 times by 1 test: case '1':Executed by:
never executed: case '2':never executed: case '3':never executed: case '4': | 0-3 | ||||||||||||||||||||||||
| 242 | case '5': case '6': case '7': case '8': case '9': never executed: case '5':never executed: case '6':never executed: case '7':never executed: case '8':never executed: case '9': | 0 | ||||||||||||||||||||||||
| 243 | if (optind != 2)
| 3 | ||||||||||||||||||||||||
| 244 | { | - | ||||||||||||||||||||||||
| 245 | /* This option is actually a process-id. */ | - | ||||||||||||||||||||||||
| 246 | optind--; | - | ||||||||||||||||||||||||
| 247 | goto no_more_options; executed 3 times by 1 test: goto no_more_options;Executed by:
| 3 | ||||||||||||||||||||||||
| 248 | } | - | ||||||||||||||||||||||||
| 249 | FALLTHROUGH; | - | ||||||||||||||||||||||||
| 250 | case 'A': case 'B': case 'C': case 'D': case 'E': code before this statement executed 3 times by 1 test: case 'A':Executed by:
never executed: case 'A':never executed: case 'B':executed 2 times by 1 test: case 'C':Executed by:
never executed: case 'D':never executed: case 'E': | 0-3 | ||||||||||||||||||||||||
| 251 | case 'F': case 'G': case 'H': case 'I': case 'J': never executed: case 'F':never executed: case 'G':never executed: case 'H':never executed: case 'I':never executed: case 'J': | 0 | ||||||||||||||||||||||||
| 252 | case 'K': /*case 'L':*/ case 'M': case 'N': case 'O': never executed: case 'K':never executed: case 'M':never executed: case 'N':never executed: case 'O': | 0 | ||||||||||||||||||||||||
| 253 | case 'P': case 'Q': case 'R': case 'S': case 'T': never executed: case 'P':never executed: case 'Q':never executed: case 'R':never executed: case 'S':executed 1 time by 1 test: case 'T':Executed by:
| 0-1 | ||||||||||||||||||||||||
| 254 | case 'U': case 'V': case 'W': case 'X': case 'Y': never executed: case 'U':never executed: case 'V':never executed: case 'W':never executed: case 'X':never executed: case 'Y': | 0 | ||||||||||||||||||||||||
| 255 | case 'Z': never executed: case 'Z': | 0 | ||||||||||||||||||||||||
| 256 | if (! optarg)
| 3 | ||||||||||||||||||||||||
| 257 | optarg = argv[optind - 1] + strlen (argv[optind - 1]); executed 3 times by 1 test: optarg = argv[optind - 1] + strlen (argv[optind - 1]);Executed by:
| 3 | ||||||||||||||||||||||||
| 258 | if (optarg != argv[optind - 1] + 2)
| 0-6 | ||||||||||||||||||||||||
| 259 | { | - | ||||||||||||||||||||||||
| 260 | error (0, 0, _("invalid option -- %c"), optc); | - | ||||||||||||||||||||||||
| 261 | usage (EXIT_FAILURE); | - | ||||||||||||||||||||||||
| 262 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 263 | optarg--; | - | ||||||||||||||||||||||||
| 264 | FALLTHROUGH; | - | ||||||||||||||||||||||||
| 265 | case 'n': /* -n is not documented, but is for Bash compatibility. */ code before this statement executed 6 times by 1 test: case 'n':Executed by:
executed 1 time by 1 test: case 'n':Executed by:
| 1-6 | ||||||||||||||||||||||||
| 266 | case 's': executed 3 times by 1 test: case 's':Executed by:
| 3 | ||||||||||||||||||||||||
| 267 | if (0 <= signum)
| 0-10 | ||||||||||||||||||||||||
| 268 | { | - | ||||||||||||||||||||||||
| 269 | error (0, 0, _("%s: multiple signals specified"), quote (optarg)); | - | ||||||||||||||||||||||||
| 270 | usage (EXIT_FAILURE); | - | ||||||||||||||||||||||||
| 271 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 272 | signum = operand2sig (optarg, signame); | - | ||||||||||||||||||||||||
| 273 | if (signum < 0)
| 0-10 | ||||||||||||||||||||||||
| 274 | usage (EXIT_FAILURE); never executed: usage ( 1 ); | 0 | ||||||||||||||||||||||||
| 275 | break; executed 10 times by 1 test: break;Executed by:
| 10 | ||||||||||||||||||||||||
| 276 | - | |||||||||||||||||||||||||
| 277 | case 'L': /* -L is not documented, but is for procps compatibility. */ executed 1 time by 1 test: case 'L':Executed by:
| 1 | ||||||||||||||||||||||||
| 278 | case 't': executed 4 times by 1 test: case 't':Executed by:
| 4 | ||||||||||||||||||||||||
| 279 | table = true; | - | ||||||||||||||||||||||||
| 280 | FALLTHROUGH; | - | ||||||||||||||||||||||||
| 281 | case 'l': code before this statement executed 5 times by 1 test: case 'l':Executed by:
executed 11 times by 1 test: case 'l':Executed by:
| 5-11 | ||||||||||||||||||||||||
| 282 | if (list)
| 2-14 | ||||||||||||||||||||||||
| 283 | { | - | ||||||||||||||||||||||||
| 284 | error (0, 0, _("multiple -l or -t options specified")); | - | ||||||||||||||||||||||||
| 285 | usage (EXIT_FAILURE); | - | ||||||||||||||||||||||||
| 286 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 287 | list = true; | - | ||||||||||||||||||||||||
| 288 | break; executed 14 times by 1 test: break;Executed by:
| 14 | ||||||||||||||||||||||||
| 289 | - | |||||||||||||||||||||||||
| 290 | case_GETOPT_HELP_CHAR; never executed: break;executed 2 times by 1 test: case GETOPT_HELP_CHAR:Executed by:
| 0-2 | ||||||||||||||||||||||||
| 291 | case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS); executed 4 times by 1 test: exit ( 0 );Executed by:
never executed: break;executed 4 times by 1 test: case GETOPT_VERSION_CHAR:Executed by:
| 0-4 | ||||||||||||||||||||||||
| 292 | default: executed 2 times by 1 test: default:Executed by:
| 2 | ||||||||||||||||||||||||
| 293 | usage (EXIT_FAILURE); | - | ||||||||||||||||||||||||
| 294 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 295 | no_more_options: code before this statement executed 19 times by 1 test: no_more_options:Executed by:
| 19 | ||||||||||||||||||||||||
| 296 | - | |||||||||||||||||||||||||
| 297 | if (signum < 0)
| 10-12 | ||||||||||||||||||||||||
| 298 | signum = SIGTERM; executed 12 times by 1 test: signum = 15 ;Executed by:
| 12 | ||||||||||||||||||||||||
| 299 | else if (list)
| 2-8 | ||||||||||||||||||||||||
| 300 | { | - | ||||||||||||||||||||||||
| 301 | error (0, 0, _("cannot combine signal with -l or -t")); | - | ||||||||||||||||||||||||
| 302 | usage (EXIT_FAILURE); | - | ||||||||||||||||||||||||
| 303 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 304 | - | |||||||||||||||||||||||||
| 305 | if ( ! list && argc <= optind)
| 2-10 | ||||||||||||||||||||||||
| 306 | { | - | ||||||||||||||||||||||||
| 307 | error (0, 0, _("no process ID specified")); | - | ||||||||||||||||||||||||
| 308 | usage (EXIT_FAILURE); | - | ||||||||||||||||||||||||
| 309 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 310 | - | |||||||||||||||||||||||||
| 311 | return (list executed 18 times by 1 test: return (list ? list_signals (table, optind < argc ? argv + optind : ((void *)0) ) : send_signals (signum, argv + optind));Executed by:
| 18 | ||||||||||||||||||||||||
| 312 | ? list_signals (table, optind < argc ? argv + optind : NULL) executed 18 times by 1 test: return (list ? list_signals (table, optind < argc ? argv + optind : ((void *)0) ) : send_signals (signum, argv + optind));Executed by:
| 18 | ||||||||||||||||||||||||
| 313 | : send_signals (signum, argv + optind)); executed 18 times by 1 test: return (list ? list_signals (table, optind < argc ? argv + optind : ((void *)0) ) : send_signals (signum, argv + optind));Executed by:
| 18 | ||||||||||||||||||||||||
| 314 | } | - | ||||||||||||||||||||||||
| Source code | Switch to Preprocessed file |