OpenCoverage

split.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/coreutils/src/src/split.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/* split.c -- split a file into pieces.-
2 Copyright (C) 1988-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/* By tege@sics.se, with rms.-
18-
19 TODO:-
20 * support -p REGEX as in BSD's split.-
21 * support --suppress-matched as in csplit. */-
22#include <config.h>-
23-
24#include <assert.h>-
25#include <stdio.h>-
26#include <getopt.h>-
27#include <signal.h>-
28#include <sys/types.h>-
29#include <sys/wait.h>-
30-
31#include "system.h"-
32#include "die.h"-
33#include "error.h"-
34#include "fd-reopen.h"-
35#include "fcntl--.h"-
36#include "full-write.h"-
37#include "ioblksize.h"-
38#include "quote.h"-
39#include "safe-read.h"-
40#include "sig2str.h"-
41#include "xbinary-io.h"-
42#include "xdectoint.h"-
43#include "xstrtol.h"-
44-
45/* The official name of this program (e.g., no 'g' prefix). */-
46#define PROGRAM_NAME "split"-
47-
48#define AUTHORS \-
49 proper_name ("Torbjorn Granlund"), \-
50 proper_name ("Richard M. Stallman")-
51-
52/* Shell command to filter through, instead of creating files. */-
53static char const *filter_command;-
54-
55/* Process ID of the filter. */-
56static int filter_pid;-
57-
58/* Array of open pipes. */-
59static int *open_pipes;-
60static size_t open_pipes_alloc;-
61static size_t n_open_pipes;-
62-
63/* Blocked signals. */-
64static sigset_t oldblocked;-
65static sigset_t newblocked;-
66-
67/* Base name of output files. */-
68static char const *outbase;-
69-
70/* Name of output files. */-
71static char *outfile;-
72-
73/* Pointer to the end of the prefix in OUTFILE.-
74 Suffixes are inserted here. */-
75static char *outfile_mid;-
76-
77/* Generate new suffix when suffixes are exhausted. */-
78static bool suffix_auto = true;-
79-
80/* Length of OUTFILE's suffix. */-
81static size_t suffix_length;-
82-
83/* Alphabet of characters to use in suffix. */-
84static char const *suffix_alphabet = "abcdefghijklmnopqrstuvwxyz";-
85-
86/* Numerical suffix start value. */-
87static const char *numeric_suffix_start;-
88-
89/* Additional suffix to append to output file names. */-
90static char const *additional_suffix;-
91-
92/* Name of input file. May be "-". */-
93static char *infile;-
94-
95/* stat buf for input file. */-
96static struct stat in_stat_buf;-
97-
98/* Descriptor on which output file is open. */-
99static int output_desc = -1;-
100-
101/* If true, print a diagnostic on standard error just before each-
102 output file is opened. */-
103static bool verbose;-
104-
105/* If true, don't generate zero length output files. */-
106static bool elide_empty_files;-
107-
108/* If true, in round robin mode, immediately copy-
109 input to output, which is much slower, so disabled by default. */-
110static bool unbuffered;-
111-
112/* The character marking end of line. Defaults to \n below. */-
113static int eolchar = -1;-
114-
115/* The split mode to use. */-
116enum Split_type-
117{-
118 type_undef, type_bytes, type_byteslines, type_lines, type_digits,-
119 type_chunk_bytes, type_chunk_lines, type_rr-
120};-
121-
122/* For long options that have no equivalent short option, use a-
123 non-character as a pseudo short option, starting with CHAR_MAX + 1. */-
124enum-
125{-
126 VERBOSE_OPTION = CHAR_MAX + 1,-
127 FILTER_OPTION,-
128 IO_BLKSIZE_OPTION,-
129 ADDITIONAL_SUFFIX_OPTION-
130};-
131-
132static struct option const longopts[] =-
133{-
134 {"bytes", required_argument, NULL, 'b'},-
135 {"lines", required_argument, NULL, 'l'},-
136 {"line-bytes", required_argument, NULL, 'C'},-
137 {"number", required_argument, NULL, 'n'},-
138 {"elide-empty-files", no_argument, NULL, 'e'},-
139 {"unbuffered", no_argument, NULL, 'u'},-
140 {"suffix-length", required_argument, NULL, 'a'},-
141 {"additional-suffix", required_argument, NULL,-
142 ADDITIONAL_SUFFIX_OPTION},-
143 {"numeric-suffixes", optional_argument, NULL, 'd'},-
144 {"hex-suffixes", optional_argument, NULL, 'x'},-
145 {"filter", required_argument, NULL, FILTER_OPTION},-
146 {"verbose", no_argument, NULL, VERBOSE_OPTION},-
147 {"separator", required_argument, NULL, 't'},-
148 {"-io-blksize", required_argument, NULL,-
149 IO_BLKSIZE_OPTION}, /* do not document */-
150 {GETOPT_HELP_OPTION_DECL},-
151 {GETOPT_VERSION_OPTION_DECL},-
152 {NULL, 0, NULL, 0}-
153};-
154-
155/* Return true if the errno value, ERR, is ignorable. */-
156static inline bool-
157ignorable (int err)-
158{-
159 return filter_command && err == EPIPE;
executed 605297 times by 1 test: return filter_command && err == 32 ;
Executed by:
  • split
605297
160}-
161-
162static void-
163set_suffix_length (uintmax_t n_units, enum Split_type split_type)-
164{-
165#define DEFAULT_SUFFIX_LENGTH 2-
166-
167 uintmax_t suffix_needed = 0;-
168-
169 /* The suffix auto length feature is incompatible with-
170 a user specified start value as the generated suffixes-
171 are not all consecutive. */-
172 if (numeric_suffix_start)
numeric_suffix_startDescription
TRUEevaluated 7 times by 1 test
Evaluated by:
  • split
FALSEevaluated 408 times by 1 test
Evaluated by:
  • split
7-408
173 suffix_auto = false;
executed 7 times by 1 test: suffix_auto = 0 ;
Executed by:
  • split
7
174-
175 /* Auto-calculate the suffix length if the number of files is given. */-
176 if (split_type == type_chunk_bytes || split_type == type_chunk_lines
split_type == type_chunk_bytesDescription
TRUEevaluated 18 times by 1 test
Evaluated by:
  • split
FALSEevaluated 397 times by 1 test
Evaluated by:
  • split
split_type == type_chunk_linesDescription
TRUEevaluated 104 times by 1 test
Evaluated by:
  • split
FALSEevaluated 293 times by 1 test
Evaluated by:
  • split
18-397
177 || split_type == type_rr)
split_type == type_rrDescription
TRUEevaluated 20 times by 1 test
Evaluated by:
  • split
FALSEevaluated 273 times by 1 test
Evaluated by:
  • split
20-273
178 {-
179 uintmax_t n_units_end = n_units;-
180 if (numeric_suffix_start)
numeric_suffix_startDescription
TRUEevaluated 2 times by 1 test
Evaluated by:
  • split
FALSEevaluated 140 times by 1 test
Evaluated by:
  • split
2-140
181 {-
182 uintmax_t n_start;-
183 strtol_error e = xstrtoumax (numeric_suffix_start, NULL, 10,-
184 &n_start, "");-
185 if (e == LONGINT_OK && n_start <= UINTMAX_MAX - n_units)
e == LONGINT_OKDescription
TRUEevaluated 2 times by 1 test
Evaluated by:
  • split
FALSEnever evaluated
n_start <= (18...5UL) - n_unitsDescription
TRUEevaluated 2 times by 1 test
Evaluated by:
  • split
FALSEnever evaluated
0-2
186 {-
187 /* Restrict auto adjustment so we don't keep-
188 incrementing a suffix size arbitrarily,-
189 as that would break sort order for files-
190 generated from multiple split runs. */-
191 if (n_start < n_units)
n_start < n_unitsDescription
TRUEevaluated 1 time by 1 test
Evaluated by:
  • split
FALSEevaluated 1 time by 1 test
Evaluated by:
  • split
1
192 n_units_end += n_start;
executed 1 time by 1 test: n_units_end += n_start;
Executed by:
  • split
1
193 }
executed 2 times by 1 test: end of block
Executed by:
  • split
2
194-
195 }
executed 2 times by 1 test: end of block
Executed by:
  • split
2
196 size_t alphabet_len = strlen (suffix_alphabet);-
197 bool alphabet_slop = (n_units_end % alphabet_len) != 0;-
198 while (n_units_end /= alphabet_len)
n_units_end /= alphabet_lenDescription
TRUEevaluated 20 times by 1 test
Evaluated by:
  • split
FALSEevaluated 142 times by 1 test
Evaluated by:
  • split
20-142
199 suffix_needed++;
executed 20 times by 1 test: suffix_needed++;
Executed by:
  • split
20
200 suffix_needed += alphabet_slop;-
201 suffix_auto = false;-
202 }
executed 142 times by 1 test: end of block
Executed by:
  • split
142
203-
204 if (suffix_length) /* set by user */
suffix_lengthDescription
TRUEevaluated 8 times by 1 test
Evaluated by:
  • split
FALSEevaluated 407 times by 1 test
Evaluated by:
  • split
8-407
205 {-
206 if (suffix_length < suffix_needed)
suffix_length < suffix_neededDescription
TRUEevaluated 1 time by 1 test
Evaluated by:
  • split
FALSEevaluated 7 times by 1 test
Evaluated by:
  • split
1-7
207 {-
208 die (EXIT_FAILURE, 0,-
209 _("the suffix length needs to be at least %"PRIuMAX),-
210 suffix_needed);-
211 }
never executed: end of block
0
212 suffix_auto = false;-
213 return;
executed 7 times by 1 test: return;
Executed by:
  • split
7
214 }-
215 else-
216 suffix_length = MAX (DEFAULT_SUFFIX_LENGTH, suffix_needed);
executed 407 times by 1 test: suffix_length = ((( 2 )>( suffix_needed ))?( 2 ):( suffix_needed )) ;
Executed by:
  • split
(( 2 )>( suffix_needed ))Description
TRUEevaluated 403 times by 1 test
Evaluated by:
  • split
FALSEevaluated 4 times by 1 test
Evaluated by:
  • split
4-407
217}-
218-
219void-
220usage (int status)-
221{-
222 if (status != EXIT_SUCCESS)
status != 0Description
TRUEevaluated 14 times by 1 test
Evaluated by:
  • split
FALSEevaluated 14 times by 1 test
Evaluated by:
  • split
14
223 emit_try_help ();
executed 14 times by 1 test: end of block
Executed by:
  • split
14
224 else-
225 {-
226 printf (_("\-
227Usage: %s [OPTION]... [FILE [PREFIX]]\n\-
228"),-
229 program_name);-
230 fputs (_("\-
231Output pieces of FILE to PREFIXaa, PREFIXab, ...;\n\-
232default size is 1000 lines, and default PREFIX is 'x'.\n\-
233"), stdout);-
234-
235 emit_stdin_note ();-
236 emit_mandatory_arg_note ();-
237-
238 fprintf (stdout, _("\-
239 -a, --suffix-length=N generate suffixes of length N (default %d)\n\-
240 --additional-suffix=SUFFIX append an additional SUFFIX to file names\n\-
241 -b, --bytes=SIZE put SIZE bytes per output file\n\-
242 -C, --line-bytes=SIZE put at most SIZE bytes of records per output file\n\-
243 -d use numeric suffixes starting at 0, not alphabetic\n\-
244 --numeric-suffixes[=FROM] same as -d, but allow setting the start value\-
245\n\-
246 -x use hex suffixes starting at 0, not alphabetic\n\-
247 --hex-suffixes[=FROM] same as -x, but allow setting the start value\n\-
248 -e, --elide-empty-files do not generate empty output files with '-n'\n\-
249 --filter=COMMAND write to shell COMMAND; file name is $FILE\n\-
250 -l, --lines=NUMBER put NUMBER lines/records per output file\n\-
251 -n, --number=CHUNKS generate CHUNKS output files; see explanation below\n\-
252 -t, --separator=SEP use SEP instead of newline as the record separator;\n\-
253 '\\0' (zero) specifies the NUL character\n\-
254 -u, --unbuffered immediately copy input to output with '-n r/...'\n\-
255"), DEFAULT_SUFFIX_LENGTH);-
256 fputs (_("\-
257 --verbose print a diagnostic just before each\n\-
258 output file is opened\n\-
259"), stdout);-
260 fputs (HELP_OPTION_DESCRIPTION, stdout);-
261 fputs (VERSION_OPTION_DESCRIPTION, stdout);-
262 emit_size_note ();-
263 fputs (_("\n\-
264CHUNKS may be:\n\-
265 N split into N files based on size of input\n\-
266 K/N output Kth of N to stdout\n\-
267 l/N split into N files without splitting lines/records\n\-
268 l/K/N output Kth of N to stdout without splitting lines/records\n\-
269 r/N like 'l' but use round robin distribution\n\-
270 r/K/N likewise but only output Kth of N to stdout\n\-
271"), stdout);-
272 emit_ancillary_info (PROGRAM_NAME);-
273 }
executed 14 times by 1 test: end of block
Executed by:
  • split
14
274 exit (status);
executed 28 times by 1 test: exit (status);
Executed by:
  • split
28
275}-
276-
277/* Return the number of bytes that can be read from FD with status ST.-
278 Store up to the first BUFSIZE bytes of the file's data into BUF,-
279 and advance the file position by the number of bytes read. On-
280 input error, set errno and return -1. */-
281-
282static off_t-
283input_file_size (int fd, struct stat const *st, char *buf, size_t bufsize)-
284{-
285 off_t cur = lseek (fd, 0, SEEK_CUR);-
286 if (cur < 0)
cur < 0Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • split
FALSEevaluated 120 times by 1 test
Evaluated by:
  • split
1-120
287 {-
288 if (errno == ESPIPE)
(*__errno_location ()) == 29Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • split
FALSEnever evaluated
0-1
289 errno = 0; /* Suppress confusing seek error. */
executed 1 time by 1 test: (*__errno_location ()) = 0;
Executed by:
  • split
1
290 return -1;
executed 1 time by 1 test: return -1;
Executed by:
  • split
1
291 }-
292-
293 off_t size = 0;-
294 do-
295 {-
296 size_t n_read = safe_read (fd, buf + size, bufsize - size);-
297 if (n_read == 0)
n_read == 0Description
TRUEevaluated 43 times by 1 test
Evaluated by:
  • split
FALSEevaluated 114 times by 1 test
Evaluated by:
  • split
43-114
298 return size;
executed 43 times by 1 test: return size;
Executed by:
  • split
43
299 if (n_read == SAFE_READ_ERROR)
n_read == ((size_t) -1)Description
TRUEnever evaluated
FALSEevaluated 114 times by 1 test
Evaluated by:
  • split
0-114
300 return -1;
never executed: return -1;
0
301 size += n_read;-
302 }
executed 114 times by 1 test: end of block
Executed by:
  • split
114
303 while (size < bufsize);
size < bufsizeDescription
TRUEevaluated 37 times by 1 test
Evaluated by:
  • split
FALSEevaluated 77 times by 1 test
Evaluated by:
  • split
37-77
304-
305 /* Note we check st_size _after_ the read() above-
306 because /proc files on GNU/Linux are seekable-
307 but have st_size == 0. */-
308 if (st->st_size == 0)
st->st_size == 0Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • split
FALSEevaluated 75 times by 1 test
Evaluated by:
  • split
2-75
309 {-
310 /* We've filled the buffer, from a seekable file,-
311 which has an st_size==0, E.g., /dev/zero on GNU/Linux.-
312 Assume there is no limit to file size. */-
313 errno = EOVERFLOW;-
314 return -1;
executed 2 times by 1 test: return -1;
Executed by:
  • split
2
315 }-
316-
317 cur += size;-
318 off_t end;-
319 if (usable_st_size (st) && cur <= st->st_size)
usable_st_size (st)Description
TRUEevaluated 75 times by 1 test
Evaluated by:
  • split
FALSEnever evaluated
cur <= st->st_sizeDescription
TRUEevaluated 75 times by 1 test
Evaluated by:
  • split
FALSEnever evaluated
0-75
320 end = st->st_size;
executed 75 times by 1 test: end = st->st_size;
Executed by:
  • split
75
321 else-
322 {-
323 end = lseek (fd, 0, SEEK_END);-
324 if (end < 0)
end < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
325 return -1;
never executed: return -1;
0
326 if (end != cur)
end != curDescription
TRUEnever evaluated
FALSEnever evaluated
0
327 {-
328 if (lseek (fd, cur, SEEK_SET) < 0)
lseek (fd, cur, 0 ) < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
329 return -1;
never executed: return -1;
0
330 if (end < cur)
end < curDescription
TRUEnever evaluated
FALSEnever evaluated
0
331 end = cur;
never executed: end = cur;
0
332 }
never executed: end of block
0
333 }
never executed: end of block
0
334-
335 size += end - cur;-
336 if (size == OFF_T_MAX)
size == ((off_... 1) * 2 + 1)))Description
TRUEnever evaluated
FALSEevaluated 75 times by 1 test
Evaluated by:
  • split
0-75
337 {-
338 /* E.g., /dev/zero on GNU/Hurd. */-
339 errno = EOVERFLOW;-
340 return -1;
never executed: return -1;
0
341 }-
342-
343 return size;
executed 75 times by 1 test: return size;
Executed by:
  • split
75
344}-
345-
346/* Compute the next sequential output file name and store it into the-
347 string 'outfile'. */-
348-
349static void-
350next_file_name (void)-
351{-
352 /* Index in suffix_alphabet of each character in the suffix. */-
353 static size_t *sufindex;-
354 static size_t outbase_length;-
355 static size_t outfile_length;-
356 static size_t addsuf_length;-
357-
358 if (! outfile)
! outfileDescription
TRUEevaluated 342 times by 1 test
Evaluated by:
  • split
FALSEevaluated 2115 times by 1 test
Evaluated by:
  • split
342-2115
359 {-
360 bool widen;-
361-
362new_name:
code before this statement executed 342 times by 1 test: new_name:
Executed by:
  • split
342
363 widen = !! outfile_length;-
364-
365 if (! widen)
! widenDescription
TRUEevaluated 342 times by 1 test
Evaluated by:
  • split
FALSEevaluated 6 times by 1 test
Evaluated by:
  • split
6-342
366 {-
367 /* Allocate and initialize the first file name. */-
368-
369 outbase_length = strlen (outbase);-
370 addsuf_length = additional_suffix ? strlen (additional_suffix) : 0;
additional_suffixDescription
TRUEevaluated 7 times by 1 test
Evaluated by:
  • split
FALSEevaluated 335 times by 1 test
Evaluated by:
  • split
7-335
371 outfile_length = outbase_length + suffix_length + addsuf_length;-
372 }
executed 342 times by 1 test: end of block
Executed by:
  • split
342
373 else-
374 {-
375 /* Reallocate and initialize a new wider file name.-
376 We do this by subsuming the unchanging part of-
377 the generated suffix into the prefix (base), and-
378 reinitializing the now one longer suffix. */-
379-
380 outfile_length += 2;-
381 suffix_length++;-
382 }
executed 6 times by 1 test: end of block
Executed by:
  • split
6
383-
384 if (outfile_length + 1 < outbase_length)
outfile_length...outbase_lengthDescription
TRUEnever evaluated
FALSEevaluated 348 times by 1 test
Evaluated by:
  • split
0-348
385 xalloc_die ();
never executed: xalloc_die ();
0
386 outfile = xrealloc (outfile, outfile_length + 1);-
387-
388 if (! widen)
! widenDescription
TRUEevaluated 342 times by 1 test
Evaluated by:
  • split
FALSEevaluated 6 times by 1 test
Evaluated by:
  • split
6-342
389 memcpy (outfile, outbase, outbase_length);
executed 342 times by 1 test: memcpy (outfile, outbase, outbase_length);
Executed by:
  • split
342
390 else-
391 {-
392 /* Append the last alphabet character to the file name prefix. */-
393 outfile[outbase_length] = suffix_alphabet[sufindex[0]];-
394 outbase_length++;-
395 }
executed 6 times by 1 test: end of block
Executed by:
  • split
6
396-
397 outfile_mid = outfile + outbase_length;-
398 memset (outfile_mid, suffix_alphabet[0], suffix_length);-
399 if (additional_suffix)
additional_suffixDescription
TRUEevaluated 13 times by 1 test
Evaluated by:
  • split
FALSEevaluated 335 times by 1 test
Evaluated by:
  • split
13-335
400 memcpy (outfile_mid + suffix_length, additional_suffix, addsuf_length);
executed 13 times by 1 test: memcpy (outfile_mid + suffix_length, additional_suffix, addsuf_length);
Executed by:
  • split
13
401 outfile[outfile_length] = 0;-
402-
403 free (sufindex);-
404 sufindex = xcalloc (suffix_length, sizeof *sufindex);-
405-
406 if (numeric_suffix_start)
numeric_suffix_startDescription
TRUEevaluated 4 times by 1 test
Evaluated by:
  • split
FALSEevaluated 344 times by 1 test
Evaluated by:
  • split
4-344
407 {-
408 assert (! widen);-
409-
410 /* Update the output file name. */-
411 size_t i = strlen (numeric_suffix_start);-
412 memcpy (outfile_mid + suffix_length - i, numeric_suffix_start, i);-
413-
414 /* Update the suffix index. */-
415 size_t *sufindex_end = sufindex + suffix_length;-
416 while (i-- != 0)
i-- != 0Description
TRUEevaluated 5 times by 1 test
Evaluated by:
  • split
FALSEevaluated 4 times by 1 test
Evaluated by:
  • split
4-5
417 *--sufindex_end = numeric_suffix_start[i] - '0';
executed 5 times by 1 test: *--sufindex_end = numeric_suffix_start[i] - '0';
Executed by:
  • split
5
418 }
executed 4 times by 1 test: end of block
Executed by:
  • split
4
419-
420#if ! _POSIX_NO_TRUNC && HAVE_PATHCONF && defined _PC_NAME_MAX-
421 /* POSIX requires that if the output file name is too long for-
422 its directory, 'split' must fail without creating any files.-
423 This must be checked for explicitly on operating systems that-
424 silently truncate file names. */-
425 {-
426 char *dir = dir_name (outfile);-
427 long name_max = pathconf (dir, _PC_NAME_MAX);-
428 if (0 <= name_max && name_max < base_len (last_component (outfile)))-
429 die (EXIT_FAILURE, ENAMETOOLONG, "%s", quotef (outfile));-
430 free (dir);-
431 }-
432#endif-
433 }
executed 348 times by 1 test: end of block
Executed by:
  • split
348
434 else-
435 {-
436 /* Increment the suffix in place, if possible. */-
437-
438 size_t i = suffix_length;-
439 while (i-- != 0)
i-- != 0Description
TRUEevaluated 2189 times by 1 test
Evaluated by:
  • split
FALSEevaluated 2 times by 1 test
Evaluated by:
  • split
2-2189
440 {-
441 sufindex[i]++;-
442 if (suffix_auto && i == 0 && ! suffix_alphabet[sufindex[0] + 1])
suffix_autoDescription
TRUEevaluated 1270 times by 1 test
Evaluated by:
  • split
FALSEevaluated 919 times by 1 test
Evaluated by:
  • split
i == 0Description
TRUEevaluated 58 times by 1 test
Evaluated by:
  • split
FALSEevaluated 1212 times by 1 test
Evaluated by:
  • split
! suffix_alpha...findex[0] + 1]Description
TRUEevaluated 6 times by 1 test
Evaluated by:
  • split
FALSEevaluated 52 times by 1 test
Evaluated by:
  • split
6-1270
443 goto new_name;
executed 6 times by 1 test: goto new_name;
Executed by:
  • split
6
444 outfile_mid[i] = suffix_alphabet[sufindex[i]];-
445 if (outfile_mid[i])
outfile_mid[i]Description
TRUEevaluated 2107 times by 1 test
Evaluated by:
  • split
FALSEevaluated 76 times by 1 test
Evaluated by:
  • split
76-2107
446 return;
executed 2107 times by 1 test: return;
Executed by:
  • split
2107
447 sufindex[i] = 0;-
448 outfile_mid[i] = suffix_alphabet[sufindex[i]];-
449 }
executed 76 times by 1 test: end of block
Executed by:
  • split
76
450 die (EXIT_FAILURE, 0, _("output file suffixes exhausted"));-
451 }
never executed: end of block
0
452}-
453-
454/* Create or truncate a file. */-
455-
456static int-
457create (const char *name)-
458{-
459 if (!filter_command)
!filter_commandDescription
TRUEevaluated 2316 times by 1 test
Evaluated by:
  • split
FALSEevaluated 130 times by 1 test
Evaluated by:
  • split
130-2316
460 {-
461 if (verbose)
verboseDescription
TRUEevaluated 27 times by 1 test
Evaluated by:
  • split
FALSEevaluated 2289 times by 1 test
Evaluated by:
  • split
27-2289
462 fprintf (stdout, _("creating file %s\n"), quoteaf (name));
executed 27 times by 1 test: fprintf ( stdout , dcgettext (((void *)0), "creating file %s\n" , 5) , quotearg_style (shell_escape_always_quoting_style, name));
Executed by:
  • split
27
463-
464 int fd = open (name, O_WRONLY | O_CREAT | O_BINARY, MODE_RW_UGO);-
465 if (fd < 0)
fd < 0Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • split
FALSEevaluated 2315 times by 1 test
Evaluated by:
  • split
1-2315
466 return fd;
executed 1 time by 1 test: return fd;
Executed by:
  • split
1
467 struct stat out_stat_buf;-
468 if (fstat (fd, &out_stat_buf) != 0)
fstat (fd, &out_stat_buf) != 0Description
TRUEnever evaluated
FALSEevaluated 2315 times by 1 test
Evaluated by:
  • split
0-2315
469 die (EXIT_FAILURE, errno, _("failed to stat %s"), quoteaf (name));
never executed: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, (*__errno_location ()), dcgettext (((void *)0), \"failed to stat %s\", 5), quotearg_style (shell_escape_always_quoting_style, name)), assume (false))" ")"); int _gl_dummy; })) ...ame)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , (*__errno_location ()) , dcgettext (((void *)0), "failed to stat %s" , 5) , quotearg_style (shell_escape_always_quoting_style, name)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))));
0
470 if (SAME_INODE (in_stat_buf, out_stat_buf))
(in_stat_buf)....at_buf).st_inoDescription
TRUEevaluated 4 times by 1 test
Evaluated by:
  • split
FALSEevaluated 2311 times by 1 test
Evaluated by:
  • split
(in_stat_buf)....at_buf).st_devDescription
TRUEevaluated 4 times by 1 test
Evaluated by:
  • split
FALSEnever evaluated
0-2311
471 die (EXIT_FAILURE, 0, _("%s would overwrite input; aborting"),
executed 4 times by 1 test: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, 0, dcgettext (((void *)0), \"%s would overwrite input; aborting\", 5), quotearg_style (shell_escape_always_quoting_style, name)), assume (false))" ")"); int _gl_dummy; })) ? ((...e, name)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , 0, dcgettext (((void *)0), "%s would overwrite input; aborting" , 5) , quotearg_style (shell_escape_always_quoting_style, name)), (( 0 ) ? (void) 0 : __builtin_unreachable ())))) ;
Executed by:
  • split
4
472 quoteaf (name));
executed 4 times by 1 test: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, 0, dcgettext (((void *)0), \"%s would overwrite input; aborting\", 5), quotearg_style (shell_escape_always_quoting_style, name)), assume (false))" ")"); int _gl_dummy; })) ? ((...e, name)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , 0, dcgettext (((void *)0), "%s would overwrite input; aborting" , 5) , quotearg_style (shell_escape_always_quoting_style, name)), (( 0 ) ? (void) 0 : __builtin_unreachable ())))) ;
Executed by:
  • split
4
473 if (ftruncate (fd, 0) != 0)
ftruncate (fd, 0) != 0Description
TRUEnever evaluated
FALSEevaluated 2311 times by 1 test
Evaluated by:
  • split
0-2311
474 die (EXIT_FAILURE, errno, _("%s: error truncating"), quotef (name));
never executed: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, (*__errno_location ()), dcgettext (((void *)0), \"%s: error truncating\", 5), quotearg_n_style_colon (0, shell_escape_quoting_style, name)), assume (false))" ")"); int _gl_dumm...(( 0 ) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , (*__errno_location ()) , dcgettext (((void *)0), "%s: error truncating" , 5) , quotearg_n_style_colon (0, shell_escape_quoting_style, name)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))));
0
475-
476 return fd;
executed 2311 times by 1 test: return fd;
Executed by:
  • split
2311
477 }-
478 else-
479 {-
480 int fd_pair[2];-
481 pid_t child_pid;-
482 char const *shell_prog = getenv ("SHELL");-
483 if (shell_prog == NULL)
shell_prog == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 130 times by 1 test
Evaluated by:
  • split
0-130
484 shell_prog = "/bin/sh";
never executed: shell_prog = "/bin/sh";
0
485 if (setenv ("FILE", name, 1) != 0)
setenv ("FILE", name, 1) != 0Description
TRUEnever evaluated
FALSEevaluated 130 times by 1 test
Evaluated by:
  • split
0-130
486 die (EXIT_FAILURE, errno,
never executed: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, (*__errno_location ()), dcgettext (((void *)0), \"failed to set FILE environment variable\", 5)), assume (false))" ")"); int _gl_dummy; })) ? ((error ( 1 , (*__errno_location (...to set FILE environment variable" , 5) ), (( 0 ) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , (*__errno_location ()) , dcgettext (((void *)0), "failed to set FILE environment variable" , 5) ), (( 0 ) ? (void) 0 : __builtin_unreachable ())))) ;
0
487 _("failed to set FILE environment variable"));
never executed: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, (*__errno_location ()), dcgettext (((void *)0), \"failed to set FILE environment variable\", 5)), assume (false))" ")"); int _gl_dummy; })) ? ((error ( 1 , (*__errno_location (...to set FILE environment variable" , 5) ), (( 0 ) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , (*__errno_location ()) , dcgettext (((void *)0), "failed to set FILE environment variable" , 5) ), (( 0 ) ? (void) 0 : __builtin_unreachable ())))) ;
0
488 if (verbose)
verboseDescription
TRUEnever evaluated
FALSEevaluated 130 times by 1 test
Evaluated by:
  • split
0-130
489 fprintf (stdout, _("executing with FILE=%s\n"), quotef (name));
never executed: fprintf ( stdout , dcgettext (((void *)0), "executing with FILE=%s\n" , 5) , quotearg_n_style_colon (0, shell_escape_quoting_style, name));
0
490 if (pipe (fd_pair) != 0)
pipe (fd_pair) != 0Description
TRUEnever evaluated
FALSEevaluated 130 times by 1 test
Evaluated by:
  • split
0-130
491 die (EXIT_FAILURE, errno, _("failed to create pipe"));
never executed: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, (*__errno_location ()), dcgettext (((void *)0), \"failed to create pipe\", 5)), assume (false))" ")"); int _gl_dummy; })) ? ((error ( 1 , (*__errno_location ()) , dcgettext (((void *)0), "failed to create pipe" , 5) ), (( 0 ) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , (*__errno_location ()) , dcgettext (((void *)0), "failed to create pipe" , 5) ), (( 0 ) ? (void) 0 : __builtin_unreachable ()))));
0
492 child_pid = fork ();-
493 if (child_pid == 0)
child_pid == 0Description
TRUEnever evaluated
FALSEevaluated 130 times by 1 test
Evaluated by:
  • split
0-130
494 {-
495 /* This is the child process. If an error occurs here, the-
496 parent will eventually learn about it after doing a wait,-
497 at which time it will emit its own error message. */-
498 int j;-
499 /* We have to close any pipes that were opened during an-
500 earlier call, otherwise this process will be holding a-
501 write-pipe that will prevent the earlier process from-
502 reading an EOF on the corresponding read-pipe. */-
503 for (j = 0; j < n_open_pipes; ++j)
j < n_open_pipesDescription
TRUEnever evaluated
FALSEnever evaluated
0
504 if (close (open_pipes[j]) != 0)
close (open_pipes[j]) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
505 die (EXIT_FAILURE, errno, _("closing prior pipe"));
never executed: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, (*__errno_location ()), dcgettext (((void *)0), \"closing prior pipe\", 5)), assume (false))" ")"); int _gl_dummy; })) ? ((error ( 1 , (*__errno_location ()) , dcgettext (((void *)0), "closing prior pipe" , 5) ), (( 0 ) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , (*__errno_location ()) , dcgettext (((void *)0), "closing prior pipe" , 5) ), (( 0 ) ? (void) 0 : __builtin_unreachable ()))));
0
506 if (close (fd_pair[1]))
close (fd_pair[1])Description
TRUEnever evaluated
FALSEnever evaluated
0
507 die (EXIT_FAILURE, errno, _("closing output pipe"));
never executed: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, (*__errno_location ()), dcgettext (((void *)0), \"closing output pipe\", 5)), assume (false))" ")"); int _gl_dummy; })) ? ((error ( 1 , (*__errno_location ()) , dcgettext (((void *)0), "closing output pipe" , 5) ), (( 0 ) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , (*__errno_location ()) , dcgettext (((void *)0), "closing output pipe" , 5) ), (( 0 ) ? (void) 0 : __builtin_unreachable ()))));
0
508 if (fd_pair[0] != STDIN_FILENO)
fd_pair[0] != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
509 {-
510 if (dup2 (fd_pair[0], STDIN_FILENO) != STDIN_FILENO)
dup2 (fd_pair[0], 0 ) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
511 die (EXIT_FAILURE, errno, _("moving input pipe"));
never executed: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, (*__errno_location ()), dcgettext (((void *)0), \"moving input pipe\", 5)), assume (false))" ")"); int _gl_dummy; })) ? ((error ( 1 , (*__errno_location ()) , dcgettext (((void *)0), "moving input pipe" , 5) ), (( 0 ) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , (*__errno_location ()) , dcgettext (((void *)0), "moving input pipe" , 5) ), (( 0 ) ? (void) 0 : __builtin_unreachable ()))));
0
512 if (close (fd_pair[0]) != 0)
close (fd_pair[0]) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
513 die (EXIT_FAILURE, errno, _("closing input pipe"));
never executed: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, (*__errno_location ()), dcgettext (((void *)0), \"closing input pipe\", 5)), assume (false))" ")"); int _gl_dummy; })) ? ((error ( 1 , (*__errno_location ()) , dcgettext (((void *)0), "closing input pipe" , 5) ), (( 0 ) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , (*__errno_location ()) , dcgettext (((void *)0), "closing input pipe" , 5) ), (( 0 ) ? (void) 0 : __builtin_unreachable ()))));
0
514 }
never executed: end of block
0
515 sigprocmask (SIG_SETMASK, &oldblocked, NULL);-
516 execl (shell_prog, last_component (shell_prog), "-c",-
517 filter_command, (char *) NULL);-
518 die (EXIT_FAILURE, errno, _("failed to run command: \"%s -c %s\""),-
519 shell_prog, filter_command);-
520 }
never executed: end of block
0
521 if (child_pid == -1)
child_pid == -1Description
TRUEnever evaluated
FALSEevaluated 130 times by 1 test
Evaluated by:
  • split
0-130
522 die (EXIT_FAILURE, errno, _("fork system call failed"));
never executed: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, (*__errno_location ()), dcgettext (((void *)0), \"fork system call failed\", 5)), assume (false))" ")"); int _gl_dummy; })) ? ((error ( 1 , (*__errno_location ()) , dcgettext (((void *)0), "fork system call failed" , 5) ), (( 0 ) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , (*__errno_location ()) , dcgettext (((void *)0), "fork system call failed" , 5) ), (( 0 ) ? (void) 0 : __builtin_unreachable ()))));
0
523 if (close (fd_pair[0]) != 0)
close (fd_pair[0]) != 0Description
TRUEnever evaluated
FALSEevaluated 130 times by 1 test
Evaluated by:
  • split
0-130
524 die (EXIT_FAILURE, errno, _("failed to close input pipe"));
never executed: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, (*__errno_location ()), dcgettext (((void *)0), \"failed to close input pipe\", 5)), assume (false))" ")"); int _gl_dummy; })) ? ((error ( 1 , (*__errno_location ()) , dcgettext (((void *)0), "failed to close input pipe" , 5) ), (( 0 ) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , (*__errno_location ()) , dcgettext (((void *)0), "failed to close input pipe" , 5) ), (( 0 ) ? (void) 0 : __builtin_unreachable ()))));
0
525 filter_pid = child_pid;-
526 if (n_open_pipes == open_pipes_alloc)
n_open_pipes =...en_pipes_allocDescription
TRUEevaluated 7 times by 1 test
Evaluated by:
  • split
FALSEevaluated 123 times by 1 test
Evaluated by:
  • split
7-123
527 open_pipes = x2nrealloc (open_pipes, &open_pipes_alloc,
executed 7 times by 1 test: open_pipes = x2nrealloc (open_pipes, &open_pipes_alloc, sizeof *open_pipes);
Executed by:
  • split
7
528 sizeof *open_pipes);
executed 7 times by 1 test: open_pipes = x2nrealloc (open_pipes, &open_pipes_alloc, sizeof *open_pipes);
Executed by:
  • split
7
529 open_pipes[n_open_pipes++] = fd_pair[1];-
530 return fd_pair[1];
executed 130 times by 1 test: return fd_pair[1];
Executed by:
  • split
130
531 }-
532}-
533-
534/* Close the output file, and do any associated cleanup.-
535 If FP and FD are both specified, they refer to the same open file;-
536 in this case FP is closed, but FD is still used in cleanup. */-
537static void-
538closeout (FILE *fp, int fd, pid_t pid, char const *name)-
539{-
540 if (fp != NULL && fclose (fp) != 0 && ! ignorable (errno))
fp != ((void *)0)Description
TRUEevaluated 138 times by 1 test
Evaluated by:
  • split
FALSEevaluated 2679 times by 1 test
Evaluated by:
  • split
rpl_fclose (fp) != 0Description
TRUEnever evaluated
FALSEevaluated 138 times by 1 test
Evaluated by:
  • split
! ignorable ( ...location ()) )Description
TRUEnever evaluated
FALSEnever evaluated
0-2679
541 die (EXIT_FAILURE, errno, "%s", quotef (name));
never executed: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, (*__errno_location ()), \"%s\", quotearg_n_style_colon (0, shell_escape_quoting_style, name)), assume (false))" ")"); int _gl_dummy; })) ? ((error ( 1 , (*__errno_location ()) ...e_colon (0, shell_escape_quoting_style, name)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , (*__errno_location ()) , "%s", quotearg_n_style_colon (0, shell_escape_quoting_style, name)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))));
0
542 if (fd >= 0)
fd >= 0Description
TRUEevaluated 2410 times by 1 test
Evaluated by:
  • split
FALSEevaluated 407 times by 1 test
Evaluated by:
  • split
407-2410
543 {-
544 if (fp == NULL && close (fd) < 0)
fp == ((void *)0)Description
TRUEevaluated 2272 times by 1 test
Evaluated by:
  • split
FALSEevaluated 138 times by 1 test
Evaluated by:
  • split
close (fd) < 0Description
TRUEnever evaluated
FALSEevaluated 2272 times by 1 test
Evaluated by:
  • split
0-2272
545 die (EXIT_FAILURE, errno, "%s", quotef (name));
never executed: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, (*__errno_location ()), \"%s\", quotearg_n_style_colon (0, shell_escape_quoting_style, name)), assume (false))" ")"); int _gl_dummy; })) ? ((error ( 1 , (*__errno_location ()) ...e_colon (0, shell_escape_quoting_style, name)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , (*__errno_location ()) , "%s", quotearg_n_style_colon (0, shell_escape_quoting_style, name)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))));
0
546 int j;-
547 for (j = 0; j < n_open_pipes; ++j)
j < n_open_pipesDescription
TRUEevaluated 131 times by 1 test
Evaluated by:
  • split
FALSEevaluated 2281 times by 1 test
Evaluated by:
  • split
131-2281
548 {-
549 if (open_pipes[j] == fd)
open_pipes[j] == fdDescription
TRUEevaluated 129 times by 1 test
Evaluated by:
  • split
FALSEevaluated 2 times by 1 test
Evaluated by:
  • split
2-129
550 {-
551 open_pipes[j] = open_pipes[--n_open_pipes];-
552 break;
executed 129 times by 1 test: break;
Executed by:
  • split
129
553 }-
554 }
executed 2 times by 1 test: end of block
Executed by:
  • split
2
555 }
executed 2410 times by 1 test: end of block
Executed by:
  • split
2410
556 if (pid > 0)
pid > 0Description
TRUEevaluated 129 times by 1 test
Evaluated by:
  • split
FALSEevaluated 2688 times by 1 test
Evaluated by:
  • split
129-2688
557 {-
558 int wstatus = 0;-
559 if (waitpid (pid, &wstatus, 0) == -1 && errno != ECHILD)
waitpid (pid, ...atus, 0) == -1Description
TRUEnever evaluated
FALSEevaluated 128 times by 1 test
Evaluated by:
  • split
(*__errno_location ()) != 10Description
TRUEnever evaluated
FALSEnever evaluated
0-128
560 die (EXIT_FAILURE, errno, _("waiting for child process"));
never executed: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, (*__errno_location ()), dcgettext (((void *)0), \"waiting for child process\", 5)), assume (false))" ")"); int _gl_dummy; })) ? ((error ( 1 , (*__errno_location ()) , dcgettext (((void *)0), "waiting for child process" , 5) ), (( 0 ) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , (*__errno_location ()) , dcgettext (((void *)0), "waiting for child process" , 5) ), (( 0 ) ? (void) 0 : __builtin_unreachable ()))));
0
561 if (WIFSIGNALED (wstatus))
(((signed char... 1) >> 1) > 0)Description
TRUEnever evaluated
FALSEevaluated 128 times by 1 test
Evaluated by:
  • split
0-128
562 {-
563 int sig = WTERMSIG (wstatus);-
564 if (sig != SIGPIPE)
sig != 13Description
TRUEnever evaluated
FALSEnever evaluated
0
565 {-
566 char signame[MAX (SIG2STR_MAX, INT_BUFSIZE_BOUND (int))];-
567 if (sig2str (sig, signame) != 0)
sig2str (sig, signame) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
568 sprintf (signame, "%d", sig);
never executed: sprintf (signame, "%d", sig);
0
569 error (sig + 128, 0,-
570 _("with FILE=%s, signal %s from command: %s"),-
571 quotef (name), signame, filter_command);-
572 }
never executed: end of block
0
573 }
never executed: end of block
0
574 else if (WIFEXITED (wstatus))
((( wstatus ) & 0x7f) == 0)Description
TRUEevaluated 128 times by 1 test
Evaluated by:
  • split
FALSEnever evaluated
0-128
575 {-
576 int ex = WEXITSTATUS (wstatus);-
577 if (ex != 0)
ex != 0Description
TRUEnever evaluated
FALSEevaluated 128 times by 1 test
Evaluated by:
  • split
0-128
578 error (ex, 0, _("with FILE=%s, exit %d from command: %s"),
never executed: error (ex, 0, dcgettext (((void *)0), "with FILE=%s, exit %d from command: %s" , 5) , quotearg_n_style_colon (0, shell_escape_quoting_style, name), ex, filter_command);
0
579 quotef (name), ex, filter_command);
never executed: error (ex, 0, dcgettext (((void *)0), "with FILE=%s, exit %d from command: %s" , 5) , quotearg_n_style_colon (0, shell_escape_quoting_style, name), ex, filter_command);
0
580 }
executed 128 times by 1 test: end of block
Executed by:
  • split
128
581 else-
582 {-
583 /* shouldn't happen. */-
584 die (EXIT_FAILURE, 0,-
585 _("unknown status from command (0x%X)"), wstatus + 0u);-
586 }
never executed: end of block
0
587 }-
588}
executed 2816 times by 1 test: end of block
Executed by:
  • split
2816
589-
590/* Write BYTES bytes at BP to an output file.-
591 If NEW_FILE_FLAG is true, open the next output file.-
592 Otherwise add to the same output file already in use.-
593 Return true if successful. */-
594-
595static bool-
596cwrite (bool new_file_flag, const char *bp, size_t bytes)-
597{-
598 if (new_file_flag)
new_file_flagDescription
TRUEevaluated 2370 times by 1 test
Evaluated by:
  • split
FALSEevaluated 1659 times by 1 test
Evaluated by:
  • split
1659-2370
599 {-
600 if (!bp && bytes == 0 && elide_empty_files)
!bpDescription
TRUEevaluated 171 times by 1 test
Evaluated by:
  • split
FALSEevaluated 2199 times by 1 test
Evaluated by:
  • split
bytes == 0Description
TRUEevaluated 171 times by 1 test
Evaluated by:
  • split
FALSEnever evaluated
elide_empty_filesDescription
TRUEevaluated 90 times by 1 test
Evaluated by:
  • split
FALSEevaluated 81 times by 1 test
Evaluated by:
  • split
0-2199
601 return true;
executed 90 times by 1 test: return 1 ;
Executed by:
  • split
90
602 closeout (NULL, output_desc, filter_pid, outfile);-
603 next_file_name ();-
604 output_desc = create (outfile);-
605 if (output_desc < 0)
output_desc < 0Description
TRUEnever evaluated
FALSEevaluated 2273 times by 1 test
Evaluated by:
  • split
0-2273
606 die (EXIT_FAILURE, errno, "%s", quotef (outfile));
never executed: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, (*__errno_location ()), \"%s\", quotearg_n_style_colon (0, shell_escape_quoting_style, outfile)), assume (false))" ")"); int _gl_dummy; })) ? ((error ( 1 , (*__errno_location (...n (0, shell_escape_quoting_style, outfile)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , (*__errno_location ()) , "%s", quotearg_n_style_colon (0, shell_escape_quoting_style, outfile)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))));
0
607 }
executed 2273 times by 1 test: end of block
Executed by:
  • split
2273
608-
609 if (full_write (output_desc, bp, bytes) == bytes)
full_write (ou...ytes) == bytesDescription
TRUEevaluated 3876 times by 1 test
Evaluated by:
  • split
FALSEevaluated 55 times by 1 test
Evaluated by:
  • split
55-3876
610 return true;
executed 3876 times by 1 test: return 1 ;
Executed by:
  • split
3876
611 else-
612 {-
613 if (! ignorable (errno))
! ignorable ( ...location ()) )Description
TRUEnever evaluated
FALSEevaluated 55 times by 1 test
Evaluated by:
  • split
0-55
614 die (EXIT_FAILURE, errno, "%s", quotef (outfile));
never executed: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, (*__errno_location ()), \"%s\", quotearg_n_style_colon (0, shell_escape_quoting_style, outfile)), assume (false))" ")"); int _gl_dummy; })) ? ((error ( 1 , (*__errno_location (...n (0, shell_escape_quoting_style, outfile)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , (*__errno_location ()) , "%s", quotearg_n_style_colon (0, shell_escape_quoting_style, outfile)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))));
0
615 return false;
executed 55 times by 1 test: return 0 ;
Executed by:
  • split
55
616 }-
617}-
618-
619/* Split into pieces of exactly N_BYTES bytes.-
620 Use buffer BUF, whose size is BUFSIZE.-
621 BUF contains the first INITIAL_READ input bytes. */-
622-
623static void-
624bytes_split (uintmax_t n_bytes, char *buf, size_t bufsize, size_t initial_read,-
625 uintmax_t max_files)-
626{-
627 size_t n_read;-
628 bool new_file_flag = true;-
629 bool filter_ok = true;-
630 uintmax_t to_write = n_bytes;-
631 uintmax_t opened = 0;-
632 bool eof;-
633-
634 do-
635 {-
636 if (initial_read != SIZE_MAX)
initial_read !...73709551615UL)Description
TRUEevaluated 6 times by 1 test
Evaluated by:
  • split
FALSEevaluated 2523 times by 1 test
Evaluated by:
  • split
6-2523
637 {-
638 n_read = initial_read;-
639 initial_read = SIZE_MAX;-
640 eof = n_read < bufsize;-
641 }
executed 6 times by 1 test: end of block
Executed by:
  • split
6
642 else-
643 {-
644 if (! filter_ok
! filter_okDescription
TRUEevaluated 2459 times by 1 test
Evaluated by:
  • split
FALSEevaluated 64 times by 1 test
Evaluated by:
  • split
64-2459
645 && lseek (STDIN_FILENO, to_write, SEEK_CUR) != -1)
lseek ( 0 , to...ite, 1 ) != -1Description
TRUEnever evaluated
FALSEevaluated 2459 times by 1 test
Evaluated by:
  • split
0-2459
646 {-
647 to_write = n_bytes;-
648 new_file_flag = true;-
649 }
never executed: end of block
0
650-
651 n_read = safe_read (STDIN_FILENO, buf, bufsize);-
652 if (n_read == SAFE_READ_ERROR)
n_read == ((size_t) -1)Description
TRUEnever evaluated
FALSEevaluated 2523 times by 1 test
Evaluated by:
  • split
0-2523
653 die (EXIT_FAILURE, errno, "%s", quotef (infile));
never executed: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, (*__errno_location ()), \"%s\", quotearg_n_style_colon (0, shell_escape_quoting_style, infile)), assume (false))" ")"); int _gl_dummy; })) ? ((error ( 1 , (*__errno_location ()...lon (0, shell_escape_quoting_style, infile)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , (*__errno_location ()) , "%s", quotearg_n_style_colon (0, shell_escape_quoting_style, infile)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))));
0
654 eof = n_read == 0;-
655 }
executed 2523 times by 1 test: end of block
Executed by:
  • split
2523
656 char *bp_out = buf;-
657 while (to_write <= n_read)
to_write <= n_readDescription
TRUEevaluated 739 times by 1 test
Evaluated by:
  • split
FALSEevaluated 2526 times by 1 test
Evaluated by:
  • split
739-2526
658 {-
659 if (filter_ok || new_file_flag)
filter_okDescription
TRUEevaluated 685 times by 1 test
Evaluated by:
  • split
FALSEevaluated 54 times by 1 test
Evaluated by:
  • split
new_file_flagDescription
TRUEnever evaluated
FALSEevaluated 54 times by 1 test
Evaluated by:
  • split
0-685
660 filter_ok = cwrite (new_file_flag, bp_out, to_write);
executed 685 times by 1 test: filter_ok = cwrite (new_file_flag, bp_out, to_write);
Executed by:
  • split
685
661 opened += new_file_flag;-
662 new_file_flag = !max_files || (opened < max_files);
!max_filesDescription
TRUEevaluated 728 times by 1 test
Evaluated by:
  • split
FALSEevaluated 8 times by 1 test
Evaluated by:
  • split
(opened < max_files)Description
TRUEevaluated 6 times by 1 test
Evaluated by:
  • split
FALSEevaluated 2 times by 1 test
Evaluated by:
  • split
2-728
663 if (! filter_ok && ! new_file_flag)
! filter_okDescription
TRUEevaluated 54 times by 1 test
Evaluated by:
  • split
FALSEevaluated 682 times by 1 test
Evaluated by:
  • split
! new_file_flagDescription
TRUEnever evaluated
FALSEevaluated 54 times by 1 test
Evaluated by:
  • split
0-682
664 {-
665 /* If filters no longer accepting input, stop reading. */-
666 n_read = 0;-
667 eof = true;-
668 break;
never executed: break;
0
669 }-
670 bp_out += to_write;-
671 n_read -= to_write;-
672 to_write = n_bytes;-
673 }
executed 736 times by 1 test: end of block
Executed by:
  • split
736
674 if (n_read != 0)
n_read != 0Description
TRUEevaluated 2504 times by 1 test
Evaluated by:
  • split
FALSEevaluated 22 times by 1 test
Evaluated by:
  • split
22-2504
675 {-
676 if (filter_ok || new_file_flag)
filter_okDescription
TRUEevaluated 46 times by 1 test
Evaluated by:
  • split
FALSEevaluated 2458 times by 1 test
Evaluated by:
  • split
new_file_flagDescription
TRUEevaluated 54 times by 1 test
Evaluated by:
  • split
FALSEevaluated 2404 times by 1 test
Evaluated by:
  • split
46-2458
677 filter_ok = cwrite (new_file_flag, bp_out, n_read);
executed 100 times by 1 test: filter_ok = cwrite (new_file_flag, bp_out, n_read);
Executed by:
  • split
100
678 opened += new_file_flag;-
679 new_file_flag = false;-
680 if (! filter_ok && opened == max_files)
! filter_okDescription
TRUEevaluated 2459 times by 1 test
Evaluated by:
  • split
FALSEevaluated 44 times by 1 test
Evaluated by:
  • split
opened == max_filesDescription
TRUEnever evaluated
FALSEevaluated 2459 times by 1 test
Evaluated by:
  • split
0-2459
681 {-
682 /* If filters no longer accepting input, stop reading. */-
683 break;
never executed: break;
0
684 }-
685 to_write -= n_read;-
686 }
executed 2503 times by 1 test: end of block
Executed by:
  • split
2503
687 }
executed 2525 times by 1 test: end of block
Executed by:
  • split
2525
688 while (! eof);
! eofDescription
TRUEevaluated 2509 times by 1 test
Evaluated by:
  • split
FALSEevaluated 16 times by 1 test
Evaluated by:
  • split
16-2509
689-
690 /* Ensure NUMBER files are created, which truncates-
691 any existing files or notifies any consumers on fifos.-
692 FIXME: Should we do this before EXIT_FAILURE? */-
693 while (opened++ < max_files)
opened++ < max_filesDescription
TRUEevaluated 31 times by 1 test
Evaluated by:
  • split
FALSEevaluated 16 times by 1 test
Evaluated by:
  • split
16-31
694 cwrite (true, NULL, 0);
executed 31 times by 1 test: cwrite ( 1 , ((void *)0) , 0);
Executed by:
  • split
31
695}
executed 16 times by 1 test: end of block
Executed by:
  • split
16
696-
697/* Split into pieces of exactly N_LINES lines.-
698 Use buffer BUF, whose size is BUFSIZE. */-
699-
700static void-
701lines_split (uintmax_t n_lines, char *buf, size_t bufsize)-
702{-
703 size_t n_read;-
704 char *bp, *bp_out, *eob;-
705 bool new_file_flag = true;-
706 uintmax_t n = 0;-
707-
708 do-
709 {-
710 n_read = safe_read (STDIN_FILENO, buf, bufsize);-
711 if (n_read == SAFE_READ_ERROR)
n_read == ((size_t) -1)Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • split
FALSEevaluated 33 times by 1 test
Evaluated by:
  • split
1-33
712 die (EXIT_FAILURE, errno, "%s", quotef (infile));
executed 1 time by 1 test: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, (*__errno_location ()), \"%s\", quotearg_n_style_colon (0, shell_escape_quoting_style, infile)), assume (false))" ")"); int _gl_dummy; })) ? ((error ( 1 , (*__errno_location ()...lon (0, shell_escape_quoting_style, infile)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , (*__errno_location ()) , "%s", quotearg_n_style_colon (0, shell_escape_quoting_style, infile)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))));
Executed by:
  • split
1
713 bp = bp_out = buf;-
714 eob = bp + n_read;-
715 *eob = eolchar;-
716 while (true)-
717 {-
718 bp = memchr (bp, eolchar, eob - bp + 1);-
719 if (bp == eob)
bp == eobDescription
TRUEevaluated 33 times by 1 test
Evaluated by:
  • split
FALSEevaluated 66 times by 1 test
Evaluated by:
  • split
33-66
720 {-
721 if (eob != bp_out) /* do not write 0 bytes! */
eob != bp_outDescription
TRUEevaluated 14 times by 1 test
Evaluated by:
  • split
FALSEevaluated 19 times by 1 test
Evaluated by:
  • split
14-19
722 {-
723 size_t len = eob - bp_out;-
724 cwrite (new_file_flag, bp_out, len);-
725 new_file_flag = false;-
726 }
executed 14 times by 1 test: end of block
Executed by:
  • split
14
727 break;
executed 33 times by 1 test: break;
Executed by:
  • split
33
728 }-
729-
730 ++bp;-
731 if (++n >= n_lines)
++n >= n_linesDescription
TRUEevaluated 26 times by 1 test
Evaluated by:
  • split
FALSEevaluated 40 times by 1 test
Evaluated by:
  • split
26-40
732 {-
733 cwrite (new_file_flag, bp_out, bp - bp_out);-
734 bp_out = bp;-
735 new_file_flag = true;-
736 n = 0;-
737 }
executed 26 times by 1 test: end of block
Executed by:
  • split
26
738 }
executed 66 times by 1 test: end of block
Executed by:
  • split
66
739 }
executed 33 times by 1 test: end of block
Executed by:
  • split
33
740 while (n_read);
n_readDescription
TRUEevaluated 14 times by 1 test
Evaluated by:
  • split
FALSEevaluated 19 times by 1 test
Evaluated by:
  • split
14-19
741}
executed 19 times by 1 test: end of block
Executed by:
  • split
19
742-
743/* Split into pieces that are as large as possible while still not more-
744 than N_BYTES bytes, and are split on line boundaries except-
745 where lines longer than N_BYTES bytes occur. */-
746-
747static void-
748line_bytes_split (uintmax_t n_bytes, char *buf, size_t bufsize)-
749{-
750 size_t n_read;-
751 uintmax_t n_out = 0; /* for each split. */-
752 size_t n_hold = 0;-
753 char *hold = NULL; /* for lines > bufsize. */-
754 size_t hold_size = 0;-
755 bool split_line = false; /* Whether a \n was output in a split. */-
756-
757 do-
758 {-
759 n_read = safe_read (STDIN_FILENO, buf, bufsize);-
760 if (n_read == SAFE_READ_ERROR)
n_read == ((size_t) -1)Description
TRUEnever evaluated
FALSEevaluated 970 times by 1 test
Evaluated by:
  • split
0-970
761 die (EXIT_FAILURE, errno, "%s", quotef (infile));
never executed: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, (*__errno_location ()), \"%s\", quotearg_n_style_colon (0, shell_escape_quoting_style, infile)), assume (false))" ")"); int _gl_dummy; })) ? ((error ( 1 , (*__errno_location ()...lon (0, shell_escape_quoting_style, infile)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , (*__errno_location ()) , "%s", quotearg_n_style_colon (0, shell_escape_quoting_style, infile)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))));
0
762 size_t n_left = n_read;-
763 char *sob = buf;-
764 while (n_left)
n_leftDescription
TRUEevaluated 1098 times by 1 test
Evaluated by:
  • split
FALSEevaluated 966 times by 1 test
Evaluated by:
  • split
966-1098
765 {-
766 size_t split_rest = 0;-
767 char *eoc = NULL;-
768 char *eol;-
769-
770 /* Determine End Of Chunk and/or End of Line,-
771 which are used below to select what to write or buffer. */-
772 if (n_bytes - n_out - n_hold <= n_left)
n_bytes - n_ou...hold <= n_leftDescription
TRUEevaluated 588 times by 1 test
Evaluated by:
  • split
FALSEevaluated 510 times by 1 test
Evaluated by:
  • split
510-588
773 {-
774 /* Have enough for split. */-
775 split_rest = n_bytes - n_out - n_hold;-
776 eoc = sob + split_rest - 1;-
777 eol = memrchr (sob, eolchar, split_rest);-
778 }
executed 588 times by 1 test: end of block
Executed by:
  • split
588
779 else-
780 eol = memrchr (sob, eolchar, n_left);
executed 510 times by 1 test: eol = memrchr (sob, eolchar, n_left);
Executed by:
  • split
510
781-
782 /* Output hold space if possible. */-
783 if (n_hold && !(!eol && n_out))
n_holdDescription
TRUEevaluated 165 times by 1 test
Evaluated by:
  • split
FALSEevaluated 933 times by 1 test
Evaluated by:
  • split
!eolDescription
TRUEevaluated 63 times by 1 test
Evaluated by:
  • split
FALSEevaluated 102 times by 1 test
Evaluated by:
  • split
n_outDescription
TRUEevaluated 39 times by 1 test
Evaluated by:
  • split
FALSEevaluated 24 times by 1 test
Evaluated by:
  • split
24-933
784 {-
785 cwrite (n_out == 0, hold, n_hold);-
786 n_out += n_hold;-
787 if (n_hold > bufsize)
n_hold > bufsizeDescription
TRUEevaluated 21 times by 1 test
Evaluated by:
  • split
FALSEevaluated 105 times by 1 test
Evaluated by:
  • split
21-105
788 hold = xrealloc (hold, bufsize);
executed 21 times by 1 test: hold = xrealloc (hold, bufsize);
Executed by:
  • split
21
789 n_hold = 0;-
790 hold_size = bufsize;-
791 }
executed 126 times by 1 test: end of block
Executed by:
  • split
126
792-
793 /* Output to eol if present. */-
794 if (eol)
eolDescription
TRUEevaluated 313 times by 1 test
Evaluated by:
  • split
FALSEevaluated 785 times by 1 test
Evaluated by:
  • split
313-785
795 {-
796 split_line = true;-
797 size_t n_write = eol - sob + 1;-
798 cwrite (n_out == 0, sob, n_write);-
799 n_out += n_write;-
800 n_left -= n_write;-
801 sob += n_write;-
802 if (eoc)
eocDescription
TRUEevaluated 172 times by 1 test
Evaluated by:
  • split
FALSEevaluated 137 times by 1 test
Evaluated by:
  • split
137-172
803 split_rest -= n_write;
executed 172 times by 1 test: split_rest -= n_write;
Executed by:
  • split
172
804 }
executed 309 times by 1 test: end of block
Executed by:
  • split
309
805-
806 /* Output to eoc or eob if possible. */-
807 if (n_left && !split_line)
n_leftDescription
TRUEevaluated 1010 times by 1 test
Evaluated by:
  • split
FALSEevaluated 84 times by 1 test
Evaluated by:
  • split
!split_lineDescription
TRUEevaluated 692 times by 1 test
Evaluated by:
  • split
FALSEevaluated 318 times by 1 test
Evaluated by:
  • split
84-1010
808 {-
809 size_t n_write = eoc ? split_rest : n_left;
eocDescription
TRUEevaluated 381 times by 1 test
Evaluated by:
  • split
FALSEevaluated 311 times by 1 test
Evaluated by:
  • split
311-381
810 cwrite (n_out == 0, sob, n_write);-
811 n_out += n_write;-
812 n_left -= n_write;-
813 sob += n_write;-
814 if (eoc)
eocDescription
TRUEevaluated 381 times by 1 test
Evaluated by:
  • split
FALSEevaluated 311 times by 1 test
Evaluated by:
  • split
311-381
815 split_rest -= n_write;
executed 381 times by 1 test: split_rest -= n_write;
Executed by:
  • split
381
816 }
executed 692 times by 1 test: end of block
Executed by:
  • split
692
817-
818 /* Update hold if needed. */-
819 if ((eoc && split_rest) || (!eoc && n_left))
eocDescription
TRUEevaluated 584 times by 1 test
Evaluated by:
  • split
FALSEevaluated 510 times by 1 test
Evaluated by:
  • split
split_restDescription
TRUEevaluated 110 times by 1 test
Evaluated by:
  • split
FALSEevaluated 474 times by 1 test
Evaluated by:
  • split
!eocDescription
TRUEevaluated 510 times by 1 test
Evaluated by:
  • split
FALSEevaluated 474 times by 1 test
Evaluated by:
  • split
n_leftDescription
TRUEevaluated 135 times by 1 test
Evaluated by:
  • split
FALSEevaluated 375 times by 1 test
Evaluated by:
  • split
110-584
820 {-
821 size_t n_buf = eoc ? split_rest : n_left;
eocDescription
TRUEevaluated 110 times by 1 test
Evaluated by:
  • split
FALSEevaluated 135 times by 1 test
Evaluated by:
  • split
110-135
822 if (hold_size - n_hold < n_buf)
hold_size - n_hold < n_bufDescription
TRUEevaluated 131 times by 1 test
Evaluated by:
  • split
FALSEevaluated 114 times by 1 test
Evaluated by:
  • split
114-131
823 {-
824 if (hold_size <= SIZE_MAX - bufsize)
hold_size <= (...5UL) - bufsizeDescription
TRUEevaluated 131 times by 1 test
Evaluated by:
  • split
FALSEnever evaluated
0-131
825 hold_size += bufsize;
executed 131 times by 1 test: hold_size += bufsize;
Executed by:
  • split
131
826 else-
827 xalloc_die ();
never executed: xalloc_die ();
0
828 hold = xrealloc (hold, hold_size);-
829 }
executed 131 times by 1 test: end of block
Executed by:
  • split
131
830 memcpy (hold + n_hold, sob, n_buf);-
831 n_hold += n_buf;-
832 n_left -= n_buf;-
833 sob += n_buf;-
834 }
executed 245 times by 1 test: end of block
Executed by:
  • split
245
835-
836 /* Reset for new split. */-
837 if (eoc)
eocDescription
TRUEevaluated 584 times by 1 test
Evaluated by:
  • split
FALSEevaluated 510 times by 1 test
Evaluated by:
  • split
510-584
838 {-
839 n_out = 0;-
840 split_line = false;-
841 }
executed 584 times by 1 test: end of block
Executed by:
  • split
584
842 }
executed 1094 times by 1 test: end of block
Executed by:
  • split
1094
843 }
executed 966 times by 1 test: end of block
Executed by:
  • split
966
844 while (n_read);
n_readDescription
TRUEevaluated 733 times by 1 test
Evaluated by:
  • split
FALSEevaluated 233 times by 1 test
Evaluated by:
  • split
233-733
845-
846 /* Handle no eol at end of file. */-
847 if (n_hold)
n_holdDescription
TRUEevaluated 80 times by 1 test
Evaluated by:
  • split
FALSEevaluated 153 times by 1 test
Evaluated by:
  • split
80-153
848 cwrite (n_out == 0, hold, n_hold);
executed 80 times by 1 test: cwrite (n_out == 0, hold, n_hold);
Executed by:
  • split
80
849-
850 free (hold);-
851}
executed 233 times by 1 test: end of block
Executed by:
  • split
233
852-
853/* -n l/[K/]N: Write lines to files of approximately file size / N.-
854 The file is partitioned into file size / N sized portions, with the-
855 last assigned any excess. If a line _starts_ within a partition-
856 it is written completely to the corresponding file. Since lines-
857 are not split even if they overlap a partition, the files written-
858 can be larger or smaller than the partition size, and even empty-
859 if a line is so long as to completely overlap the partition. */-
860-
861static void-
862lines_chunk_split (uintmax_t k, uintmax_t n, char *buf, size_t bufsize,-
863 size_t initial_read, off_t file_size)-
864{-
865 assert (n && k <= n && n <= file_size);-
866-
867 const off_t chunk_size = file_size / n;-
868 uintmax_t chunk_no = 1;-
869 off_t chunk_end = chunk_size - 1;-
870 off_t n_written = 0;-
871 bool new_file_flag = true;-
872 bool chunk_truncated = false;-
873-
874 if (k > 1)
k > 1Description
TRUEevaluated 34 times by 1 test
Evaluated by:
  • split
FALSEevaluated 68 times by 1 test
Evaluated by:
  • split
34-68
875 {-
876 /* Start reading 1 byte before kth chunk of file. */-
877 off_t start = (k - 1) * chunk_size - 1;-
878 if (start < initial_read)
start < initial_readDescription
TRUEevaluated 20 times by 1 test
Evaluated by:
  • split
FALSEevaluated 14 times by 1 test
Evaluated by:
  • split
14-20
879 {-
880 memmove (buf, buf + start, initial_read - start);-
881 initial_read -= start;-
882 }
executed 20 times by 1 test: end of block
Executed by:
  • split
20
883 else-
884 {-
885 if (lseek (STDIN_FILENO, start - initial_read, SEEK_CUR) < 0)
lseek ( 0 , st..._read, 1 ) < 0Description
TRUEnever evaluated
FALSEevaluated 14 times by 1 test
Evaluated by:
  • split
0-14
886 die (EXIT_FAILURE, errno, "%s", quotef (infile));
never executed: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, (*__errno_location ()), \"%s\", quotearg_n_style_colon (0, shell_escape_quoting_style, infile)), assume (false))" ")"); int _gl_dummy; })) ? ((error ( 1 , (*__errno_location ()...lon (0, shell_escape_quoting_style, infile)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , (*__errno_location ()) , "%s", quotearg_n_style_colon (0, shell_escape_quoting_style, infile)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))));
0
887 initial_read = SIZE_MAX;-
888 }
executed 14 times by 1 test: end of block
Executed by:
  • split
14
889 n_written = start;-
890 chunk_no = k - 1;-
891 chunk_end = chunk_no * chunk_size - 1;-
892 }
executed 34 times by 1 test: end of block
Executed by:
  • split
34
893-
894 while (n_written < file_size)
n_written < file_sizeDescription
TRUEevaluated 1588 times by 1 test
Evaluated by:
  • split
FALSEevaluated 67 times by 1 test
Evaluated by:
  • split
67-1588
895 {-
896 char *bp = buf, *eob;-
897 size_t n_read;-
898 if (initial_read != SIZE_MAX)
initial_read !...73709551615UL)Description
TRUEevaluated 88 times by 1 test
Evaluated by:
  • split
FALSEevaluated 1500 times by 1 test
Evaluated by:
  • split
88-1500
899 {-
900 n_read = initial_read;-
901 initial_read = SIZE_MAX;-
902 }
executed 88 times by 1 test: end of block
Executed by:
  • split
88
903 else-
904 {-
905 n_read = safe_read (STDIN_FILENO, buf, bufsize);-
906 if (n_read == SAFE_READ_ERROR)
n_read == ((size_t) -1)Description
TRUEnever evaluated
FALSEevaluated 1500 times by 1 test
Evaluated by:
  • split
0-1500
907 die (EXIT_FAILURE, errno, "%s", quotef (infile));
never executed: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, (*__errno_location ()), \"%s\", quotearg_n_style_colon (0, shell_escape_quoting_style, infile)), assume (false))" ")"); int _gl_dummy; })) ? ((error ( 1 , (*__errno_location ()...lon (0, shell_escape_quoting_style, infile)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , (*__errno_location ()) , "%s", quotearg_n_style_colon (0, shell_escape_quoting_style, infile)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))));
0
908 }
executed 1500 times by 1 test: end of block
Executed by:
  • split
1500
909 if (n_read == 0)
n_read == 0Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • split
FALSEevaluated 1586 times by 1 test
Evaluated by:
  • split
2-1586
910 break; /* eof. */
executed 2 times by 1 test: break;
Executed by:
  • split
2
911 n_read = MIN (n_read, file_size - n_written);
(( n_read )<( ...- n_written ))Description
TRUEevaluated 1506 times by 1 test
Evaluated by:
  • split
FALSEevaluated 80 times by 1 test
Evaluated by:
  • split
80-1506
912 chunk_truncated = false;-
913 eob = buf + n_read;-
914-
915 while (bp != eob)
bp != eobDescription
TRUEevaluated 1962 times by 1 test
Evaluated by:
  • split
FALSEevaluated 1553 times by 1 test
Evaluated by:
  • split
1553-1962
916 {-
917 size_t to_write;-
918 bool next = false;-
919-
920 /* Begin looking for '\n' at last byte of chunk. */-
921 off_t skip = MIN (n_read, MAX (0, chunk_end - n_written));
(( n_read )<((...n_written ))))Description
TRUEevaluated 691 times by 1 test
Evaluated by:
  • split
FALSEevaluated 1271 times by 1 test
Evaluated by:
  • split
(( 0 )>( chunk...- n_written ))Description
TRUEevaluated 413 times by 1 test
Evaluated by:
  • split
FALSEevaluated 858 times by 1 test
Evaluated by:
  • split
413-1271
922 char *bp_out = memchr (bp + skip, eolchar, n_read - skip);-
923 if (bp_out++)
bp_out++Description
TRUEevaluated 714 times by 1 test
Evaluated by:
  • split
FALSEevaluated 1248 times by 1 test
Evaluated by:
  • split
714-1248
924 next = true;
executed 714 times by 1 test: next = 1 ;
Executed by:
  • split
714
925 else-
926 bp_out = eob;
executed 1248 times by 1 test: bp_out = eob;
Executed by:
  • split
1248
927 to_write = bp_out - bp;-
928-
929 if (k == chunk_no)
k == chunk_noDescription
TRUEevaluated 91 times by 1 test
Evaluated by:
  • split
FALSEevaluated 1871 times by 1 test
Evaluated by:
  • split
91-1871
930 {-
931 /* We don't use the stdout buffer here since we're writing-
932 large chunks from an existing file, so it's more efficient-
933 to write out directly. */-
934 if (full_write (STDOUT_FILENO, bp, to_write) != to_write)
full_write ( 1...e) != to_writeDescription
TRUEnever evaluated
FALSEevaluated 91 times by 1 test
Evaluated by:
  • split
0-91
935 die (EXIT_FAILURE, errno, "%s", _("write error"));
never executed: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, (*__errno_location ()), \"%s\", dcgettext (((void *)0), \"write error\", 5)), assume (false))" ")"); int _gl_dummy; })) ? ((error ( 1 , (*__errno_location ()) , "%s", dcgettext (((void *)0), "write error" , 5) ), (( 0 ) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , (*__errno_location ()) , "%s", dcgettext (((void *)0), "write error" , 5) ), (( 0 ) ? (void) 0 : __builtin_unreachable ()))));
0
936 }
executed 91 times by 1 test: end of block
Executed by:
  • split
91
937 else if (! k)
! kDescription
TRUEevaluated 1822 times by 1 test
Evaluated by:
  • split
FALSEevaluated 49 times by 1 test
Evaluated by:
  • split
49-1822
938 cwrite (new_file_flag, bp, to_write);
executed 1822 times by 1 test: cwrite (new_file_flag, bp, to_write);
Executed by:
  • split
1822
939 n_written += to_write;-
940 bp += to_write;-
941 n_read -= to_write;-
942 new_file_flag = next;-
943-
944 /* A line could have been so long that it skipped-
945 entire chunks. So create empty files in that case. */-
946 while (next || chunk_end <= n_written - 1)
nextDescription
TRUEevaluated 841 times by 1 test
Evaluated by:
  • split
FALSEevaluated 1929 times by 1 test
Evaluated by:
  • split
chunk_end <= n_written - 1Description
TRUEevaluated 414 times by 1 test
Evaluated by:
  • split
FALSEevaluated 1515 times by 1 test
Evaluated by:
  • split
414-1929
947 {-
948 if (!next && bp == eob)
!nextDescription
TRUEevaluated 414 times by 1 test
Evaluated by:
  • split
FALSEevaluated 841 times by 1 test
Evaluated by:
  • split
bp == eobDescription
TRUEevaluated 414 times by 1 test
Evaluated by:
  • split
FALSEnever evaluated
0-841
949 {-
950 /* replenish buf, before going to next chunk. */-
951 chunk_truncated = true;-
952 break;
executed 414 times by 1 test: break;
Executed by:
  • split
414
953 }-
954 chunk_no++;-
955 if (k && chunk_no > k)
kDescription
TRUEevaluated 67 times by 1 test
Evaluated by:
  • split
FALSEevaluated 774 times by 1 test
Evaluated by:
  • split
chunk_no > kDescription
TRUEevaluated 33 times by 1 test
Evaluated by:
  • split
FALSEevaluated 34 times by 1 test
Evaluated by:
  • split
33-774
956 return;
executed 33 times by 1 test: return;
Executed by:
  • split
33
957 if (chunk_no == n)
chunk_no == nDescription
TRUEevaluated 68 times by 1 test
Evaluated by:
  • split
FALSEevaluated 740 times by 1 test
Evaluated by:
  • split
68-740
958 chunk_end = file_size - 1; /* >= chunk_size. */
executed 68 times by 1 test: chunk_end = file_size - 1;
Executed by:
  • split
68
959 else-
960 chunk_end += chunk_size;
executed 740 times by 1 test: chunk_end += chunk_size;
Executed by:
  • split
740
961 if (chunk_end <= n_written - 1)
chunk_end <= n_written - 1Description
TRUEevaluated 127 times by 1 test
Evaluated by:
  • split
FALSEevaluated 681 times by 1 test
Evaluated by:
  • split
127-681
962 {-
963 if (! k)
! kDescription
TRUEevaluated 120 times by 1 test
Evaluated by:
  • split
FALSEevaluated 7 times by 1 test
Evaluated by:
  • split
7-120
964 cwrite (true, NULL, 0);
executed 120 times by 1 test: cwrite ( 1 , ((void *)0) , 0);
Executed by:
  • split
120
965 }
executed 127 times by 1 test: end of block
Executed by:
  • split
127
966 else-
967 next = false;
executed 681 times by 1 test: next = 0 ;
Executed by:
  • split
681
968 }-
969 }
executed 1929 times by 1 test: end of block
Executed by:
  • split
1929
970 }
executed 1553 times by 1 test: end of block
Executed by:
  • split
1553
971-
972 if (chunk_truncated)
chunk_truncatedDescription
TRUEevaluated 1 time by 1 test
Evaluated by:
  • split
FALSEevaluated 68 times by 1 test
Evaluated by:
  • split
1-68
973 chunk_no++;
executed 1 time by 1 test: chunk_no++;
Executed by:
  • split
1
974-
975 /* Ensure NUMBER files are created, which truncates-
976 any existing files or notifies any consumers on fifos.-
977 FIXME: Should we do this before EXIT_FAILURE? */-
978 while (!k && chunk_no++ <= n)
!kDescription
TRUEevaluated 88 times by 1 test
Evaluated by:
  • split
FALSEevaluated 1 time by 1 test
Evaluated by:
  • split
chunk_no++ <= nDescription
TRUEevaluated 20 times by 1 test
Evaluated by:
  • split
FALSEevaluated 68 times by 1 test
Evaluated by:
  • split
1-88
979 cwrite (true, NULL, 0);
executed 20 times by 1 test: cwrite ( 1 , ((void *)0) , 0);
Executed by:
  • split
20
980}
executed 69 times by 1 test: end of block
Executed by:
  • split
69
981-
982/* -n K/N: Extract Kth of N chunks. */-
983-
984static void-
985bytes_chunk_extract (uintmax_t k, uintmax_t n, char *buf, size_t bufsize,-
986 size_t initial_read, off_t file_size)-
987{-
988 off_t start;-
989 off_t end;-
990-
991 assert (k && n && k <= n && n <= file_size);-
992-
993 start = (k - 1) * (file_size / n);-
994 end = (k == n) ? file_size : k * (file_size / n);
(k == n)Description
TRUEevaluated 3 times by 1 test
Evaluated by:
  • split
FALSEevaluated 7 times by 1 test
Evaluated by:
  • split
3-7
995-
996 if (start < initial_read)
start < initial_readDescription
TRUEevaluated 8 times by 1 test
Evaluated by:
  • split
FALSEevaluated 2 times by 1 test
Evaluated by:
  • split
2-8
997 {-
998 memmove (buf, buf + start, initial_read - start);-
999 initial_read -= start;-
1000 }
executed 8 times by 1 test: end of block
Executed by:
  • split
8
1001 else-
1002 {-
1003 if (lseek (STDIN_FILENO, start, SEEK_CUR) < 0)
lseek ( 0 , start, 1 ) < 0Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • split
0-2
1004 die (EXIT_FAILURE, errno, "%s", quotef (infile));
never executed: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, (*__errno_location ()), \"%s\", quotearg_n_style_colon (0, shell_escape_quoting_style, infile)), assume (false))" ")"); int _gl_dummy; })) ? ((error ( 1 , (*__errno_location ()...lon (0, shell_escape_quoting_style, infile)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , (*__errno_location ()) , "%s", quotearg_n_style_colon (0, shell_escape_quoting_style, infile)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))));
0
1005 initial_read = SIZE_MAX;-
1006 }
executed 2 times by 1 test: end of block
Executed by:
  • split
2
1007-
1008 while (start < end)
start < endDescription
TRUEevaluated 10 times by 1 test
Evaluated by:
  • split
FALSEevaluated 8 times by 1 test
Evaluated by:
  • split
8-10
1009 {-
1010 size_t n_read;-
1011 if (initial_read != SIZE_MAX)
initial_read !...73709551615UL)Description
TRUEevaluated 8 times by 1 test
Evaluated by:
  • split
FALSEevaluated 2 times by 1 test
Evaluated by:
  • split
2-8
1012 {-
1013 n_read = initial_read;-
1014 initial_read = SIZE_MAX;-
1015 }
executed 8 times by 1 test: end of block
Executed by:
  • split
8
1016 else-
1017 {-
1018 n_read = safe_read (STDIN_FILENO, buf, bufsize);-
1019 if (n_read == SAFE_READ_ERROR)
n_read == ((size_t) -1)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • split
0-2
1020 die (EXIT_FAILURE, errno, "%s", quotef (infile));
never executed: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, (*__errno_location ()), \"%s\", quotearg_n_style_colon (0, shell_escape_quoting_style, infile)), assume (false))" ")"); int _gl_dummy; })) ? ((error ( 1 , (*__errno_location ()...lon (0, shell_escape_quoting_style, infile)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , (*__errno_location ()) , "%s", quotearg_n_style_colon (0, shell_escape_quoting_style, infile)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))));
0
1021 }
executed 2 times by 1 test: end of block
Executed by:
  • split
2
1022 if (n_read == 0)
n_read == 0Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • split
FALSEevaluated 8 times by 1 test
Evaluated by:
  • split
2-8
1023 break; /* eof. */
executed 2 times by 1 test: break;
Executed by:
  • split
2
1024 n_read = MIN (n_read, end - start);
(( n_read )<( end - start ))Description
TRUEnever evaluated
FALSEevaluated 8 times by 1 test
Evaluated by:
  • split
0-8
1025 if (full_write (STDOUT_FILENO, buf, n_read) != n_read
full_write ( 1...ead) != n_readDescription
TRUEnever evaluated
FALSEevaluated 8 times by 1 test
Evaluated by:
  • split
0-8
1026 && ! ignorable (errno))
! ignorable ( ...location ()) )Description
TRUEnever evaluated
FALSEnever evaluated
0
1027 die (EXIT_FAILURE, errno, "%s", quotef ("-"));
never executed: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, (*__errno_location ()), \"%s\", quotearg_n_style_colon (0, shell_escape_quoting_style, \"-\")), assume (false))" ")"); int _gl_dummy; })) ? ((error ( 1 , (*__errno_location ())...yle_colon (0, shell_escape_quoting_style, "-")), (( 0 ) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , (*__errno_location ()) , "%s", quotearg_n_style_colon (0, shell_escape_quoting_style, "-")), (( 0 ) ? (void) 0 : __builtin_unreachable ()))));
0
1028 start += n_read;-
1029 }
executed 8 times by 1 test: end of block
Executed by:
  • split
8
1030}
executed 10 times by 1 test: end of block
Executed by:
  • split
10
1031-
1032typedef struct of_info-
1033{-
1034 char *of_name;-
1035 int ofd;-
1036 FILE *ofile;-
1037 int opid;-
1038} of_t;-
1039-
1040enum-
1041{-
1042 OFD_NEW = -1,-
1043 OFD_APPEND = -2-
1044};-
1045-
1046/* Rotate file descriptors when we're writing to more output files than we-
1047 have available file descriptors.-
1048 Return whether we came under file resource pressure.-
1049 If so, it's probably best to close each file when finished with it. */-
1050-
1051static bool-
1052ofile_open (of_t *files, size_t i_check, size_t nfiles)-
1053{-
1054 bool file_limit = false;-
1055-
1056 if (files[i_check].ofd <= OFD_NEW)
files[i_check].ofd <= OFD_NEWDescription
TRUEevaluated 213 times by 1 test
Evaluated by:
  • split
FALSEevaluated 605136 times by 1 test
Evaluated by:
  • split
213-605136
1057 {-
1058 int fd;-
1059 size_t i_reopen = i_check ? i_check - 1 : nfiles - 1;
i_checkDescription
TRUEevaluated 199 times by 1 test
Evaluated by:
  • split
FALSEevaluated 14 times by 1 test
Evaluated by:
  • split
14-199
1060-
1061 /* Another process could have opened a file in between the calls to-
1062 close and open, so we should keep trying until open succeeds or-
1063 we've closed all of our files. */-
1064 while (true)-
1065 {-
1066 if (files[i_check].ofd == OFD_NEW)
files[i_check].ofd == OFD_NEWDescription
TRUEevaluated 169 times by 1 test
Evaluated by:
  • split
FALSEevaluated 45 times by 1 test
Evaluated by:
  • split
45-169
1067 fd = create (files[i_check].of_name);
executed 169 times by 1 test: fd = create (files[i_check].of_name);
Executed by:
  • split
169
1068 else /* OFD_APPEND */-
1069 {-
1070 /* Attempt to append to previously opened file.-
1071 We use O_NONBLOCK to support writing to fifos,-
1072 where the other end has closed because of our-
1073 previous close. In that case we'll immediately-
1074 get an error, rather than waiting indefinitely.-
1075 In specialised cases the consumer can keep reading-
1076 from the fifo, terminating on conditions in the data-
1077 itself, or perhaps never in the case of 'tail -f'.-
1078 I.e., for fifos it is valid to attempt this reopen.-
1079-
1080 We don't handle the filter_command case here, as create()-
1081 will exit if there are not enough files in that case.-
1082 I.e., we don't support restarting filters, as that would-
1083 put too much burden on users specifying --filter commands. */-
1084 fd = open (files[i_check].of_name,-
1085 O_WRONLY | O_BINARY | O_APPEND | O_NONBLOCK);-
1086 }
executed 45 times by 1 test: end of block
Executed by:
  • split
45
1087-
1088 if (-1 < fd)
-1 < fdDescription
TRUEevaluated 213 times by 1 test
Evaluated by:
  • split
FALSEevaluated 1 time by 1 test
Evaluated by:
  • split
1-213
1089 break;
executed 213 times by 1 test: break;
Executed by:
  • split
213
1090-
1091 if (!(errno == EMFILE || errno == ENFILE))
(*__errno_location ()) == 24Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • split
FALSEnever evaluated
(*__errno_location ()) == 23Description
TRUEnever evaluated
FALSEnever evaluated
0-1
1092 die (EXIT_FAILURE, errno, "%s", quotef (files[i_check].of_name));
never executed: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, (*__errno_location ()), \"%s\", quotearg_n_style_colon (0, shell_escape_quoting_style, files[i_check].of_name)), assume (false))" ")"); int _gl_dummy; })) ? ((error ( 1 , (*__e...le, files[i_check].of_name)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , (*__errno_location ()) , "%s", quotearg_n_style_colon (0, shell_escape_quoting_style, files[i_check].of_name)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))));
0
1093-
1094 file_limit = true;-
1095-
1096 /* Search backwards for an open file to close. */-
1097 while (files[i_reopen].ofd < 0)
files[i_reopen].ofd < 0Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • split
0-1
1098 {-
1099 i_reopen = i_reopen ? i_reopen - 1 : nfiles - 1;
i_reopenDescription
TRUEnever evaluated
FALSEnever evaluated
0
1100 /* No more open files to close, exit with E[NM]FILE. */-
1101 if (i_reopen == i_check)
i_reopen == i_checkDescription
TRUEnever evaluated
FALSEnever evaluated
0
1102 die (EXIT_FAILURE, errno, "%s",
never executed: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, (*__errno_location ()), \"%s\", quotearg_n_style_colon (0, shell_escape_quoting_style, files[i_check].of_name)), assume (false))" ")"); int _gl_dummy; })) ? ((error ( 1 , (*__e...e, files[i_check].of_name)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , (*__errno_location ()) , "%s", quotearg_n_style_colon (0, shell_escape_quoting_style, files[i_check].of_name)), (( 0 ) ? (void) 0 : __builtin_unreachable ())))) ;
0
1103 quotef (files[i_check].of_name));
never executed: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, (*__errno_location ()), \"%s\", quotearg_n_style_colon (0, shell_escape_quoting_style, files[i_check].of_name)), assume (false))" ")"); int _gl_dummy; })) ? ((error ( 1 , (*__e...e, files[i_check].of_name)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , (*__errno_location ()) , "%s", quotearg_n_style_colon (0, shell_escape_quoting_style, files[i_check].of_name)), (( 0 ) ? (void) 0 : __builtin_unreachable ())))) ;
0
1104 }
never executed: end of block
0
1105-
1106 if (fclose (files[i_reopen].ofile) != 0)
rpl_fclose (fi...n].ofile) != 0Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • split
0-1
1107 die (EXIT_FAILURE, errno, "%s", quotef (files[i_reopen].of_name));
never executed: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, (*__errno_location ()), \"%s\", quotearg_n_style_colon (0, shell_escape_quoting_style, files[i_reopen].of_name)), assume (false))" ")"); int _gl_dummy; })) ? ((error ( 1 , (*__..., files[i_reopen].of_name)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , (*__errno_location ()) , "%s", quotearg_n_style_colon (0, shell_escape_quoting_style, files[i_reopen].of_name)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))));
0
1108 files[i_reopen].ofile = NULL;-
1109 files[i_reopen].ofd = OFD_APPEND;-
1110 }
executed 1 time by 1 test: end of block
Executed by:
  • split
1
1111-
1112 files[i_check].ofd = fd;-
1113 if (!(files[i_check].ofile = fdopen (fd, "a")))
!(files[i_chec...pen (fd, "a"))Description
TRUEnever evaluated
FALSEevaluated 213 times by 1 test
Evaluated by:
  • split
0-213
1114 die (EXIT_FAILURE, errno, "%s", quotef (files[i_check].of_name));
never executed: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, (*__errno_location ()), \"%s\", quotearg_n_style_colon (0, shell_escape_quoting_style, files[i_check].of_name)), assume (false))" ")"); int _gl_dummy; })) ? ((error ( 1 , (*__e...le, files[i_check].of_name)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , (*__errno_location ()) , "%s", quotearg_n_style_colon (0, shell_escape_quoting_style, files[i_check].of_name)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))));
0
1115 files[i_check].opid = filter_pid;-
1116 filter_pid = 0;-
1117 }
executed 213 times by 1 test: end of block
Executed by:
  • split
213
1118-
1119 return file_limit;
executed 605349 times by 1 test: return file_limit;
Executed by:
  • split
605349
1120}-
1121-
1122/* -n r/[K/]N: Divide file into N chunks in round robin fashion.-
1123 When K == 0, we try to keep the files open in parallel.-
1124 If we run out of file resources, then we revert-
1125 to opening and closing each file for each line. */-
1126-
1127static void-
1128lines_rr (uintmax_t k, uintmax_t n, char *buf, size_t bufsize)-
1129{-
1130 bool wrapped = false;-
1131 bool wrote = false;-
1132 bool file_limit;-
1133 size_t i_file;-
1134 of_t *files IF_LINT (= NULL);-
1135 uintmax_t line_no;-
1136-
1137 if (k)
kDescription
TRUEevaluated 5 times by 1 test
Evaluated by:
  • split
FALSEevaluated 14 times by 1 test
Evaluated by:
  • split
5-14
1138 line_no = 1;
executed 5 times by 1 test: line_no = 1;
Executed by:
  • split
5
1139 else-
1140 {-
1141 if (SIZE_MAX < n)
(18446744073709551615UL) < nDescription
TRUEnever evaluated
FALSEevaluated 14 times by 1 test
Evaluated by:
  • split
0-14
1142 xalloc_die ();
never executed: xalloc_die ();
0
1143 files = xnmalloc (n, sizeof *files);-
1144-
1145 /* Generate output file names. */-
1146 for (i_file = 0; i_file < n; i_file++)
i_file < nDescription
TRUEevaluated 178 times by 1 test
Evaluated by:
  • split
FALSEevaluated 14 times by 1 test
Evaluated by:
  • split
14-178
1147 {-
1148 next_file_name ();-
1149 files[i_file].of_name = xstrdup (outfile);-
1150 files[i_file].ofd = OFD_NEW;-
1151 files[i_file].ofile = NULL;-
1152 files[i_file].opid = 0;-
1153 }
executed 178 times by 1 test: end of block
Executed by:
  • split
178
1154 i_file = 0;-
1155 file_limit = false;-
1156 }
executed 14 times by 1 test: end of block
Executed by:
  • split
14
1157-
1158 while (true)-
1159 {-
1160 char *bp = buf, *eob;-
1161 size_t n_read = safe_read (STDIN_FILENO, buf, bufsize);-
1162 if (n_read == SAFE_READ_ERROR)
n_read == ((size_t) -1)Description
TRUEnever evaluated
FALSEevaluated 800 times by 1 test
Evaluated by:
  • split
0-800
1163 die (EXIT_FAILURE, errno, "%s", quotef (infile));
never executed: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, (*__errno_location ()), \"%s\", quotearg_n_style_colon (0, shell_escape_quoting_style, infile)), assume (false))" ")"); int _gl_dummy; })) ? ((error ( 1 , (*__errno_location ()...lon (0, shell_escape_quoting_style, infile)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , (*__errno_location ()) , "%s", quotearg_n_style_colon (0, shell_escape_quoting_style, infile)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))));
0
1164 else if (n_read == 0)
n_read == 0Description
TRUEevaluated 17 times by 1 test
Evaluated by:
  • split
FALSEevaluated 783 times by 1 test
Evaluated by:
  • split
17-783
1165 break; /* eof. */
executed 17 times by 1 test: break;
Executed by:
  • split
17
1166 eob = buf + n_read;-
1167-
1168 while (bp != eob)
bp != eobDescription
TRUEevaluated 605259 times by 1 test
Evaluated by:
  • split
FALSEevaluated 781 times by 1 test
Evaluated by:
  • split
781-605259
1169 {-
1170 size_t to_write;-
1171 bool next = false;-
1172-
1173 /* Find end of line. */-
1174 char *bp_out = memchr (bp, eolchar, eob - bp);-
1175 if (bp_out)
bp_outDescription
TRUEevaluated 604595 times by 1 test
Evaluated by:
  • split
FALSEevaluated 664 times by 1 test
Evaluated by:
  • split
664-604595
1176 {-
1177 bp_out++;-
1178 next = true;-
1179 }
executed 604595 times by 1 test: end of block
Executed by:
  • split
604595
1180 else-
1181 bp_out = eob;
executed 664 times by 1 test: bp_out = eob;
Executed by:
  • split
664
1182 to_write = bp_out - bp;-
1183-
1184 if (k)
kDescription
TRUEevaluated 20 times by 1 test
Evaluated by:
  • split
FALSEevaluated 605239 times by 1 test
Evaluated by:
  • split
20-605239
1185 {-
1186 if (line_no == k && unbuffered)
line_no == kDescription
TRUEevaluated 7 times by 1 test
Evaluated by:
  • split
FALSEevaluated 13 times by 1 test
Evaluated by:
  • split
unbufferedDescription
TRUEnever evaluated
FALSEevaluated 7 times by 1 test
Evaluated by:
  • split
0-13
1187 {-
1188 if (full_write (STDOUT_FILENO, bp, to_write) != to_write)
full_write ( 1...e) != to_writeDescription
TRUEnever evaluated
FALSEnever evaluated
0
1189 die (EXIT_FAILURE, errno, "%s", _("write error"));
never executed: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, (*__errno_location ()), \"%s\", dcgettext (((void *)0), \"write error\", 5)), assume (false))" ")"); int _gl_dummy; })) ? ((error ( 1 , (*__errno_location ()) , "%s", dcgettext (((void *)0), "write error" , 5) ), (( 0 ) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , (*__errno_location ()) , "%s", dcgettext (((void *)0), "write error" , 5) ), (( 0 ) ? (void) 0 : __builtin_unreachable ()))));
0
1190 }
never executed: end of block
0
1191 else if (line_no == k && fwrite (bp, to_write, 1, stdout) != 1)
never executed: break;
(__builtin_exp...r++))) == (-1)Description
TRUEnever evaluated
FALSEnever evaluated
__cnt > 0Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_expe...write_end), 0)Description
TRUEnever evaluated
FALSEnever evaluated
line_no == kDescription
TRUEevaluated 7 times by 1 test
Evaluated by:
  • split
FALSEevaluated 13 times by 1 test
Evaluated by:
  • split
(__extension__...tdout)))) != 1Description
TRUEnever evaluated
FALSEevaluated 7 times by 1 test
Evaluated by:
  • split
__builtin_cons...p ( to_write )Description
TRUEnever evaluated
FALSEevaluated 7 times by 1 test
Evaluated by:
  • split
__builtin_constant_p ( 1 )Description
TRUEnever evaluated
FALSEnever evaluated
(size_t) ( to_..._t) ( 1 ) <= 8Description
TRUEnever evaluated
FALSEnever evaluated
(size_t) ( to_write ) != 0Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...p ( to_write )Description
TRUEnever evaluated
FALSEevaluated 7 times by 1 test
Evaluated by:
  • split
(size_t) ( to_write ) == 0Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_constant_p ( 1 )Description
TRUEevaluated 7 times by 1 test
Evaluated by:
  • split
FALSEnever evaluated
(size_t) ( 1 ) == 0Description
TRUEnever evaluated
FALSEevaluated 7 times by 1 test
Evaluated by:
  • split
0-13
1192 {-
1193 clearerr (stdout); /* To silence close_stdout(). */-
1194 die (EXIT_FAILURE, errno, "%s", _("write error"));-
1195 }
never executed: end of block
0
1196 if (next)
nextDescription
TRUEevaluated 19 times by 1 test
Evaluated by:
  • split
FALSEevaluated 1 time by 1 test
Evaluated by:
  • split
1-19
1197 line_no = (line_no == n) ? 1 : line_no + 1;
executed 19 times by 1 test: line_no = (line_no == n) ? 1 : line_no + 1;
Executed by:
  • split
(line_no == n)Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • split
FALSEevaluated 15 times by 1 test
Evaluated by:
  • split
4-19
1198 }
executed 20 times by 1 test: end of block
Executed by:
  • split
20
1199 else-
1200 {-
1201 /* Secure file descriptor. */-
1202 file_limit |= ofile_open (files, i_file, n);-
1203 if (unbuffered)
unbufferedDescription
TRUEnever evaluated
FALSEevaluated 605239 times by 1 test
Evaluated by:
  • split
0-605239
1204 {-
1205 /* Note writing to fd, rather than flushing the FILE gives-
1206 an 8% performance benefit, due to reduced data copying. */-
1207 if (full_write (files[i_file].ofd, bp, to_write) != to_write
full_write (fi...e) != to_writeDescription
TRUEnever evaluated
FALSEnever evaluated
0
1208 && ! ignorable (errno))
! ignorable ( ...location ()) )Description
TRUEnever evaluated
FALSEnever evaluated
0
1209 {-
1210 die (EXIT_FAILURE, errno, "%s",-
1211 quotef (files[i_file].of_name));-
1212 }
never executed: end of block
0
1213 }
never executed: end of block
0
1214 else if (fwrite (bp, to_write, 1, files[i_file].ofile) != 1
never executed: break;
(__builtin_exp...r++))) == (-1)Description
TRUEnever evaluated
FALSEnever evaluated
__cnt > 0Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_expe...write_end), 0)Description
TRUEnever evaluated
FALSEnever evaluated
(__extension__...file )))) != 1Description
TRUEevaluated 3 times by 1 test
Evaluated by:
  • split
FALSEevaluated 605236 times by 1 test
Evaluated by:
  • split
__builtin_cons...p ( to_write )Description
TRUEnever evaluated
FALSEevaluated 605239 times by 1 test
Evaluated by:
  • split
__builtin_constant_p ( 1 )Description
TRUEnever evaluated
FALSEnever evaluated
(size_t) ( to_..._t) ( 1 ) <= 8Description
TRUEnever evaluated
FALSEnever evaluated
(size_t) ( to_write ) != 0Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...p ( to_write )Description
TRUEnever evaluated
FALSEevaluated 605239 times by 1 test
Evaluated by:
  • split
(size_t) ( to_write ) == 0Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_constant_p ( 1 )Description
TRUEevaluated 605239 times by 1 test
Evaluated by:
  • split
FALSEnever evaluated
(size_t) ( 1 ) == 0Description
TRUEnever evaluated
FALSEevaluated 605239 times by 1 test
Evaluated by:
  • split
0-605239
1215 && ! ignorable (errno))
! ignorable ( ...location ()) )Description
TRUEnever evaluated
FALSEevaluated 3 times by 1 test
Evaluated by:
  • split
0-3
1216 {-
1217 die (EXIT_FAILURE, errno, "%s",-
1218 quotef (files[i_file].of_name));-
1219 }
never executed: end of block
0
1220-
1221 if (! ignorable (errno))
! ignorable ( ...location ()) )Description
TRUEevaluated 605236 times by 1 test
Evaluated by:
  • split
FALSEevaluated 3 times by 1 test
Evaluated by:
  • split
3-605236
1222 wrote = true;
executed 605236 times by 1 test: wrote = 1 ;
Executed by:
  • split
605236
1223-
1224 if (file_limit)
file_limitDescription
TRUEevaluated 74 times by 1 test
Evaluated by:
  • split
FALSEevaluated 605165 times by 1 test
Evaluated by:
  • split
74-605165
1225 {-
1226 if (fclose (files[i_file].ofile) != 0)
rpl_fclose (fi...e].ofile) != 0Description
TRUEnever evaluated
FALSEevaluated 74 times by 1 test
Evaluated by:
  • split
0-74
1227 {-
1228 die (EXIT_FAILURE, errno, "%s",-
1229 quotef (files[i_file].of_name));-
1230 }
never executed: end of block
0
1231 files[i_file].ofile = NULL;-
1232 files[i_file].ofd = OFD_APPEND;-
1233 }
executed 74 times by 1 test: end of block
Executed by:
  • split
74
1234 if (next && ++i_file == n)
nextDescription
TRUEevaluated 604576 times by 1 test
Evaluated by:
  • split
FALSEevaluated 663 times by 1 test
Evaluated by:
  • split
++i_file == nDescription
TRUEevaluated 194644 times by 1 test
Evaluated by:
  • split
FALSEevaluated 409932 times by 1 test
Evaluated by:
  • split
663-604576
1235 {-
1236 wrapped = true;-
1237 /* If no filters are accepting input, stop reading. */-
1238 if (! wrote)
! wroteDescription
TRUEevaluated 2 times by 1 test
Evaluated by:
  • split
FALSEevaluated 194642 times by 1 test
Evaluated by:
  • split
2-194642
1239 goto no_filters;
executed 2 times by 1 test: goto no_filters;
Executed by:
  • split
2
1240 wrote = false;-
1241 i_file = 0;-
1242 }
executed 194642 times by 1 test: end of block
Executed by:
  • split
194642
1243 }
executed 605237 times by 1 test: end of block
Executed by:
  • split
605237
1244-
1245 bp = bp_out;-
1246 }
executed 605257 times by 1 test: end of block
Executed by:
  • split
605257
1247 }
executed 781 times by 1 test: end of block
Executed by:
  • split
781
1248-
1249no_filters:
code before this statement executed 17 times by 1 test: no_filters:
Executed by:
  • split
17
1250 /* Ensure all files created, so that any existing files are truncated,-
1251 and to signal any waiting fifo consumers.-
1252 Also, close any open file descriptors.-
1253 FIXME: Should we do this before EXIT_FAILURE? */-
1254 if (!k)
!kDescription
TRUEevaluated 14 times by 1 test
Evaluated by:
  • split
FALSEevaluated 5 times by 1 test
Evaluated by:
  • split
5-14
1255 {-
1256 int ceiling = (wrapped ? n : i_file);
wrappedDescription
TRUEevaluated 11 times by 1 test
Evaluated by:
  • split
FALSEevaluated 3 times by 1 test
Evaluated by:
  • split
3-11
1257 for (i_file = 0; i_file < n; i_file++)
i_file < nDescription
TRUEevaluated 178 times by 1 test
Evaluated by:
  • split
FALSEevaluated 14 times by 1 test
Evaluated by:
  • split
14-178
1258 {-
1259 if (i_file >= ceiling && !elide_empty_files)
i_file >= ceilingDescription
TRUEevaluated 120 times by 1 test
Evaluated by:
  • split
FALSEevaluated 58 times by 1 test
Evaluated by:
  • split
!elide_empty_filesDescription
TRUEevaluated 110 times by 1 test
Evaluated by:
  • split
FALSEevaluated 10 times by 1 test
Evaluated by:
  • split
10-120
1260 file_limit |= ofile_open (files, i_file, n);
executed 110 times by 1 test: file_limit |= ofile_open (files, i_file, n);
Executed by:
  • split
110
1261 if (files[i_file].ofd >= 0)
files[i_file].ofd >= 0Description
TRUEevaluated 138 times by 1 test
Evaluated by:
  • split
FALSEevaluated 40 times by 1 test
Evaluated by:
  • split
40-138
1262 closeout (files[i_file].ofile, files[i_file].ofd,
executed 138 times by 1 test: closeout (files[i_file].ofile, files[i_file].ofd, files[i_file].opid, files[i_file].of_name);
Executed by:
  • split
138
1263 files[i_file].opid, files[i_file].of_name);
executed 138 times by 1 test: closeout (files[i_file].ofile, files[i_file].ofd, files[i_file].opid, files[i_file].of_name);
Executed by:
  • split
138
1264 files[i_file].ofd = OFD_APPEND;-
1265 }
executed 178 times by 1 test: end of block
Executed by:
  • split
178
1266 }
executed 14 times by 1 test: end of block
Executed by:
  • split
14
1267 IF_LINT (free (files));-
1268}
executed 19 times by 1 test: end of block
Executed by:
  • split
19
1269-
1270#define FAIL_ONLY_ONE_WAY() \-
1271 do \-
1272 { \-
1273 error (0, 0, _("cannot split in more than one way")); \-
1274 usage (EXIT_FAILURE); \-
1275 } \-
1276 while (0)-
1277-
1278-
1279/* Parse K/N syntax of chunk options. */-
1280-
1281static void-
1282parse_chunk (uintmax_t *k_units, uintmax_t *n_units, char *slash)-
1283{-
1284 *n_units = xdectoumax (slash + 1, 1, UINTMAX_MAX, "",-
1285 _("invalid number of chunks"), 0);-
1286 if (slash != optarg) /* a leading number is specified. */
slash != optargDescription
TRUEevaluated 54 times by 1 test
Evaluated by:
  • split
FALSEnever evaluated
0-54
1287 {-
1288 *slash = '\0';-
1289 *k_units = xdectoumax (optarg, 1, *n_units, "",-
1290 _("invalid chunk number"), 0);-
1291 }
executed 51 times by 1 test: end of block
Executed by:
  • split
51
1292}
executed 51 times by 1 test: end of block
Executed by:
  • split
51
1293-
1294-
1295int-
1296main (int argc, char **argv)-
1297{-
1298 enum Split_type split_type = type_undef;-
1299 size_t in_blk_size = 0; /* optimal block size of input file device */-
1300 size_t page_size = getpagesize ();-
1301 uintmax_t k_units = 0;-
1302 uintmax_t n_units = 0;-
1303-
1304 static char const multipliers[] = "bEGKkMmPTYZ0";-
1305 int c;-
1306 int digits_optind = 0;-
1307 off_t file_size = OFF_T_MAX;-
1308-
1309 initialize_main (&argc, &argv);-
1310 set_program_name (argv[0]);-
1311 setlocale (LC_ALL, "");-
1312 bindtextdomain (PACKAGE, LOCALEDIR);-
1313 textdomain (PACKAGE);-
1314-
1315 atexit (close_stdout);-
1316-
1317 /* Parse command line options. */-
1318-
1319 infile = bad_cast ("-");-
1320 outbase = bad_cast ("x");-
1321-
1322 while (true)-
1323 {-
1324 /* This is the argv-index of the option we will read next. */-
1325 int this_optind = optind ? optind : 1;
optindDescription
TRUEevaluated 1327 times by 1 test
Evaluated by:
  • split
FALSEnever evaluated
0-1327
1326 char *slash;-
1327-
1328 c = getopt_long (argc, argv, "0123456789C:a:b:del:n:t:ux",-
1329 longopts, NULL);-
1330 if (c == -1)
c == -1Description
TRUEevaluated 417 times by 1 test
Evaluated by:
  • split
FALSEevaluated 910 times by 1 test
Evaluated by:
  • split
417-910
1331 break;
executed 417 times by 1 test: break;
Executed by:
  • split
417
1332-
1333 switch (c)-
1334 {-
1335 case 'a':
executed 11 times by 1 test: case 'a':
Executed by:
  • split
11
1336 suffix_length = xdectoumax (optarg, 0, SIZE_MAX / sizeof (size_t),-
1337 "", _("invalid suffix length"), 0);-
1338 break;
executed 9 times by 1 test: break;
Executed by:
  • split
9
1339-
1340 case ADDITIONAL_SUFFIX_OPTION:
executed 9 times by 1 test: case ADDITIONAL_SUFFIX_OPTION:
Executed by:
  • split
9
1341 if (last_component (optarg) != optarg)
last_component...arg) != optargDescription
TRUEevaluated 1 time by 1 test
Evaluated by:
  • split
FALSEevaluated 8 times by 1 test
Evaluated by:
  • split
1-8
1342 {-
1343 error (0, 0,-
1344 _("invalid suffix %s, contains directory separator"),-
1345 quote (optarg));-
1346 usage (EXIT_FAILURE);-
1347 }
never executed: end of block
0
1348 additional_suffix = optarg;-
1349 break;
executed 8 times by 1 test: break;
Executed by:
  • split
8
1350-
1351 case 'b':
executed 17 times by 1 test: case 'b':
Executed by:
  • split
17
1352 if (split_type != type_undef)
split_type != type_undefDescription
TRUEnever evaluated
FALSEevaluated 17 times by 1 test
Evaluated by:
  • split
0-17
1353 FAIL_ONLY_ONE_WAY ();
never executed: end of block
0
1354 split_type = type_bytes;-
1355 /* Limit to OFF_T_MAX, because if input is a pipe, we could get more-
1356 data than is possible to write to a single file, so indicate that-
1357 immediately rather than having possibly future invocations fail. */-
1358 n_units = xdectoumax (optarg, 1, OFF_T_MAX, multipliers,-
1359 _("invalid number of bytes"), 0);-
1360 break;
executed 14 times by 1 test: break;
Executed by:
  • split
14
1361-
1362 case 'l':
executed 19 times by 1 test: case 'l':
Executed by:
  • split
19
1363 if (split_type != type_undef)
split_type != type_undefDescription
TRUEnever evaluated
FALSEevaluated 19 times by 1 test
Evaluated by:
  • split
0-19
1364 FAIL_ONLY_ONE_WAY ();
never executed: end of block
0
1365 split_type = type_lines;-
1366 n_units = xdectoumax (optarg, 1, UINTMAX_MAX, "",-
1367 _("invalid number of lines"), 0);-
1368 break;
executed 16 times by 1 test: break;
Executed by:
  • split
16
1369-
1370 case 'C':
executed 242 times by 1 test: case 'C':
Executed by:
  • split
242
1371 if (split_type != type_undef)
split_type != type_undefDescription
TRUEnever evaluated
FALSEevaluated 242 times by 1 test
Evaluated by:
  • split
0-242
1372 FAIL_ONLY_ONE_WAY ();
never executed: end of block
0
1373 split_type = type_byteslines;-
1374 n_units = xdectoumax (optarg, 1, MIN (SIZE_MAX, OFF_T_MAX),-
1375 multipliers, _("invalid number of bytes"), 0);-
1376 break;
executed 237 times by 1 test: break;
Executed by:
  • split
237
1377-
1378 case 'n':
executed 152 times by 1 test: case 'n':
Executed by:
  • split
152
1379 if (split_type != type_undef)
split_type != type_undefDescription
TRUEnever evaluated
FALSEevaluated 152 times by 1 test
Evaluated by:
  • split
0-152
1380 FAIL_ONLY_ONE_WAY ();
never executed: end of block
0
1381 /* skip any whitespace */-
1382 while (isspace (to_uchar (*optarg)))
((*__ctype_b_l...int) _ISspace)Description
TRUEnever evaluated
FALSEevaluated 152 times by 1 test
Evaluated by:
  • split
0-152
1383 optarg++;
never executed: optarg++;
0
1384 if (STRNCMP_LIT (optarg, "r/") == 0)
never executed: __result = (((const unsigned char *) (const char *) ( optarg ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "" "r/" "" ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
(__extension__...) - 1 ))) == 0Description
TRUEevaluated 21 times by 1 test
Evaluated by:
  • split
FALSEevaluated 131 times by 1 test
Evaluated by:
  • split
__builtin_cons...f ("r/") - 1 )Description
TRUEevaluated 152 times by 1 test
Evaluated by:
  • split
FALSEnever evaluated
__builtin_cons...t_p ( optarg )Description
TRUEnever evaluated
FALSEevaluated 152 times by 1 test
Evaluated by:
  • split
strlen ( optar... ("r/") - 1 ))Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...( "" "r/" "" )Description
TRUEevaluated 152 times by 1 test
Evaluated by:
  • split
FALSEnever evaluated
strlen ( "" "r... ("r/") - 1 ))Description
TRUEnever evaluated
FALSEevaluated 152 times by 1 test
Evaluated by:
  • split
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0-152
1385 {-
1386 split_type = type_rr;-
1387 optarg += 2;-
1388 }
executed 21 times by 1 test: end of block
Executed by:
  • split
21
1389 else if (STRNCMP_LIT (optarg, "l/") == 0)
never executed: __result = (((const unsigned char *) (const char *) ( optarg ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "" "l/" "" ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
(__extension__...) - 1 ))) == 0Description
TRUEevaluated 106 times by 1 test
Evaluated by:
  • split
FALSEevaluated 25 times by 1 test
Evaluated by:
  • split
__builtin_cons...f ("l/") - 1 )Description
TRUEevaluated 131 times by 1 test
Evaluated by:
  • split
FALSEnever evaluated
__builtin_cons...t_p ( optarg )Description
TRUEnever evaluated
FALSEevaluated 131 times by 1 test
Evaluated by:
  • split
strlen ( optar... ("l/") - 1 ))Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...( "" "l/" "" )Description
TRUEevaluated 131 times by 1 test
Evaluated by:
  • split
FALSEnever evaluated
strlen ( "" "l... ("l/") - 1 ))Description
TRUEnever evaluated
FALSEevaluated 131 times by 1 test
Evaluated by:
  • split
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0-131
1390 {-
1391 split_type = type_chunk_lines;-
1392 optarg += 2;-
1393 }
executed 106 times by 1 test: end of block
Executed by:
  • split
106
1394 else-
1395 split_type = type_chunk_bytes;
executed 25 times by 1 test: split_type = type_chunk_bytes;
Executed by:
  • split
25
1396 if ((slash = strchr (optarg, '/')))
(slash = (__ex...rg , '/' ))) )Description
TRUEevaluated 55 times by 1 test
Evaluated by:
  • split
FALSEevaluated 97 times by 1 test
Evaluated by:
  • split
__builtin_constant_p ( '/' )Description
TRUEevaluated 152 times by 1 test
Evaluated by:
  • split
FALSEnever evaluated
!__builtin_con...t_p ( optarg )Description
TRUEevaluated 152 times by 1 test
Evaluated by:
  • split
FALSEnever evaluated
( '/' ) == '\0'Description
TRUEnever evaluated
FALSEevaluated 152 times by 1 test
Evaluated by:
  • split
0-152
1397 parse_chunk (&k_units, &n_units, slash);
executed 55 times by 1 test: parse_chunk (&k_units, &n_units, slash);
Executed by:
  • split
55
1398 else-
1399 n_units = xdectoumax (optarg, 1, UINTMAX_MAX, "",
executed 97 times by 1 test: n_units = xdectoumax (optarg, 1, (18446744073709551615UL) , "", dcgettext (((void *)0), "invalid number of chunks" , 5) , 0);
Executed by:
  • split
97
1400 _("invalid number of chunks"), 0);
executed 97 times by 1 test: n_units = xdectoumax (optarg, 1, (18446744073709551615UL) , "", dcgettext (((void *)0), "invalid number of chunks" , 5) , 0);
Executed by:
  • split
97
1401 break;
executed 143 times by 1 test: break;
Executed by:
  • split
143
1402-
1403 case 'u':
executed 2 times by 1 test: case 'u':
Executed by:
  • split
2
1404 unbuffered = true;-
1405 break;
executed 2 times by 1 test: break;
Executed by:
  • split
2
1406-
1407 case 't':
executed 21 times by 1 test: case 't':
Executed by:
  • split
21
1408 {-
1409 char neweol = optarg[0];-
1410 if (! neweol)
! neweolDescription
TRUEnever evaluated
FALSEevaluated 21 times by 1 test
Evaluated by:
  • split
0-21
1411 die (EXIT_FAILURE, 0, _("empty record separator"));
never executed: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, 0, dcgettext (((void *)0), \"empty record separator\", 5)), assume (false))" ")"); int _gl_dummy; })) ? ((error ( 1 , 0, dcgettext (((void *)0), "empty record separator" , 5) ), (( 0 ) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , 0, dcgettext (((void *)0), "empty record separator" , 5) ), (( 0 ) ? (void) 0 : __builtin_unreachable ()))));
0
1412 if (optarg[1])
optarg[1]Description
TRUEevaluated 7 times by 1 test
Evaluated by:
  • split
FALSEevaluated 14 times by 1 test
Evaluated by:
  • split
7-14
1413 {-
1414 if (STREQ (optarg, "\\0"))
never executed: __result = (((const unsigned char *) (const char *) ( optarg ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "\\0" ))[3] - __s2[3]);
executed 4 times by 1 test: end of block
Executed by:
  • split
executed 4 times by 1 test: end of block
Executed by:
  • split
( __extension_...)))); }) == 0)Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • split
FALSEevaluated 3 times by 1 test
Evaluated by:
  • split
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEevaluated 7 times by 1 test
Evaluated by:
  • split
FALSEnever evaluated
__result == 0Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • split
FALSEevaluated 3 times by 1 test
Evaluated by:
  • split
__s2_len > 1Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • split
FALSEnever evaluated
__result == 0Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • split
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • split
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0-7
1415 neweol = '\0';
executed 4 times by 1 test: neweol = '\0';
Executed by:
  • split
4
1416 else-
1417 {-
1418 /* Provoke with 'split -txx'. Complain about-
1419 "multi-character tab" instead of "multibyte tab", so-
1420 that the diagnostic's wording does not need to be-
1421 changed once multibyte characters are supported. */-
1422 die (EXIT_FAILURE, 0, _("multi-character separator %s"),-
1423 quote (optarg));-
1424 }
never executed: end of block
0
1425 }-
1426 /* Make it explicit we don't support multiple separators. */-
1427 if (0 <= eolchar && neweol != eolchar)
0 <= eolcharDescription
TRUEevaluated 3 times by 1 test
Evaluated by:
  • split
FALSEevaluated 15 times by 1 test
Evaluated by:
  • split
neweol != eolcharDescription
TRUEevaluated 2 times by 1 test
Evaluated by:
  • split
FALSEevaluated 1 time by 1 test
Evaluated by:
  • split
1-15
1428 {-
1429 die (EXIT_FAILURE, 0,-
1430 _("multiple separator characters specified"));-
1431 }
never executed: end of block
0
1432-
1433 eolchar = neweol;-
1434 }-
1435 break;
executed 16 times by 1 test: break;
Executed by:
  • split
16
1436-
1437 case '0':
executed 1 time by 1 test: case '0':
Executed by:
  • split
1
1438 case '1':
executed 2 times by 1 test: case '1':
Executed by:
  • split
2
1439 case '2':
never executed: case '2':
0
1440 case '3':
never executed: case '3':
0
1441 case '4':
never executed: case '4':
0
1442 case '5':
never executed: case '5':
0
1443 case '6':
never executed: case '6':
0
1444 case '7':
never executed: case '7':
0
1445 case '8':
never executed: case '8':
0
1446 case '9':
executed 19 times by 1 test: case '9':
Executed by:
  • split
19
1447 if (split_type == type_undef)
split_type == type_undefDescription
TRUEevaluated 3 times by 1 test
Evaluated by:
  • split
FALSEevaluated 19 times by 1 test
Evaluated by:
  • split
3-19
1448 {-
1449 split_type = type_digits;-
1450 n_units = 0;-
1451 }
executed 3 times by 1 test: end of block
Executed by:
  • split
3
1452 if (split_type != type_undef && split_type != type_digits)
split_type != type_undefDescription
TRUEevaluated 22 times by 1 test
Evaluated by:
  • split
FALSEnever evaluated
split_type != type_digitsDescription
TRUEnever evaluated
FALSEevaluated 22 times by 1 test
Evaluated by:
  • split
0-22
1453 FAIL_ONLY_ONE_WAY ();
never executed: end of block
0
1454 if (digits_optind != 0 && digits_optind != this_optind)
digits_optind != 0Description
TRUEevaluated 19 times by 1 test
Evaluated by:
  • split
FALSEevaluated 3 times by 1 test
Evaluated by:
  • split
digits_optind != this_optindDescription
TRUEnever evaluated
FALSEevaluated 19 times by 1 test
Evaluated by:
  • split
0-19
1455 n_units = 0; /* More than one number given; ignore other. */
never executed: n_units = 0;
0
1456 digits_optind = this_optind;-
1457 if (!DECIMAL_DIGIT_ACCUMULATE (n_units, c - '0', uintmax_t))
!( (void) (&(n... '0')), 1 )) )Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • split
FALSEevaluated 21 times by 1 test
Evaluated by:
  • split
(uintmax_t) -1...10 < (n_units)Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • split
FALSEevaluated 21 times by 1 test
Evaluated by:
  • split
(uintmax_t) ((...)) < (n_units)Description
TRUEnever evaluated
FALSEevaluated 21 times by 1 test
Evaluated by:
  • split
0-21
1458 {-
1459 char buffer[INT_BUFSIZE_BOUND (uintmax_t)];-
1460 die (EXIT_FAILURE, 0,-
1461 _("line count option -%s%c... is too large"),-
1462 umaxtostr (n_units, buffer), c);-
1463 }
never executed: end of block
0
1464 break;
executed 21 times by 1 test: break;
Executed by:
  • split
21
1465-
1466 case 'd':
executed 16 times by 1 test: case 'd':
Executed by:
  • split
16
1467 case 'x':
executed 7 times by 1 test: case 'x':
Executed by:
  • split
7
1468 if (c == 'd')
c == 'd'Description
TRUEevaluated 16 times by 1 test
Evaluated by:
  • split
FALSEevaluated 7 times by 1 test
Evaluated by:
  • split
7-16
1469 suffix_alphabet = "0123456789";
executed 16 times by 1 test: suffix_alphabet = "0123456789";
Executed by:
  • split
16
1470 else-
1471 suffix_alphabet = "0123456789abcdef";
executed 7 times by 1 test: suffix_alphabet = "0123456789abcdef";
Executed by:
  • split
7
1472 if (optarg)
optargDescription
TRUEevaluated 11 times by 1 test
Evaluated by:
  • split
FALSEevaluated 12 times by 1 test
Evaluated by:
  • split
11-12
1473 {-
1474 if (strlen (optarg) != strspn (optarg, suffix_alphabet))
strlen (optarg...fix_alphabet )Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • split
FALSEevaluated 7 times by 1 test
Evaluated by:
  • split
4-7
1475 {-
1476 error (0, 0,-
1477 (c == 'd') ?-
1478 _("%s: invalid start value for numerical suffix") :-
1479 _("%s: invalid start value for hexadecimal suffix"),-
1480 quote (optarg));-
1481 usage (EXIT_FAILURE);-
1482 }
never executed: end of block
0
1483 else-
1484 {-
1485 /* Skip any leading zero. */-
1486 while (*optarg == '0' && *(optarg + 1) != '\0')
*optarg == '0'Description
TRUEnever evaluated
FALSEevaluated 7 times by 1 test
Evaluated by:
  • split
*(optarg + 1) != '\0'Description
TRUEnever evaluated
FALSEnever evaluated
0-7
1487 optarg++;
never executed: optarg++;
0
1488 numeric_suffix_start = optarg;-
1489 }
executed 7 times by 1 test: end of block
Executed by:
  • split
7
1490 }-
1491 break;
executed 19 times by 1 test: break;
Executed by:
  • split
19
1492-
1493 case 'e':
executed 36 times by 1 test: case 'e':
Executed by:
  • split
36
1494 elide_empty_files = true;-
1495 break;
executed 36 times by 1 test: break;
Executed by:
  • split
36
1496-
1497 case FILTER_OPTION:
executed 10 times by 1 test: case FILTER_OPTION:
Executed by:
  • split
10
1498 filter_command = optarg;-
1499 break;
executed 10 times by 1 test: break;
Executed by:
  • split
10
1500-
1501 case IO_BLKSIZE_OPTION:
executed 310 times by 1 test: case IO_BLKSIZE_OPTION:
Executed by:
  • split
310
1502 in_blk_size = xdectoumax (optarg, 1, SIZE_MAX - page_size,-
1503 multipliers, _("invalid IO block size"), 0);-
1504 break;
executed 310 times by 1 test: break;
Executed by:
  • split
310
1505-
1506 case VERBOSE_OPTION:
executed 2 times by 1 test: case VERBOSE_OPTION:
Executed by:
  • split
2
1507 verbose = true;-
1508 break;
executed 2 times by 1 test: break;
Executed by:
  • split
2
1509-
1510 case_GETOPT_HELP_CHAR;
never executed: break;
executed 14 times by 1 test: case GETOPT_HELP_CHAR:
Executed by:
  • split
0-14
1511-
1512 case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
executed 16 times by 1 test: exit ( 0 );
Executed by:
  • split
never executed: break;
executed 16 times by 1 test: case GETOPT_VERSION_CHAR:
Executed by:
  • split
0-16
1513-
1514 default:
executed 4 times by 1 test: default:
Executed by:
  • split
4
1515 usage (EXIT_FAILURE);-
1516 }
never executed: end of block
0
1517 }-
1518-
1519 if (k_units != 0 && filter_command)
k_units != 0Description
TRUEevaluated 51 times by 1 test
Evaluated by:
  • split
FALSEevaluated 366 times by 1 test
Evaluated by:
  • split
filter_commandDescription
TRUEevaluated 1 time by 1 test
Evaluated by:
  • split
FALSEevaluated 50 times by 1 test
Evaluated by:
  • split
1-366
1520 {-
1521 error (0, 0, _("--filter does not process a chunk extracted to stdout"));-
1522 usage (EXIT_FAILURE);-
1523 }
never executed: end of block
0
1524-
1525 /* Handle default case. */-
1526 if (split_type == type_undef)
split_type == type_undefDescription
TRUEevaluated 6 times by 1 test
Evaluated by:
  • split
FALSEevaluated 410 times by 1 test
Evaluated by:
  • split
6-410
1527 {-
1528 split_type = type_lines;-
1529 n_units = 1000;-
1530 }
executed 6 times by 1 test: end of block
Executed by:
  • split
6
1531-
1532 if (n_units == 0)
n_units == 0Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • split
FALSEevaluated 415 times by 1 test
Evaluated by:
  • split
1-415
1533 {-
1534 error (0, 0, "%s: %s", _("invalid number of lines"), quote ("0"));-
1535 usage (EXIT_FAILURE);-
1536 }
never executed: end of block
0
1537-
1538 if (eolchar < 0)
eolchar < 0Description
TRUEevaluated 402 times by 1 test
Evaluated by:
  • split
FALSEevaluated 13 times by 1 test
Evaluated by:
  • split
13-402
1539 eolchar = '\n';
executed 402 times by 1 test: eolchar = '\n';
Executed by:
  • split
402
1540-
1541 set_suffix_length (n_units, split_type);-
1542-
1543 /* Get out the filename arguments. */-
1544-
1545 if (optind < argc)
optind < argcDescription
TRUEevaluated 400 times by 1 test
Evaluated by:
  • split
FALSEevaluated 14 times by 1 test
Evaluated by:
  • split
14-400
1546 infile = argv[optind++];
executed 400 times by 1 test: infile = argv[optind++];
Executed by:
  • split
400
1547-
1548 if (optind < argc)
optind < argcDescription
TRUEevaluated 7 times by 1 test
Evaluated by:
  • split
FALSEevaluated 407 times by 1 test
Evaluated by:
  • split
7-407
1549 outbase = argv[optind++];
executed 7 times by 1 test: outbase = argv[optind++];
Executed by:
  • split
7
1550-
1551 if (optind < argc)
optind < argcDescription
TRUEnever evaluated
FALSEevaluated 414 times by 1 test
Evaluated by:
  • split
0-414
1552 {-
1553 error (0, 0, _("extra operand %s"), quote (argv[optind]));-
1554 usage (EXIT_FAILURE);-
1555 }
never executed: end of block
0
1556-
1557 /* Check that the suffix length is large enough for the numerical-
1558 suffix start value. */-
1559 if (numeric_suffix_start && strlen (numeric_suffix_start) > suffix_length)
numeric_suffix_startDescription
TRUEevaluated 7 times by 1 test
Evaluated by:
  • split
FALSEevaluated 407 times by 1 test
Evaluated by:
  • split
strlen (numeri... suffix_lengthDescription
TRUEevaluated 3 times by 1 test
Evaluated by:
  • split
FALSEevaluated 4 times by 1 test
Evaluated by:
  • split
3-407
1560 {-
1561 error (0, 0, _("numerical suffix start value is too large "-
1562 "for the suffix length"));-
1563 usage (EXIT_FAILURE);-
1564 }
never executed: end of block
0
1565-
1566 /* Open the input file. */-
1567 if (! STREQ (infile, "-")
never executed: __result = (((const unsigned char *) (const char *) ( infile ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "-" ))[3] - __s2[3]);
never executed: end of block
executed 17 times by 1 test: end of block
Executed by:
  • split
! ( __extensio...)))); }) == 0)Description
TRUEevaluated 394 times by 1 test
Evaluated by:
  • split
FALSEevaluated 17 times by 1 test
Evaluated by:
  • split
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEevaluated 411 times by 1 test
Evaluated by:
  • split
FALSEnever evaluated
__result == 0Description
TRUEevaluated 17 times by 1 test
Evaluated by:
  • split
FALSEevaluated 394 times by 1 test
Evaluated by:
  • split
__s2_len > 1Description
TRUEnever evaluated
FALSEevaluated 17 times by 1 test
Evaluated by:
  • split
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0-411
1568 && fd_reopen (STDIN_FILENO, infile, O_RDONLY, 0) < 0)
fd_reopen ( 0 ...e, 00 , 0) < 0Description
TRUEnever evaluated
FALSEevaluated 394 times by 1 test
Evaluated by:
  • split
0-394
1569 die (EXIT_FAILURE, errno, _("cannot open %s for reading"),
never executed: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, (*__errno_location ()), dcgettext (((void *)0), \"cannot open %s for reading\", 5), quotearg_style (shell_escape_always_quoting_style, infile)), assume (false))" ")"); int _gl_...) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , (*__errno_location ()) , dcgettext (((void *)0), "cannot open %s for reading" , 5) , quotearg_style (shell_escape_always_quoting_style, infile)), (( 0 ) ? (void) 0 : __builtin_unreachable ())))) ;
0
1570 quoteaf (infile));
never executed: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, (*__errno_location ()), dcgettext (((void *)0), \"cannot open %s for reading\", 5), quotearg_style (shell_escape_always_quoting_style, infile)), assume (false))" ")"); int _gl_...) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , (*__errno_location ()) , dcgettext (((void *)0), "cannot open %s for reading" , 5) , quotearg_style (shell_escape_always_quoting_style, infile)), (( 0 ) ? (void) 0 : __builtin_unreachable ())))) ;
0
1571-
1572 /* Binary I/O is safer when byte counts are used. */-
1573 xset_binary_mode (STDIN_FILENO, O_BINARY);-
1574-
1575 /* Get the optimal block size of input device and make a buffer. */-
1576-
1577 if (fstat (STDIN_FILENO, &in_stat_buf) != 0)
fstat ( 0 , &in_stat_buf) != 0Description
TRUEnever evaluated
FALSEevaluated 411 times by 1 test
Evaluated by:
  • split
0-411
1578 die (EXIT_FAILURE, errno, "%s", quotef (infile));
never executed: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, (*__errno_location ()), \"%s\", quotearg_n_style_colon (0, shell_escape_quoting_style, infile)), assume (false))" ")"); int _gl_dummy; })) ? ((error ( 1 , (*__errno_location ()...lon (0, shell_escape_quoting_style, infile)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , (*__errno_location ()) , "%s", quotearg_n_style_colon (0, shell_escape_quoting_style, infile)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))));
0
1579-
1580 bool specified_buf_size = !! in_blk_size;-
1581 if (! specified_buf_size)
! specified_buf_sizeDescription
TRUEevaluated 101 times by 1 test
Evaluated by:
  • split
FALSEevaluated 310 times by 1 test
Evaluated by:
  • split
101-310
1582 in_blk_size = io_blksize (in_stat_buf);
executed 101 times by 1 test: in_blk_size = io_blksize (in_stat_buf);
Executed by:
  • split
101
1583-
1584 void *b = xmalloc (in_blk_size + 1 + page_size - 1);-
1585 char *buf = ptr_align (b, page_size);-
1586 size_t initial_read = SIZE_MAX;-
1587-
1588 if (split_type == type_chunk_bytes || split_type == type_chunk_lines)
split_type == type_chunk_bytesDescription
TRUEevaluated 17 times by 1 test
Evaluated by:
  • split
FALSEevaluated 394 times by 1 test
Evaluated by:
  • split
split_type == type_chunk_linesDescription
TRUEevaluated 104 times by 1 test
Evaluated by:
  • split
FALSEevaluated 290 times by 1 test
Evaluated by:
  • split
17-394
1589 {-
1590 file_size = input_file_size (STDIN_FILENO, &in_stat_buf,-
1591 buf, in_blk_size);-
1592 if (file_size < 0)
file_size < 0Description
TRUEevaluated 3 times by 1 test
Evaluated by:
  • split
FALSEevaluated 118 times by 1 test
Evaluated by:
  • split
3-118
1593 die (EXIT_FAILURE, errno, _("%s: cannot determine file size"),
executed 3 times by 1 test: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, (*__errno_location ()), dcgettext (((void *)0), \"%s: cannot determine file size\", 5), quotearg_n_style_colon (0, shell_escape_quoting_style, infile)), assume (false))" ")"); ...d) 0 : __builtin_unreachable ()))) : ((error ( 1 , (*__errno_location ()) , dcgettext (((void *)0), "%s: cannot determine file size" , 5) , quotearg_n_style_colon (0, shell_escape_quoting_style, infile)), (( 0 ) ? (void) 0 : __builtin_unreachable ())))) ;
Executed by:
  • split
3
1594 quotef (infile));
executed 3 times by 1 test: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, (*__errno_location ()), dcgettext (((void *)0), \"%s: cannot determine file size\", 5), quotearg_n_style_colon (0, shell_escape_quoting_style, infile)), assume (false))" ")"); ...d) 0 : __builtin_unreachable ()))) : ((error ( 1 , (*__errno_location ()) , dcgettext (((void *)0), "%s: cannot determine file size" , 5) , quotearg_n_style_colon (0, shell_escape_quoting_style, infile)), (( 0 ) ? (void) 0 : __builtin_unreachable ())))) ;
Executed by:
  • split
3
1595 initial_read = MIN (file_size, in_blk_size);
(( file_size )...in_blk_size ))Description
TRUEevaluated 43 times by 1 test
Evaluated by:
  • split
FALSEevaluated 75 times by 1 test
Evaluated by:
  • split
43-75
1596 /* Overflow, and sanity checking. */-
1597 if (OFF_T_MAX < n_units)
((off_t) (! (!...1))) < n_unitsDescription
TRUEnever evaluated
FALSEevaluated 118 times by 1 test
Evaluated by:
  • split
0-118
1598 {-
1599 char buffer[INT_BUFSIZE_BOUND (uintmax_t)];-
1600 die (EXIT_FAILURE, EOVERFLOW, "%s: %s",-
1601 _("invalid number of chunks"),-
1602 quote (umaxtostr (n_units, buffer)));-
1603 }
never executed: end of block
0
1604 /* increase file_size to n_units here, so that we still process-
1605 any input data, and create empty files for the rest. */-
1606 file_size = MAX (file_size, n_units);
(( file_size )>( n_units ))Description
TRUEevaluated 107 times by 1 test
Evaluated by:
  • split
FALSEevaluated 11 times by 1 test
Evaluated by:
  • split
11-107
1607 }
executed 118 times by 1 test: end of block
Executed by:
  • split
118
1608-
1609 /* When filtering, closure of one pipe must not terminate the process,-
1610 as there may still be other streams expecting input from us. */-
1611 if (filter_command)
filter_commandDescription
TRUEevaluated 8 times by 1 test
Evaluated by:
  • split
FALSEevaluated 400 times by 1 test
Evaluated by:
  • split
8-400
1612 {-
1613 struct sigaction act;-
1614 sigemptyset (&newblocked);-
1615 sigaction (SIGPIPE, NULL, &act);-
1616 if (act.sa_handler != SIG_IGN)
act. __sigacti...ghandler_t) 1)Description
TRUEnever evaluated
FALSEevaluated 8 times by 1 test
Evaluated by:
  • split
0-8
1617 sigaddset (&newblocked, SIGPIPE);
never executed: sigaddset (&newblocked, 13 );
0
1618 sigprocmask (SIG_BLOCK, &newblocked, &oldblocked);-
1619 }
executed 8 times by 1 test: end of block
Executed by:
  • split
8
1620-
1621 switch (split_type)-
1622 {-
1623 case type_digits:
executed 1 time by 1 test: case type_digits:
Executed by:
  • split
1
1624 case type_lines:
executed 19 times by 1 test: case type_lines:
Executed by:
  • split
19
1625 lines_split (n_units, buf, in_blk_size);-
1626 break;
executed 19 times by 1 test: break;
Executed by:
  • split
19
1627-
1628 case type_bytes:
executed 14 times by 1 test: case type_bytes:
Executed by:
  • split
14
1629 bytes_split (n_units, buf, in_blk_size, SIZE_MAX, 0);-
1630 break;
executed 10 times by 1 test: break;
Executed by:
  • split
10
1631-
1632 case type_byteslines:
executed 237 times by 1 test: case type_byteslines:
Executed by:
  • split
237
1633 line_bytes_split (n_units, buf, in_blk_size);-
1634 break;
executed 233 times by 1 test: break;
Executed by:
  • split
233
1635-
1636 case type_chunk_bytes:
executed 16 times by 1 test: case type_chunk_bytes:
Executed by:
  • split
16
1637 if (k_units == 0)
k_units == 0Description
TRUEevaluated 6 times by 1 test
Evaluated by:
  • split
FALSEevaluated 10 times by 1 test
Evaluated by:
  • split
6-10
1638 bytes_split (file_size / n_units, buf, in_blk_size, initial_read,
executed 6 times by 1 test: bytes_split (file_size / n_units, buf, in_blk_size, initial_read, n_units);
Executed by:
  • split
6
1639 n_units);
executed 6 times by 1 test: bytes_split (file_size / n_units, buf, in_blk_size, initial_read, n_units);
Executed by:
  • split
6
1640 else-
1641 bytes_chunk_extract (k_units, n_units, buf, in_blk_size, initial_read,
executed 10 times by 1 test: bytes_chunk_extract (k_units, n_units, buf, in_blk_size, initial_read, file_size);
Executed by:
  • split
10
1642 file_size);
executed 10 times by 1 test: bytes_chunk_extract (k_units, n_units, buf, in_blk_size, initial_read, file_size);
Executed by:
  • split
10
1643 break;
executed 16 times by 1 test: break;
Executed by:
  • split
16
1644-
1645 case type_chunk_lines:
executed 102 times by 1 test: case type_chunk_lines:
Executed by:
  • split
102
1646 lines_chunk_split (k_units, n_units, buf, in_blk_size, initial_read,-
1647 file_size);-
1648 break;
executed 102 times by 1 test: break;
Executed by:
  • split
102
1649-
1650 case type_rr:
executed 19 times by 1 test: case type_rr:
Executed by:
  • split
19
1651 /* Note, this is like 'sed -n ${k}~${n}p' when k > 0,-
1652 but the functionality is provided for symmetry. */-
1653 lines_rr (k_units, n_units, buf, in_blk_size);-
1654 break;
executed 19 times by 1 test: break;
Executed by:
  • split
19
1655-
1656 default:
never executed: default:
0
1657 abort ();
never executed: abort ();
0
1658 }-
1659-
1660 IF_LINT (free (b));-
1661-
1662 if (close (STDIN_FILENO) != 0)
close ( 0 ) != 0Description
TRUEnever evaluated
FALSEevaluated 399 times by 1 test
Evaluated by:
  • split
0-399
1663 die (EXIT_FAILURE, errno, "%s", quotef (infile));
never executed: ((!!sizeof (struct { _Static_assert ( 1 , "verify_expr (" "1" ", " "(error (1, (*__errno_location ()), \"%s\", quotearg_n_style_colon (0, shell_escape_quoting_style, infile)), assume (false))" ")"); int _gl_dummy; })) ? ((error ( 1 , (*__errno_location ()...lon (0, shell_escape_quoting_style, infile)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))) : ((error ( 1 , (*__errno_location ()) , "%s", quotearg_n_style_colon (0, shell_escape_quoting_style, infile)), (( 0 ) ? (void) 0 : __builtin_unreachable ()))));
0
1664 closeout (NULL, output_desc, filter_pid, outfile);-
1665-
1666 return EXIT_SUCCESS;
executed 399 times by 1 test: return 0 ;
Executed by:
  • split
399
1667}-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.1.2