OpenCoverage

printf.def

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/bash/src/builtins/printf.def
Source codeSwitch to Preprocessed file
LineSourceCount
1This file is printf.def, from which is created printf.c.-
2It implements the builtin "printf" in Bash.-
3-
4Copyright (C) 1997-2017 Free Software Foundation, Inc.-
5-
6This file is part of GNU Bash, the Bourne Again SHell.-
7-
8Bash is free software: you can redistribute it and/or modify-
9it under the terms of the GNU General Public License as published by-
10the Free Software Foundation, either version 3 of the License, or-
11(at your option) any later version.-
12-
13Bash is distributed in the hope that it will be useful,-
14but WITHOUT ANY WARRANTY; without even the implied warranty of-
15MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the-
16GNU General Public License for more details.-
17-
18You should have received a copy of the GNU General Public License-
19along with Bash. If not, see <http://www.gnu.org/licenses/>.-
20-
21$PRODUCES printf.c-
22-
23$BUILTIN printf-
24$FUNCTION printf_builtin-
25$SHORT_DOC printf [-v var] format [arguments]-
26Formats and prints ARGUMENTS under control of the FORMAT.-
27-
28Options:-
29 -v var assign the output to shell variable VAR rather than-
30 display it on the standard output-
31-
32FORMAT is a character string which contains three types of objects: plain-
33characters, which are simply copied to standard output; character escape-
34sequences, which are converted and copied to the standard output; and-
35format specifications, each of which causes printing of the next successive-
36argument.-
37-
38In addition to the standard format specifications described in printf(1),-
39printf interprets:-
40-
41 %b expand backslash escape sequences in the corresponding argument-
42 %q quote the argument in a way that can be reused as shell input-
43 %(fmt)T output the date-time string resulting from using FMT as a format-
44 string for strftime(3)-
45-
46The format is re-used as necessary to consume all of the arguments. If-
47there are fewer arguments than the format requires, extra format-
48specifications behave as if a zero value or null string, as appropriate,-
49had been supplied.-
50-
51Exit Status:-
52Returns success unless an invalid option is given or a write or assignment-
53error occurs.-
54$END-
55-
56#include <config.h>-
57-
58#include "../bashtypes.h"-
59-
60#include <errno.h>-
61#if defined (HAVE_LIMITS_H)-
62# include <limits.h>-
63#else-
64 /* Assume 32-bit ints. */-
65# define INT_MAX 2147483647-
66# define INT_MIN (-2147483647-1)-
67#endif-
68-
69#if defined (PREFER_STDARG)-
70# include <stdarg.h>-
71#else-
72# include <varargs.h>-
73#endif-
74-
75#include <stdio.h>-
76#include <chartypes.h>-
77-
78#ifdef HAVE_INTTYPES_H-
79# include <inttypes.h>-
80#endif-
81-
82#include "posixtime.h"-
83#include "../bashansi.h"-
84#include "../bashintl.h"-
85-
86#define NEED_STRFTIME_DECL-
87-
88#include "../shell.h"-
89#include "shmbutil.h"-
90#include "stdc.h"-
91#include "bashgetopt.h"-
92#include "common.h"-
93-
94#if defined (PRI_MACROS_BROKEN)-
95# undef PRIdMAX-
96#endif-
97-
98#if !defined (PRIdMAX)-
99# if HAVE_LONG_LONG-
100# define PRIdMAX "lld"-
101# else-
102# define PRIdMAX "ld"-
103# endif-
104#endif-
105-
106#if !defined (errno)-
107extern int errno;-
108#endif-
109-
110#define PC(c) \-
111 do { \-
112 char b[2]; \-
113 tw++; \-
114 b[0] = c; b[1] = '\0'; \-
115 if (vflag) \-
116 vbadd (b, 1); \-
117 else \-
118 putchar (c); \-
119 QUIT; \-
120 } while (0)-
121-
122#define PF(f, func) \-
123 do { \-
124 int nw; \-
125 clearerr (stdout); \-
126 if (have_fieldwidth && have_precision) \-
127 nw = vflag ? vbprintf (f, fieldwidth, precision, func) : printf (f, fieldwidth, precision, func); \-
128 else if (have_fieldwidth) \-
129 nw = vflag ? vbprintf (f, fieldwidth, func) : printf (f, fieldwidth, func); \-
130 else if (have_precision) \-
131 nw = vflag ? vbprintf (f, precision, func) : printf (f, precision, func); \-
132 else \-
133 nw = vflag ? vbprintf (f, func) : printf (f, func); \-
134 tw += nw; \-
135 QUIT; \-
136 if (ferror (stdout)) \-
137 { \-
138 sh_wrerror (); \-
139 clearerr (stdout); \-
140 return (EXECUTION_FAILURE); \-
141 } \-
142 } while (0)-
143-
144/* We free the buffer used by mklong() if it's `too big'. */-
145#define PRETURN(value) \-
146 do \-
147 { \-
148 QUIT; \-
149 if (vflag) \-
150 { \-
151 SHELL_VAR *v; \-
152 v = bind_printf_variable (vname, vbuf, 0); \-
153 stupidly_hack_special_variables (vname); \-
154 if (v == 0 || readonly_p (v) || noassign_p (v)) \-
155 return (EXECUTION_FAILURE); \-
156 } \-
157 if (conv_bufsize > 4096 ) \-
158 { \-
159 free (conv_buf); \-
160 conv_bufsize = 0; \-
161 conv_buf = 0; \-
162 } \-
163 if (vbsize > 4096) \-
164 { \-
165 free (vbuf); \-
166 vbsize = 0; \-
167 vbuf = 0; \-
168 } \-
169 else if (vbuf) \-
170 vbuf[0] = 0; \-
171 if (ferror (stdout) == 0) \-
172 fflush (stdout); \-
173 QUIT; \-
174 if (ferror (stdout)) \-
175 { \-
176 sh_wrerror (); \-
177 clearerr (stdout); \-
178 return (EXECUTION_FAILURE); \-
179 } \-
180 return (value); \-
181 } \-
182 while (0)-
183-
184#define SKIP1 "#'-+ 0"-
185#define LENMODS "hjlLtz"-
186-
187extern time_t shell_start_time;-
188-
189#if !HAVE_ASPRINTF-
190extern int asprintf __P((char **, const char *, ...)) __attribute__((__format__ (printf, 2, 3)));-
191#endif-
192-
193#if !HAVE_VSNPRINTF-
194extern int vsnprintf __P((char *, size_t, const char *, va_list)) __attribute__((__format__ (printf, 3, 0)));-
195#endif-
196-
197static void printf_erange __P((char *));-
198static int printstr __P((char *, char *, int, int, int));-
199static int tescape __P((char *, char *, int *, int *));-
200static char *bexpand __P((char *, int, int *, int *));-
201static char *vbadd __P((char *, int));-
202static int vbprintf __P((const char *, ...)) __attribute__((__format__ (printf, 1, 2)));-
203static char *mklong __P((char *, char *, size_t));-
204static int getchr __P((void));-
205static char *getstr __P((void));-
206static int getint __P((void));-
207static intmax_t getintmax __P((void));-
208static uintmax_t getuintmax __P((void));-
209static SHELL_VAR *bind_printf_variable __P((char *, char *, int));-
210-
211#if defined (HAVE_LONG_DOUBLE) && HAVE_DECL_STRTOLD && !defined(STRTOLD_BROKEN)-
212typedef long double floatmax_t;-
213# define FLOATMAX_CONV "L"-
214# define strtofltmax strtold-
215#else-
216typedef double floatmax_t;-
217# define FLOATMAX_CONV ""-
218# define strtofltmax strtod-
219#endif-
220static floatmax_t getfloatmax __P((void));-
221-
222static intmax_t asciicode __P((void));-
223-
224static WORD_LIST *garglist;-
225static int retval;-
226static int conversion_error;-
227-
228/* printf -v var support */-
229static int vflag = 0;-
230static char *vbuf, *vname;-
231static size_t vbsize;-
232static int vblen;-
233-
234static intmax_t tw;-
235-
236static char *conv_buf;-
237static size_t conv_bufsize;-
238-
239int-
240printf_builtin (list)-
241 WORD_LIST *list;-
242{-
243 int ch, fieldwidth, precision;-
244 int have_fieldwidth, have_precision;-
245 char convch, thisch, nextch, *format, *modstart, *fmt, *start;-
246#if defined (HANDLE_MULTIBYTE)-
247 char mbch[25]; /* 25 > MB_LEN_MAX, plus can handle 4-byte UTF-8 and large Unicode characters*/-
248 int mbind, mblen;-
249#endif-
250-
251 conversion_error = 0;-
252 retval = EXECUTION_SUCCESS;-
253-
254 vflag = 0;-
255-
256 reset_internal_getopt ();-
257 while ((ch = internal_getopt (list, "v:")) != -1)
(ch = internal..., "v:")) != -1Description
TRUEevaluated 3025 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 29084 times by 1 test
Evaluated by:
  • Self test
3025-29084
258 {-
259 switch (ch)-
260 {-
261 case 'v':
executed 3025 times by 1 test: case 'v':
Executed by:
  • Self test
3025
262 vname = list_optarg;-
263#if defined (ARRAY_VARS)-
264 if (legal_identifier (vname) || valid_array_reference (vname, assoc_expand_once))
legal_identifier (vname)Description
TRUEevaluated 3022 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 3 times by 1 test
Evaluated by:
  • Self test
valid_array_re...c_expand_once)Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 1 time by 1 test
Evaluated by:
  • Self test
1-3022
265#else-
266 if (legal_identifier (vname))-
267#endif-
268 {-
269 vflag = 1;-
270 if (vbsize == 0)
vbsize == 0Description
TRUEevaluated 21 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 3003 times by 1 test
Evaluated by:
  • Self test
21-3003
271 vbuf = xmalloc (vbsize = 16);
executed 21 times by 1 test: vbuf = sh_xmalloc((vbsize = 16), "./printf.def", 271);
Executed by:
  • Self test
21
272 vblen = 0;-
273 if (vbuf)
vbufDescription
TRUEevaluated 3024 times by 1 test
Evaluated by:
  • Self test
FALSEnever evaluated
0-3024
274 vbuf[0] = 0;
executed 3024 times by 1 test: vbuf[0] = 0;
Executed by:
  • Self test
3024
275 }
executed 3024 times by 1 test: end of block
Executed by:
  • Self test
3024
276 else-
277 {-
278 sh_invalidid (vname);-
279 return (EX_USAGE);
executed 1 time by 1 test: return (258);
Executed by:
  • Self test
1
280 }-
281 break;
executed 3024 times by 1 test: break;
Executed by:
  • Self test
3024
282 CASE_HELPOPT;
never executed: return (258);
never executed: case -99:
0
283 default:
never executed: default:
0
284 builtin_usage ();-
285 return (EX_USAGE);
never executed: return (258);
0
286 }-
287 }-
288 list = loptend; /* skip over possible `--' */-
289-
290 if (list == 0)
list == 0Description
TRUEevaluated 8 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 29076 times by 1 test
Evaluated by:
  • Self test
8-29076
291 {-
292 builtin_usage ();-
293 return (EX_USAGE);
executed 8 times by 1 test: return (258);
Executed by:
  • Self test
8
294 }-
295-
296 /* Allow printf -v var "" to act like var="" */-
297 if (vflag && list->word->word && list->word->word[0] == '\0')
vflagDescription
TRUEevaluated 3024 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 26052 times by 1 test
Evaluated by:
  • Self test
list->word->wordDescription
TRUEevaluated 3024 times by 1 test
Evaluated by:
  • Self test
FALSEnever evaluated
list->word->word[0] == '\0'Description
TRUEevaluated 5 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 3019 times by 1 test
Evaluated by:
  • Self test
0-26052
298 {-
299 SHELL_VAR *v;-
300 v = bind_printf_variable (vname, "", 0);-
301 stupidly_hack_special_variables (vname);-
302 return ((v == 0 || readonly_p (v) || noassign_p (v)) ? EXECUTION_FAILURE : EXECUTION_SUCCESS);
executed 5 times by 1 test: return ((v == 0 || ((((v)->attributes) & (0x0000002))) || ((((v)->attributes) & (0x0004000)))) ? 1 : 0);
Executed by:
  • Self test
5
303 }-
304-
305 if (list->word->word == 0 || list->word->word[0] == '\0')
list->word->word == 0Description
TRUEnever evaluated
FALSEevaluated 29071 times by 1 test
Evaluated by:
  • Self test
list->word->word[0] == '\0'Description
TRUEevaluated 8 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 29063 times by 1 test
Evaluated by:
  • Self test
0-29071
306 return (EXECUTION_SUCCESS);
executed 8 times by 1 test: return (0);
Executed by:
  • Self test
8
307-
308 format = list->word->word;-
309 tw = 0;-
310-
311 garglist = list->next;-
312-
313 /* If the format string is empty after preprocessing, return immediately. */-
314 if (format == 0 || *format == 0)
format == 0Description
TRUEnever evaluated
FALSEevaluated 29063 times by 1 test
Evaluated by:
  • Self test
*format == 0Description
TRUEnever evaluated
FALSEevaluated 29063 times by 1 test
Evaluated by:
  • Self test
0-29063
315 return (EXECUTION_SUCCESS);
never executed: return (0);
0
316-
317 /* Basic algorithm is to scan the format string for conversion-
318 specifications -- once one is found, find out if the field-
319 width or precision is a '*'; if it is, gather up value. Note,-
320 format strings are reused as necessary to use up the provided-
321 arguments, arguments of zero/null string are provided to use-
322 up the format string. */-
323 do-
324 {-
325 tw = 0;-
326 /* find next format specification */-
327 for (fmt = format; *fmt; fmt++)
*fmtDescription
TRUEevaluated 114688 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 30011 times by 1 test
Evaluated by:
  • Self test
30011-114688
328 {-
329 precision = fieldwidth = 0;-
330 have_fieldwidth = have_precision = 0;-
331-
332 if (*fmt == '\\')
*fmt == '\\'Description
TRUEevaluated 14517 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 100171 times by 1 test
Evaluated by:
  • Self test
14517-100171
333 {-
334 fmt++;-
335 /* A NULL third argument to tescape means to bypass the-
336 special processing for arguments to %b. */-
337#if defined (HANDLE_MULTIBYTE)-
338 /* Accommodate possible use of \u or \U, which can result in-
339 multibyte characters */-
340 memset (mbch, '\0', sizeof (mbch));-
341 fmt += tescape (fmt, mbch, &mblen, (int *)NULL);-
342 for (mbind = 0; mbind < mblen; mbind++)
mbind < mblenDescription
TRUEevaluated 15520 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 14517 times by 1 test
Evaluated by:
  • Self test
14517-15520
343 PC (mbch[mbind]);
executed 3984 times by 1 test: vbadd (b, 1);
Executed by:
  • Self test
executed 11536 times by 1 test: putchar (mbch[mbind]);
Executed by:
  • Self test
never executed: termsig_handler (terminating_signal);
never executed: throw_to_top_level ();
executed 15520 times by 1 test: end of block
Executed by:
  • Self test
terminating_signalDescription
TRUEnever evaluated
FALSEevaluated 15520 times by 1 test
Evaluated by:
  • Self test
interrupt_stateDescription
TRUEnever evaluated
FALSEevaluated 15520 times by 1 test
Evaluated by:
  • Self test
vflagDescription
TRUEevaluated 3984 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 11536 times by 1 test
Evaluated by:
  • Self test
0-15520
344#else-
345 fmt += tescape (fmt, &nextch, (int *)NULL, (int *)NULL);-
346 PC (nextch);-
347#endif-
348 fmt--; /* for loop will increment it for us again */-
349 continue;
executed 14517 times by 1 test: continue;
Executed by:
  • Self test
14517
350 }-
351-
352 if (*fmt != '%')
*fmt != '%'Description
TRUEevaluated 80977 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 19194 times by 1 test
Evaluated by:
  • Self test
19194-80977
353 {-
354 PC (*fmt);
executed 1850 times by 1 test: vbadd (b, 1);
Executed by:
  • Self test
executed 79127 times by 1 test: putchar (*fmt);
Executed by:
  • Self test
never executed: termsig_handler (terminating_signal);
never executed: throw_to_top_level ();
terminating_signalDescription
TRUEnever evaluated
FALSEevaluated 80977 times by 1 test
Evaluated by:
  • Self test
interrupt_stateDescription
TRUEnever evaluated
FALSEevaluated 80977 times by 1 test
Evaluated by:
  • Self test
vflagDescription
TRUEevaluated 1850 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 79127 times by 1 test
Evaluated by:
  • Self test
0-80977
355 continue;
executed 80977 times by 1 test: continue;
Executed by:
  • Self test
80977
356 }-
357-
358 /* ASSERT(*fmt == '%') */-
359 start = fmt++;-
360-
361 if (*fmt == '%') /* %% prints a % */
*fmt == '%'Description
TRUEevaluated 7 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 19187 times by 1 test
Evaluated by:
  • Self test
7-19187
362 {-
363 PC ('%');
executed 3 times by 1 test: vbadd (b, 1);
Executed by:
  • Self test
executed 4 times by 1 test: putchar ('%');
Executed by:
  • Self test
never executed: termsig_handler (terminating_signal);
never executed: throw_to_top_level ();
terminating_signalDescription
TRUEnever evaluated
FALSEevaluated 7 times by 1 test
Evaluated by:
  • Self test
interrupt_stateDescription
TRUEnever evaluated
FALSEevaluated 7 times by 1 test
Evaluated by:
  • Self test
vflagDescription
TRUEevaluated 3 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 4 times by 1 test
Evaluated by:
  • Self test
0-7
364 continue;
executed 7 times by 1 test: continue;
Executed by:
  • Self test
7
365 }-
366-
367 /* found format specification, skip to field width */-
368 for (; *fmt && strchr(SKIP1, *fmt); ++fmt)
*fmtDescription
TRUEevaluated 326974 times by 1 test
Evaluated by:
  • Self test
FALSEnever evaluated
(__extension__... 0" , *fmt )))Description
TRUEevaluated 307787 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 19187 times by 1 test
Evaluated by:
  • Self test
__builtin_constant_p ( *fmt )Description
TRUEnever evaluated
FALSEevaluated 326974 times by 1 test
Evaluated by:
  • Self test
!__builtin_con...p ( "#'-+ 0" )Description
TRUEnever evaluated
FALSEnever evaluated
( *fmt ) == '\0'Description
TRUEnever evaluated
FALSEnever evaluated
0-326974
369 ;
executed 307787 times by 1 test: ;
Executed by:
  • Self test
307787
370-
371 /* Skip optional field width. */-
372 if (*fmt == '*')
*fmt == '*'Description
TRUEevaluated 50 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 19137 times by 1 test
Evaluated by:
  • Self test
50-19137
373 {-
374 fmt++;-
375 have_fieldwidth = 1;-
376 fieldwidth = getint ();-
377 }
executed 50 times by 1 test: end of block
Executed by:
  • Self test
50
378 else-
379 while (DIGIT (*fmt))
(*fmt) >= '0'Description
TRUEevaluated 25749 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 200 times by 1 test
Evaluated by:
  • Self test
(*fmt) <= '9'Description
TRUEevaluated 6812 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 18937 times by 1 test
Evaluated by:
  • Self test
200-25749
380 fmt++;
executed 6812 times by 1 test: fmt++;
Executed by:
  • Self test
6812
381-
382 /* Skip optional '.' and precision */-
383 if (*fmt == '.')
*fmt == '.'Description
TRUEevaluated 203 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 18984 times by 1 test
Evaluated by:
  • Self test
203-18984
384 {-
385 ++fmt;-
386 if (*fmt == '*')
*fmt == '*'Description
TRUEevaluated 30 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 173 times by 1 test
Evaluated by:
  • Self test
30-173
387 {-
388 fmt++;-
389 have_precision = 1;-
390 precision = getint ();-
391 }
executed 30 times by 1 test: end of block
Executed by:
  • Self test
30
392 else-
393 {-
394 /* Negative precisions are allowed but treated as if the-
395 precision were missing; I would like to allow a leading-
396 `+' in the precision number as an extension, but lots-
397 of asprintf/fprintf implementations get this wrong. */-
398#if 0-
399 if (*fmt == '-' || *fmt == '+')-
400#else-
401 if (*fmt == '-')
*fmt == '-'Description
TRUEnever evaluated
FALSEevaluated 173 times by 1 test
Evaluated by:
  • Self test
0-173
402#endif-
403 fmt++;
never executed: fmt++;
0
404 while (DIGIT (*fmt))
(*fmt) >= '0'Description
TRUEevaluated 356 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 2 times by 1 test
Evaluated by:
  • Self test
(*fmt) <= '9'Description
TRUEevaluated 185 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 171 times by 1 test
Evaluated by:
  • Self test
2-356
405 fmt++;
executed 185 times by 1 test: fmt++;
Executed by:
  • Self test
185
406 }
executed 173 times by 1 test: end of block
Executed by:
  • Self test
173
407 }-
408-
409 /* skip possible format modifiers */-
410 modstart = fmt;-
411 while (*fmt && strchr (LENMODS, *fmt))
*fmtDescription
TRUEevaluated 19214 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 5 times by 1 test
Evaluated by:
  • Self test
(__extension__...tz" , *fmt )))Description
TRUEevaluated 32 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 19182 times by 1 test
Evaluated by:
  • Self test
__builtin_constant_p ( *fmt )Description
TRUEnever evaluated
FALSEevaluated 19214 times by 1 test
Evaluated by:
  • Self test
!__builtin_con...p ( "hjlLtz" )Description
TRUEnever evaluated
FALSEnever evaluated
( *fmt ) == '\0'Description
TRUEnever evaluated
FALSEnever evaluated
0-19214
412 fmt++;
executed 32 times by 1 test: fmt++;
Executed by:
  • Self test
32
413 -
414 if (*fmt == 0)
*fmt == 0Description
TRUEevaluated 5 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 19182 times by 1 test
Evaluated by:
  • Self test
5-19182
415 {-
416 builtin_error (_("`%s': missing format character"), start);-
417 PRETURN (EXECUTION_FAILURE);
never executed: termsig_handler (terminating_signal);
never executed: throw_to_top_level ();
never executed: return (1);
executed 2 times by 1 test: end of block
Executed by:
  • Self test
never executed: end of block
never executed: end of block
executed 5 times by 1 test: vbuf[0] = 0;
Executed by:
  • Self test
executed 5 times by 1 test: fflush ( stdout );
Executed by:
  • Self test
never executed: termsig_handler (terminating_signal);
never executed: throw_to_top_level ();
never executed: return (1);
executed 5 times by 1 test: return (1);
Executed by:
  • Self test
terminating_signalDescription
TRUEnever evaluated
FALSEevaluated 5 times by 1 test
Evaluated by:
  • Self test
interrupt_stateDescription
TRUEnever evaluated
FALSEevaluated 5 times by 1 test
Evaluated by:
  • Self test
vflagDescription
TRUEevaluated 2 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 3 times by 1 test
Evaluated by:
  • Self test
conv_bufsize > 4096Description
TRUEnever evaluated
FALSEevaluated 5 times by 1 test
Evaluated by:
  • Self test
vbufDescription
TRUEevaluated 5 times by 1 test
Evaluated by:
  • Self test
FALSEnever evaluated
ferror ( stdout ) == 0Description
TRUEevaluated 5 times by 1 test
Evaluated by:
  • Self test
FALSEnever evaluated
terminating_signalDescription
TRUEnever evaluated
FALSEevaluated 5 times by 1 test
Evaluated by:
  • Self test
interrupt_stateDescription
TRUEnever evaluated
FALSEevaluated 5 times by 1 test
Evaluated by:
  • Self test
ferror ( stdout )Description
TRUEnever evaluated
FALSEevaluated 5 times by 1 test
Evaluated by:
  • Self test
vbsize > 4096Description
TRUEnever evaluated
FALSEevaluated 5 times by 1 test
Evaluated by:
  • Self test
v == 0Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • Self test
((((v)->attrib... (0x0000002)))Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • Self test
((((v)->attrib... (0x0004000)))Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • Self test
0-5
418 }-
419-
420 convch = *fmt;-
421 thisch = modstart[0];-
422 nextch = modstart[1];-
423 modstart[0] = convch;-
424 modstart[1] = '\0';-
425-
426 QUIT;
never executed: termsig_handler (terminating_signal);
never executed: throw_to_top_level ();
terminating_signalDescription
TRUEnever evaluated
FALSEevaluated 19182 times by 1 test
Evaluated by:
  • Self test
interrupt_stateDescription
TRUEnever evaluated
FALSEevaluated 19182 times by 1 test
Evaluated by:
  • Self test
0-19182
427 switch(convch)-
428 {-
429 case 'c':
executed 7 times by 1 test: case 'c':
Executed by:
  • Self test
7
430 {-
431 char p;-
432-
433 p = getchr ();-
434 PF(start, p);
never executed: nw = vflag ? vbprintf (start, fieldwidth, precision, p) : printf (start, fieldwidth, precision, p);
never executed: nw = vflag ? vbprintf (start, fieldwidth, p) : printf (start, fieldwidth, p);
never executed: nw = vflag ? vbprintf (start, precision, p) : printf (start, precision, p);
executed 7 times by 1 test: nw = vflag ? vbprintf (start, p) : printf (start, p);
Executed by:
  • Self test
never executed: termsig_handler (terminating_signal);
never executed: throw_to_top_level ();
never executed: return (1);
terminating_signalDescription
TRUEnever evaluated
FALSEevaluated 7 times by 1 test
Evaluated by:
  • Self test
interrupt_stateDescription
TRUEnever evaluated
FALSEevaluated 7 times by 1 test
Evaluated by:
  • Self test
ferror ( stdout )Description
TRUEnever evaluated
FALSEevaluated 7 times by 1 test
Evaluated by:
  • Self test
have_fieldwidthDescription
TRUEnever evaluated
FALSEevaluated 7 times by 1 test
Evaluated by:
  • Self test
have_precisionDescription
TRUEnever evaluated
FALSEevaluated 7 times by 1 test
Evaluated by:
  • Self test
vflagDescription
TRUEnever evaluated
FALSEnever evaluated
vflagDescription
TRUEnever evaluated
FALSEnever evaluated
vflagDescription
TRUEnever evaluated
FALSEnever evaluated
vflagDescription
TRUEevaluated 3 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 4 times by 1 test
Evaluated by:
  • Self test
have_fieldwidthDescription
TRUEnever evaluated
FALSEevaluated 7 times by 1 test
Evaluated by:
  • Self test
have_precisionDescription
TRUEnever evaluated
FALSEnever evaluated
0-7
435 break;
executed 7 times by 1 test: break;
Executed by:
  • Self test
7
436 }-
437-
438 case 's':
executed 11238 times by 1 test: case 's':
Executed by:
  • Self test
11238
439 {-
440 char *p;-
441-
442 p = getstr ();-
443 PF(start, p);
executed 5 times by 1 test: nw = vflag ? vbprintf (start, fieldwidth, precision, p) : printf (start, fieldwidth, precision, p);
Executed by:
  • Self test
executed 5 times by 1 test: nw = vflag ? vbprintf (start, fieldwidth, p) : printf (start, fieldwidth, p);
Executed by:
  • Self test
executed 5 times by 1 test: nw = vflag ? vbprintf (start, precision, p) : printf (start, precision, p);
Executed by:
  • Self test
executed 11223 times by 1 test: nw = vflag ? vbprintf (start, p) : printf (start, p);
Executed by:
  • Self test
never executed: termsig_handler (terminating_signal);
never executed: throw_to_top_level ();
never executed: return (1);
terminating_signalDescription
TRUEnever evaluated
FALSEevaluated 11238 times by 1 test
Evaluated by:
  • Self test
interrupt_stateDescription
TRUEnever evaluated
FALSEevaluated 11238 times by 1 test
Evaluated by:
  • Self test
ferror ( stdout )Description
TRUEnever evaluated
FALSEevaluated 11238 times by 1 test
Evaluated by:
  • Self test
have_fieldwidthDescription
TRUEevaluated 5 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 11228 times by 1 test
Evaluated by:
  • Self test
have_precisionDescription
TRUEevaluated 5 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 11223 times by 1 test
Evaluated by:
  • Self test
vflagDescription
TRUEevaluated 2 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 3 times by 1 test
Evaluated by:
  • Self test
vflagDescription
TRUEevaluated 2 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 3 times by 1 test
Evaluated by:
  • Self test
vflagDescription
TRUEevaluated 2 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 3 times by 1 test
Evaluated by:
  • Self test
vflagDescription
TRUEevaluated 47 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 11176 times by 1 test
Evaluated by:
  • Self test
have_fieldwidthDescription
TRUEevaluated 10 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 11228 times by 1 test
Evaluated by:
  • Self test
have_precisionDescription
TRUEevaluated 5 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 5 times by 1 test
Evaluated by:
  • Self test
0-11238
444 break;
executed 11238 times by 1 test: break;
Executed by:
  • Self test
11238
445 }-
446-
447 case '(':
executed 19 times by 1 test: case '(':
Executed by:
  • Self test
19
448 {-
449 char *timefmt, timebuf[128], *t;-
450 int n;-
451 intmax_t arg;-
452 time_t secs;-
453 struct tm *tm;-
454-
455 modstart[1] = nextch; /* restore char after left paren */-
456 timefmt = xmalloc (strlen (fmt) + 3);-
457 fmt++; /* skip over left paren */-
458 for (t = timefmt, n = 1; *fmt; )
*fmtDescription
TRUEevaluated 186 times by 1 test
Evaluated by:
  • Self test
FALSEnever evaluated
0-186
459 {-
460 if (*fmt == '(')
*fmt == '('Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • Self test
FALSEevaluated 185 times by 1 test
Evaluated by:
  • Self test
1-185
461 n++;
executed 1 time by 1 test: n++;
Executed by:
  • Self test
1
462 else if (*fmt == ')')
*fmt == ')'Description
TRUEevaluated 20 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 165 times by 1 test
Evaluated by:
  • Self test
20-165
463 n--;
executed 20 times by 1 test: n--;
Executed by:
  • Self test
20
464 if (n == 0)
n == 0Description
TRUEevaluated 19 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 167 times by 1 test
Evaluated by:
  • Self test
19-167
465 break;
executed 19 times by 1 test: break;
Executed by:
  • Self test
19
466 *t++ = *fmt++;-
467 }
executed 167 times by 1 test: end of block
Executed by:
  • Self test
167
468 *t = '\0';-
469 if (*++fmt != 'T')
*++fmt != 'T'Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 17 times by 1 test
Evaluated by:
  • Self test
2-17
470 {-
471 builtin_warning (_("`%c': invalid time format specification"), *fmt);-
472 fmt = start;-
473 free (timefmt);-
474 PC (*fmt);
never executed: vbadd (b, 1);
executed 2 times by 1 test: putchar (*fmt);
Executed by:
  • Self test
never executed: termsig_handler (terminating_signal);
never executed: throw_to_top_level ();
terminating_signalDescription
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • Self test
interrupt_stateDescription
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • Self test
vflagDescription
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • Self test
0-2
475 continue;
executed 2 times by 1 test: continue;
Executed by:
  • Self test
2
476 }-
477 if (timefmt[0] == '\0')
timefmt[0] == '\0'Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 15 times by 1 test
Evaluated by:
  • Self test
2-15
478 {-
479 timefmt[0] = '%';-
480 timefmt[1] = 'X'; /* locale-specific current time - should we use `+'? */-
481 timefmt[2] = '\0';-
482 }
executed 2 times by 1 test: end of block
Executed by:
  • Self test
2
483 /* argument is seconds since the epoch with special -1 and -2 */-
484 /* default argument is equivalent to -1; special case */-
485 arg = garglist ? getintmax () : -1;
garglistDescription
TRUEevaluated 16 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 1 time by 1 test
Evaluated by:
  • Self test
1-16
486 if (arg == -1)
arg == -1Description
TRUEevaluated 3 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 14 times by 1 test
Evaluated by:
  • Self test
3-14
487 secs = NOW; /* roughly date +%s */
executed 3 times by 1 test: secs = ((time_t) time ((time_t *) 0));
Executed by:
  • Self test
3
488 else if (arg == -2)
arg == -2Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • Self test
FALSEevaluated 13 times by 1 test
Evaluated by:
  • Self test
1-13
489 secs = shell_start_time; /* roughly $SECONDS */
executed 1 time by 1 test: secs = shell_start_time;
Executed by:
  • Self test
1
490 else-
491 secs = arg;
executed 13 times by 1 test: secs = arg;
Executed by:
  • Self test
13
492#if defined (HAVE_TZSET)-
493 sv_tz ("TZ"); /* XXX -- just make sure */-
494#endif-
495 tm = localtime (&secs);-
496 if (tm == 0)
tm == 0Description
TRUEnever evaluated
FALSEevaluated 17 times by 1 test
Evaluated by:
  • Self test
0-17
497 {-
498 secs = 0;-
499 tm = localtime (&secs);-
500 }
never executed: end of block
0
501 n = tm ? strftime (timebuf, sizeof (timebuf), timefmt, tm) : 0;
tmDescription
TRUEevaluated 17 times by 1 test
Evaluated by:
  • Self test
FALSEnever evaluated
0-17
502 free (timefmt);-
503 if (n == 0)
n == 0Description
TRUEnever evaluated
FALSEevaluated 17 times by 1 test
Evaluated by:
  • Self test
0-17
504 timebuf[0] = '\0';
never executed: timebuf[0] = '\0';
0
505 else-
506 timebuf[sizeof(timebuf) - 1] = '\0';
executed 17 times by 1 test: timebuf[sizeof(timebuf) - 1] = '\0';
Executed by:
  • Self test
17
507 /* convert to %s format that preserves fieldwidth and precision */-
508 modstart[0] = 's';-
509 modstart[1] = '\0';-
510 n = printstr (start, timebuf, strlen (timebuf), fieldwidth, precision); /* XXX - %s for now */-
511 if (n < 0)
n < 0Description
TRUEnever evaluated
FALSEevaluated 17 times by 1 test
Evaluated by:
  • Self test
0-17
512 {-
513 if (ferror (stdout) == 0)
ferror ( stdout ) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
514 {-
515 sh_wrerror ();-
516 clearerr (stdout);-
517 }
never executed: end of block
0
518 PRETURN (EXECUTION_FAILURE);
never executed: termsig_handler (terminating_signal);
never executed: throw_to_top_level ();
never executed: return (1);
never executed: end of block
never executed: end of block
never executed: end of block
never executed: vbuf[0] = 0;
never executed: fflush ( stdout );
never executed: termsig_handler (terminating_signal);
never executed: throw_to_top_level ();
never executed: return (1);
never executed: return (1);
terminating_signalDescription
TRUEnever evaluated
FALSEnever evaluated
interrupt_stateDescription
TRUEnever evaluated
FALSEnever evaluated
vflagDescription
TRUEnever evaluated
FALSEnever evaluated
conv_bufsize > 4096Description
TRUEnever evaluated
FALSEnever evaluated
vbufDescription
TRUEnever evaluated
FALSEnever evaluated
ferror ( stdout ) == 0Description
TRUEnever evaluated
FALSEnever evaluated
terminating_signalDescription
TRUEnever evaluated
FALSEnever evaluated
interrupt_stateDescription
TRUEnever evaluated
FALSEnever evaluated
ferror ( stdout )Description
TRUEnever evaluated
FALSEnever evaluated
vbsize > 4096Description
TRUEnever evaluated
FALSEnever evaluated
v == 0Description
TRUEnever evaluated
FALSEnever evaluated
((((v)->attrib... (0x0000002)))Description
TRUEnever evaluated
FALSEnever evaluated
((((v)->attrib... (0x0004000)))Description
TRUEnever evaluated
FALSEnever evaluated
0
519 }-
520 break;
executed 17 times by 1 test: break;
Executed by:
  • Self test
17
521 }-
522-
523 case 'n':
executed 3 times by 1 test: case 'n':
Executed by:
  • Self test
3
524 {-
525 char *var;-
526-
527 var = getstr ();-
528 if (var && *var)
varDescription
TRUEevaluated 3 times by 1 test
Evaluated by:
  • Self test
FALSEnever evaluated
*varDescription
TRUEevaluated 3 times by 1 test
Evaluated by:
  • Self test
FALSEnever evaluated
0-3
529 {-
530 if (legal_identifier (var))
legal_identifier (var)Description
TRUEevaluated 3 times by 1 test
Evaluated by:
  • Self test
FALSEnever evaluated
0-3
531 bind_var_to_int (var, tw);
executed 3 times by 1 test: bind_var_to_int (var, tw);
Executed by:
  • Self test
3
532 else-
533 {-
534 sh_invalidid (var);-
535 PRETURN (EXECUTION_FAILURE);
never executed: termsig_handler (terminating_signal);
never executed: throw_to_top_level ();
never executed: return (1);
never executed: end of block
never executed: end of block
never executed: end of block
never executed: vbuf[0] = 0;
never executed: fflush ( stdout );
never executed: termsig_handler (terminating_signal);
never executed: throw_to_top_level ();
never executed: return (1);
never executed: return (1);
terminating_signalDescription
TRUEnever evaluated
FALSEnever evaluated
interrupt_stateDescription
TRUEnever evaluated
FALSEnever evaluated
vflagDescription
TRUEnever evaluated
FALSEnever evaluated
conv_bufsize > 4096Description
TRUEnever evaluated
FALSEnever evaluated
vbufDescription
TRUEnever evaluated
FALSEnever evaluated
ferror ( stdout ) == 0Description
TRUEnever evaluated
FALSEnever evaluated
terminating_signalDescription
TRUEnever evaluated
FALSEnever evaluated
interrupt_stateDescription
TRUEnever evaluated
FALSEnever evaluated
ferror ( stdout )Description
TRUEnever evaluated
FALSEnever evaluated
vbsize > 4096Description
TRUEnever evaluated
FALSEnever evaluated
v == 0Description
TRUEnever evaluated
FALSEnever evaluated
((((v)->attrib... (0x0000002)))Description
TRUEnever evaluated
FALSEnever evaluated
((((v)->attrib... (0x0004000)))Description
TRUEnever evaluated
FALSEnever evaluated
0
536 }-
537 }-
538 break;
executed 3 times by 1 test: break;
Executed by:
  • Self test
3
539 }-
540-
541 case 'b': /* expand escapes in argument */
executed 180 times by 1 test: case 'b':
Executed by:
  • Self test
180
542 {-
543 char *p, *xp;-
544 int rlen, r;-
545-
546 p = getstr ();-
547 ch = rlen = r = 0;-
548 xp = bexpand (p, strlen (p), &ch, &rlen);-
549-
550 if (xp)
xpDescription
TRUEevaluated 180 times by 1 test
Evaluated by:
  • Self test
FALSEnever evaluated
0-180
551 {-
552 /* Have to use printstr because of possible NUL bytes-
553 in XP -- printf does not handle that well. */-
554 r = printstr (start, xp, rlen, fieldwidth, precision);-
555 if (r < 0)
r < 0Description
TRUEnever evaluated
FALSEevaluated 180 times by 1 test
Evaluated by:
  • Self test
0-180
556 {-
557 if (ferror (stdout) == 0)
ferror ( stdout ) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
558 {-
559 sh_wrerror ();-
560 clearerr (stdout);-
561 }
never executed: end of block
0
562 retval = EXECUTION_FAILURE;-
563 }
never executed: end of block
0
564 free (xp);-
565 }
executed 180 times by 1 test: end of block
Executed by:
  • Self test
180
566-
567 if (ch || r < 0)
chDescription
TRUEevaluated 5 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 175 times by 1 test
Evaluated by:
  • Self test
r < 0Description
TRUEnever evaluated
FALSEevaluated 175 times by 1 test
Evaluated by:
  • Self test
0-175
568 PRETURN (retval);
never executed: termsig_handler (terminating_signal);
never executed: throw_to_top_level ();
never executed: return (1);
executed 2 times by 1 test: end of block
Executed by:
  • Self test
never executed: end of block
never executed: end of block
executed 5 times by 1 test: vbuf[0] = 0;
Executed by:
  • Self test
executed 5 times by 1 test: fflush ( stdout );
Executed by:
  • Self test
never executed: termsig_handler (terminating_signal);
never executed: throw_to_top_level ();
never executed: return (1);
executed 5 times by 1 test: return (retval);
Executed by:
  • Self test
never executed: end of block
terminating_signalDescription
TRUEnever evaluated
FALSEevaluated 5 times by 1 test
Evaluated by:
  • Self test
interrupt_stateDescription
TRUEnever evaluated
FALSEevaluated 5 times by 1 test
Evaluated by:
  • Self test
vflagDescription
TRUEevaluated 2 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 3 times by 1 test
Evaluated by:
  • Self test
conv_bufsize > 4096Description
TRUEnever evaluated
FALSEevaluated 5 times by 1 test
Evaluated by:
  • Self test
vbufDescription
TRUEevaluated 5 times by 1 test
Evaluated by:
  • Self test
FALSEnever evaluated
ferror ( stdout ) == 0Description
TRUEevaluated 5 times by 1 test
Evaluated by:
  • Self test
FALSEnever evaluated
terminating_signalDescription
TRUEnever evaluated
FALSEevaluated 5 times by 1 test
Evaluated by:
  • Self test
interrupt_stateDescription
TRUEnever evaluated
FALSEevaluated 5 times by 1 test
Evaluated by:
  • Self test
ferror ( stdout )Description
TRUEnever evaluated
FALSEevaluated 5 times by 1 test
Evaluated by:
  • Self test
vbsize > 4096Description
TRUEnever evaluated
FALSEevaluated 5 times by 1 test
Evaluated by:
  • Self test
v == 0Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • Self test
((((v)->attrib... (0x0000002)))Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • Self test
((((v)->attrib... (0x0004000)))Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • Self test
0-5
569 break;
executed 175 times by 1 test: break;
Executed by:
  • Self test
175
570 }-
571-
572 case 'q': /* print with shell quoting */
executed 722 times by 1 test: case 'q':
Executed by:
  • Self test
722
573 {-
574 char *p, *xp;-
575 int r;-
576-
577 r = 0;-
578 p = getstr ();-
579 if (p && *p == 0) /* XXX - getstr never returns null */
pDescription
TRUEevaluated 722 times by 1 test
Evaluated by:
  • Self test
FALSEnever evaluated
*p == 0Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 718 times by 1 test
Evaluated by:
  • Self test
0-722
580 xp = savestring ("''");
executed 4 times by 1 test: xp = (char *)strcpy (sh_xmalloc((1 + strlen ("''")), "./printf.def", 580), ("''"));
Executed by:
  • Self test
4
581 else if (ansic_shouldquote (p))
ansic_shouldquote (p)Description
TRUEevaluated 177 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 541 times by 1 test
Evaluated by:
  • Self test
177-541
582 xp = ansic_quote (p, 0, (int *)0);
executed 177 times by 1 test: xp = ansic_quote (p, 0, (int *)0);
Executed by:
  • Self test
177
583 else-
584 xp = sh_backslash_quote (p, 0, 3);
executed 541 times by 1 test: xp = sh_backslash_quote (p, 0, 3);
Executed by:
  • Self test
541
585 if (xp)
xpDescription
TRUEevaluated 722 times by 1 test
Evaluated by:
  • Self test
FALSEnever evaluated
0-722
586 {-
587 /* Use printstr to get fieldwidth and precision right. */-
588 r = printstr (start, xp, strlen (xp), fieldwidth, precision);-
589 if (r < 0)
r < 0Description
TRUEnever evaluated
FALSEevaluated 722 times by 1 test
Evaluated by:
  • Self test
0-722
590 {-
591 sh_wrerror ();-
592 clearerr (stdout);-
593 }
never executed: end of block
0
594 free (xp);-
595 }
executed 722 times by 1 test: end of block
Executed by:
  • Self test
722
596-
597 if (r < 0)
r < 0Description
TRUEnever evaluated
FALSEevaluated 722 times by 1 test
Evaluated by:
  • Self test
0-722
598 PRETURN (EXECUTION_FAILURE);
never executed: termsig_handler (terminating_signal);
never executed: throw_to_top_level ();
never executed: return (1);
never executed: end of block
never executed: end of block
never executed: end of block
never executed: vbuf[0] = 0;
never executed: fflush ( stdout );
never executed: termsig_handler (terminating_signal);
never executed: throw_to_top_level ();
never executed: return (1);
never executed: return (1);
never executed: end of block
terminating_signalDescription
TRUEnever evaluated
FALSEnever evaluated
interrupt_stateDescription
TRUEnever evaluated
FALSEnever evaluated
vflagDescription
TRUEnever evaluated
FALSEnever evaluated
conv_bufsize > 4096Description
TRUEnever evaluated
FALSEnever evaluated
vbufDescription
TRUEnever evaluated
FALSEnever evaluated
ferror ( stdout ) == 0Description
TRUEnever evaluated
FALSEnever evaluated
terminating_signalDescription
TRUEnever evaluated
FALSEnever evaluated
interrupt_stateDescription
TRUEnever evaluated
FALSEnever evaluated
ferror ( stdout )Description
TRUEnever evaluated
FALSEnever evaluated
vbsize > 4096Description
TRUEnever evaluated
FALSEnever evaluated
v == 0Description
TRUEnever evaluated
FALSEnever evaluated
((((v)->attrib... (0x0000002)))Description
TRUEnever evaluated
FALSEnever evaluated
((((v)->attrib... (0x0004000)))Description
TRUEnever evaluated
FALSEnever evaluated
0
599 break;
executed 722 times by 1 test: break;
Executed by:
  • Self test
722
600 }-
601-
602 case 'd':
executed 5151 times by 1 test: case 'd':
Executed by:
  • Self test
5151
603 case 'i':
executed 24 times by 1 test: case 'i':
Executed by:
  • Self test
24
604 {-
605 char *f;-
606 long p;-
607 intmax_t pp;-
608-
609 p = pp = getintmax ();-
610 if (p != pp)
p != ppDescription
TRUEnever evaluated
FALSEevaluated 5175 times by 1 test
Evaluated by:
  • Self test
0-5175
611 {-
612 f = mklong (start, PRIdMAX, sizeof (PRIdMAX) - 2);-
613 PF (f, pp);
never executed: nw = vflag ? vbprintf (f, fieldwidth, precision, pp) : printf (f, fieldwidth, precision, pp);
never executed: nw = vflag ? vbprintf (f, fieldwidth, pp) : printf (f, fieldwidth, pp);
never executed: nw = vflag ? vbprintf (f, precision, pp) : printf (f, precision, pp);
never executed: nw = vflag ? vbprintf (f, pp) : printf (f, pp);
never executed: termsig_handler (terminating_signal);
never executed: throw_to_top_level ();
never executed: return (1);
terminating_signalDescription
TRUEnever evaluated
FALSEnever evaluated
interrupt_stateDescription
TRUEnever evaluated
FALSEnever evaluated
ferror ( stdout )Description
TRUEnever evaluated
FALSEnever evaluated
have_fieldwidthDescription
TRUEnever evaluated
FALSEnever evaluated
have_precisionDescription
TRUEnever evaluated
FALSEnever evaluated
vflagDescription
TRUEnever evaluated
FALSEnever evaluated
vflagDescription
TRUEnever evaluated
FALSEnever evaluated
vflagDescription
TRUEnever evaluated
FALSEnever evaluated
vflagDescription
TRUEnever evaluated
FALSEnever evaluated
have_fieldwidthDescription
TRUEnever evaluated
FALSEnever evaluated
have_precisionDescription
TRUEnever evaluated
FALSEnever evaluated
0
614 }
never executed: end of block
0
615 else-
616 {-
617 /* Optimize the common case where the integer fits-
618 in "long". This also works around some long-
619 long and/or intmax_t library bugs in the common-
620 case, e.g. glibc 2.2 x86. */-
621 f = mklong (start, "l", 1);-
622 PF (f, p);
never executed: nw = vflag ? vbprintf (f, fieldwidth, precision, p) : printf (f, fieldwidth, precision, p);
executed 10 times by 1 test: nw = vflag ? vbprintf (f, fieldwidth, p) : printf (f, fieldwidth, p);
Executed by:
  • Self test
never executed: nw = vflag ? vbprintf (f, precision, p) : printf (f, precision, p);
executed 5165 times by 1 test: nw = vflag ? vbprintf (f, p) : printf (f, p);
Executed by:
  • Self test
never executed: termsig_handler (terminating_signal);
never executed: throw_to_top_level ();
never executed: return (1);
terminating_signalDescription
TRUEnever evaluated
FALSEevaluated 5175 times by 1 test
Evaluated by:
  • Self test
interrupt_stateDescription
TRUEnever evaluated
FALSEevaluated 5175 times by 1 test
Evaluated by:
  • Self test
ferror ( stdout )Description
TRUEnever evaluated
FALSEevaluated 5175 times by 1 test
Evaluated by:
  • Self test
have_fieldwidthDescription
TRUEevaluated 10 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 5165 times by 1 test
Evaluated by:
  • Self test
have_precisionDescription
TRUEnever evaluated
FALSEevaluated 5165 times by 1 test
Evaluated by:
  • Self test
vflagDescription
TRUEnever evaluated
FALSEnever evaluated
vflagDescription
TRUEevaluated 4 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 6 times by 1 test
Evaluated by:
  • Self test
vflagDescription
TRUEnever evaluated
FALSEnever evaluated
vflagDescription
TRUEevaluated 68 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 5097 times by 1 test
Evaluated by:
  • Self test
have_fieldwidthDescription
TRUEevaluated 10 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 5165 times by 1 test
Evaluated by:
  • Self test
have_precisionDescription
TRUEnever evaluated
FALSEevaluated 10 times by 1 test
Evaluated by:
  • Self test
0-5175
623 }
executed 5175 times by 1 test: end of block
Executed by:
  • Self test
5175
624 break;
executed 5175 times by 1 test: break;
Executed by:
  • Self test
5175
625 }-
626-
627 case 'o':
executed 37 times by 1 test: case 'o':
Executed by:
  • Self test
37
628 case 'u':
executed 30 times by 1 test: case 'u':
Executed by:
  • Self test
30
629 case 'x':
executed 1442 times by 1 test: case 'x':
Executed by:
  • Self test
1442
630 case 'X':
executed 154 times by 1 test: case 'X':
Executed by:
  • Self test
154
631 {-
632 char *f;-
633 unsigned long p;-
634 uintmax_t pp;-
635-
636 p = pp = getuintmax ();-
637 if (p != pp)
p != ppDescription
TRUEnever evaluated
FALSEevaluated 1663 times by 1 test
Evaluated by:
  • Self test
0-1663
638 {-
639 f = mklong (start, PRIdMAX, sizeof (PRIdMAX) - 2);-
640 PF (f, pp);
never executed: nw = vflag ? vbprintf (f, fieldwidth, precision, pp) : printf (f, fieldwidth, precision, pp);
never executed: nw = vflag ? vbprintf (f, fieldwidth, pp) : printf (f, fieldwidth, pp);
never executed: nw = vflag ? vbprintf (f, precision, pp) : printf (f, precision, pp);
never executed: nw = vflag ? vbprintf (f, pp) : printf (f, pp);
never executed: termsig_handler (terminating_signal);
never executed: throw_to_top_level ();
never executed: return (1);
terminating_signalDescription
TRUEnever evaluated
FALSEnever evaluated
interrupt_stateDescription
TRUEnever evaluated
FALSEnever evaluated
ferror ( stdout )Description
TRUEnever evaluated
FALSEnever evaluated
have_fieldwidthDescription
TRUEnever evaluated
FALSEnever evaluated
have_precisionDescription
TRUEnever evaluated
FALSEnever evaluated
vflagDescription
TRUEnever evaluated
FALSEnever evaluated
vflagDescription
TRUEnever evaluated
FALSEnever evaluated
vflagDescription
TRUEnever evaluated
FALSEnever evaluated
vflagDescription
TRUEnever evaluated
FALSEnever evaluated
have_fieldwidthDescription
TRUEnever evaluated
FALSEnever evaluated
have_precisionDescription
TRUEnever evaluated
FALSEnever evaluated
0
641 }
never executed: end of block
0
642 else-
643 {-
644 f = mklong (start, "l", 1);-
645 PF (f, p);
never executed: nw = vflag ? vbprintf (f, fieldwidth, precision, p) : printf (f, fieldwidth, precision, p);
never executed: nw = vflag ? vbprintf (f, fieldwidth, p) : printf (f, fieldwidth, p);
never executed: nw = vflag ? vbprintf (f, precision, p) : printf (f, precision, p);
executed 1663 times by 1 test: nw = vflag ? vbprintf (f, p) : printf (f, p);
Executed by:
  • Self test
never executed: termsig_handler (terminating_signal);
never executed: throw_to_top_level ();
never executed: return (1);
terminating_signalDescription
TRUEnever evaluated
FALSEevaluated 1663 times by 1 test
Evaluated by:
  • Self test
interrupt_stateDescription
TRUEnever evaluated
FALSEevaluated 1663 times by 1 test
Evaluated by:
  • Self test
ferror ( stdout )Description
TRUEnever evaluated
FALSEevaluated 1663 times by 1 test
Evaluated by:
  • Self test
have_fieldwidthDescription
TRUEnever evaluated
FALSEevaluated 1663 times by 1 test
Evaluated by:
  • Self test
have_precisionDescription
TRUEnever evaluated
FALSEevaluated 1663 times by 1 test
Evaluated by:
  • Self test
vflagDescription
TRUEnever evaluated
FALSEnever evaluated
vflagDescription
TRUEnever evaluated
FALSEnever evaluated
vflagDescription
TRUEnever evaluated
FALSEnever evaluated
vflagDescription
TRUEevaluated 1424 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 239 times by 1 test
Evaluated by:
  • Self test
have_fieldwidthDescription
TRUEnever evaluated
FALSEevaluated 1663 times by 1 test
Evaluated by:
  • Self test
have_precisionDescription
TRUEnever evaluated
FALSEnever evaluated
0-1663
646 }
executed 1663 times by 1 test: end of block
Executed by:
  • Self test
1663
647 break;
executed 1663 times by 1 test: break;
Executed by:
  • Self test
1663
648 }-
649-
650 case 'e':
executed 20 times by 1 test: case 'e':
Executed by:
  • Self test
20
651 case 'E':
executed 18 times by 1 test: case 'E':
Executed by:
  • Self test
18
652 case 'f':
executed 81 times by 1 test: case 'f':
Executed by:
  • Self test
81
653 case 'F':
executed 8 times by 1 test: case 'F':
Executed by:
  • Self test
8
654 case 'g':
executed 20 times by 1 test: case 'g':
Executed by:
  • Self test
20
655 case 'G':
executed 18 times by 1 test: case 'G':
Executed by:
  • Self test
18
656#if defined (HAVE_PRINTF_A_FORMAT)-
657 case 'a':
never executed: case 'a':
0
658 case 'A':
never executed: case 'A':
0
659#endif-
660 {-
661 char *f;-
662 floatmax_t p;-
663-
664 p = getfloatmax ();-
665 f = mklong (start, FLOATMAX_CONV, sizeof(FLOATMAX_CONV) - 1);-
666 PF (f, p);
executed 15 times by 1 test: nw = vflag ? vbprintf (f, fieldwidth, precision, p) : printf (f, fieldwidth, precision, p);
Executed by:
  • Self test
never executed: nw = vflag ? vbprintf (f, fieldwidth, p) : printf (f, fieldwidth, p);
never executed: nw = vflag ? vbprintf (f, precision, p) : printf (f, precision, p);
executed 150 times by 1 test: nw = vflag ? vbprintf (f, p) : printf (f, p);
Executed by:
  • Self test
never executed: termsig_handler (terminating_signal);
never executed: throw_to_top_level ();
never executed: return (1);
terminating_signalDescription
TRUEnever evaluated
FALSEevaluated 165 times by 1 test
Evaluated by:
  • Self test
interrupt_stateDescription
TRUEnever evaluated
FALSEevaluated 165 times by 1 test
Evaluated by:
  • Self test
ferror ( stdout )Description
TRUEnever evaluated
FALSEevaluated 165 times by 1 test
Evaluated by:
  • Self test
have_fieldwidthDescription
TRUEnever evaluated
FALSEevaluated 150 times by 1 test
Evaluated by:
  • Self test
have_precisionDescription
TRUEnever evaluated
FALSEevaluated 150 times by 1 test
Evaluated by:
  • Self test
vflagDescription
TRUEevaluated 6 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 9 times by 1 test
Evaluated by:
  • Self test
vflagDescription
TRUEnever evaluated
FALSEnever evaluated
vflagDescription
TRUEnever evaluated
FALSEnever evaluated
vflagDescription
TRUEevaluated 41 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 109 times by 1 test
Evaluated by:
  • Self test
have_fieldwidthDescription
TRUEevaluated 15 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 150 times by 1 test
Evaluated by:
  • Self test
have_precisionDescription
TRUEevaluated 15 times by 1 test
Evaluated by:
  • Self test
FALSEnever evaluated
0-165
667 break;
executed 165 times by 1 test: break;
Executed by:
  • Self test
165
668 }-
669-
670 /* We don't output unrecognized format characters; we print an-
671 error message and return a failure exit status. */-
672 default:
executed 10 times by 1 test: default:
Executed by:
  • Self test
10
673 builtin_error (_("`%c': invalid format character"), convch);-
674 PRETURN (EXECUTION_FAILURE);
never executed: termsig_handler (terminating_signal);
never executed: throw_to_top_level ();
never executed: return (1);
executed 4 times by 1 test: end of block
Executed by:
  • Self test
never executed: end of block
never executed: end of block
executed 10 times by 1 test: vbuf[0] = 0;
Executed by:
  • Self test
executed 10 times by 1 test: fflush ( stdout );
Executed by:
  • Self test
never executed: termsig_handler (terminating_signal);
never executed: throw_to_top_level ();
never executed: return (1);
executed 10 times by 1 test: return (1);
Executed by:
  • Self test
terminating_signalDescription
TRUEnever evaluated
FALSEevaluated 10 times by 1 test
Evaluated by:
  • Self test
interrupt_stateDescription
TRUEnever evaluated
FALSEevaluated 10 times by 1 test
Evaluated by:
  • Self test
vflagDescription
TRUEevaluated 4 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 6 times by 1 test
Evaluated by:
  • Self test
conv_bufsize > 4096Description
TRUEnever evaluated
FALSEevaluated 10 times by 1 test
Evaluated by:
  • Self test
vbufDescription
TRUEevaluated 10 times by 1 test
Evaluated by:
  • Self test
FALSEnever evaluated
ferror ( stdout ) == 0Description
TRUEevaluated 10 times by 1 test
Evaluated by:
  • Self test
FALSEnever evaluated
terminating_signalDescription
TRUEnever evaluated
FALSEevaluated 10 times by 1 test
Evaluated by:
  • Self test
interrupt_stateDescription
TRUEnever evaluated
FALSEevaluated 10 times by 1 test
Evaluated by:
  • Self test
ferror ( stdout )Description
TRUEnever evaluated
FALSEevaluated 10 times by 1 test
Evaluated by:
  • Self test
vbsize > 4096Description
TRUEnever evaluated
FALSEevaluated 10 times by 1 test
Evaluated by:
  • Self test
v == 0Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • Self test
((((v)->attrib... (0x0000002)))Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • Self test
((((v)->attrib... (0x0004000)))Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • Self test
0-10
675 }-
676-
677 modstart[0] = thisch;-
678 modstart[1] = nextch;-
679 }
executed 19165 times by 1 test: end of block
Executed by:
  • Self test
19165
680-
681 if (ferror (stdout))
ferror ( stdout )Description
TRUEnever evaluated
FALSEevaluated 30011 times by 1 test
Evaluated by:
  • Self test
0-30011
682 {-
683 /* PRETURN will print error message. */-
684 PRETURN (EXECUTION_FAILURE);
never executed: termsig_handler (terminating_signal);
never executed: throw_to_top_level ();
never executed: return (1);
never executed: end of block
never executed: end of block
never executed: end of block
never executed: vbuf[0] = 0;
never executed: fflush ( stdout );
never executed: termsig_handler (terminating_signal);
never executed: throw_to_top_level ();
never executed: return (1);
never executed: return (1);
terminating_signalDescription
TRUEnever evaluated
FALSEnever evaluated
interrupt_stateDescription
TRUEnever evaluated
FALSEnever evaluated
vflagDescription
TRUEnever evaluated
FALSEnever evaluated
conv_bufsize > 4096Description
TRUEnever evaluated
FALSEnever evaluated
vbufDescription
TRUEnever evaluated
FALSEnever evaluated
ferror ( stdout ) == 0Description
TRUEnever evaluated
FALSEnever evaluated
terminating_signalDescription
TRUEnever evaluated
FALSEnever evaluated
interrupt_stateDescription
TRUEnever evaluated
FALSEnever evaluated
ferror ( stdout )Description
TRUEnever evaluated
FALSEnever evaluated
vbsize > 4096Description
TRUEnever evaluated
FALSEnever evaluated
v == 0Description
TRUEnever evaluated
FALSEnever evaluated
((((v)->attrib... (0x0000002)))Description
TRUEnever evaluated
FALSEnever evaluated
((((v)->attrib... (0x0004000)))Description
TRUEnever evaluated
FALSEnever evaluated
0
685 }
never executed: end of block
0
686 }
executed 30011 times by 1 test: end of block
Executed by:
  • Self test
30011
687 while (garglist && garglist != list->next);
garglistDescription
TRUEevaluated 980 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 29031 times by 1 test
Evaluated by:
  • Self test
garglist != list->nextDescription
TRUEevaluated 968 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 12 times by 1 test
Evaluated by:
  • Self test
12-29031
688-
689 if (conversion_error)
conversion_errorDescription
TRUEevaluated 10 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 29033 times by 1 test
Evaluated by:
  • Self test
10-29033
690 retval = EXECUTION_FAILURE;
executed 10 times by 1 test: retval = 1;
Executed by:
  • Self test
10
691-
692 PRETURN (retval);
never executed: termsig_handler (terminating_signal);
never executed: throw_to_top_level ();
executed 5 times by 1 test: return (1);
Executed by:
  • Self test
executed 3006 times by 1 test: end of block
Executed by:
  • Self test
executed 3 times by 1 test: end of block
Executed by:
  • Self test
never executed: end of block
executed 3778 times by 1 test: vbuf[0] = 0;
Executed by:
  • Self test
executed 29038 times by 1 test: fflush ( stdout );
Executed by:
  • Self test
never executed: termsig_handler (terminating_signal);
never executed: throw_to_top_level ();
never executed: return (1);
executed 29038 times by 1 test: return (retval);
Executed by:
  • Self test
terminating_signalDescription
TRUEnever evaluated
FALSEevaluated 29043 times by 1 test
Evaluated by:
  • Self test
interrupt_stateDescription
TRUEnever evaluated
FALSEevaluated 29043 times by 1 test
Evaluated by:
  • Self test
vflagDescription
TRUEevaluated 3011 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 26032 times by 1 test
Evaluated by:
  • Self test
conv_bufsize > 4096Description
TRUEevaluated 3 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 29035 times by 1 test
Evaluated by:
  • Self test
vbufDescription
TRUEevaluated 3778 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 25260 times by 1 test
Evaluated by:
  • Self test
ferror ( stdout ) == 0Description
TRUEevaluated 29038 times by 1 test
Evaluated by:
  • Self test
FALSEnever evaluated
terminating_signalDescription
TRUEnever evaluated
FALSEevaluated 29038 times by 1 test
Evaluated by:
  • Self test
interrupt_stateDescription
TRUEnever evaluated
FALSEevaluated 29038 times by 1 test
Evaluated by:
  • Self test
ferror ( stdout )Description
TRUEnever evaluated
FALSEevaluated 29038 times by 1 test
Evaluated by:
  • Self test
vbsize > 4096Description
TRUEnever evaluated
FALSEevaluated 29038 times by 1 test
Evaluated by:
  • Self test
v == 0Description
TRUEevaluated 5 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 3006 times by 1 test
Evaluated by:
  • Self test
((((v)->attrib... (0x0000002)))Description
TRUEnever evaluated
FALSEevaluated 3006 times by 1 test
Evaluated by:
  • Self test
((((v)->attrib... (0x0004000)))Description
TRUEnever evaluated
FALSEevaluated 3006 times by 1 test
Evaluated by:
  • Self test
0-29043
693}-
694-
695static void-
696printf_erange (s)-
697 char *s;-
698{-
699 builtin_error (_("warning: %s: %s"), s, strerror(ERANGE));-
700}
never executed: end of block
0
701-
702/* We duplicate a lot of what printf(3) does here. */-
703static int-
704printstr (fmt, string, len, fieldwidth, precision)-
705 char *fmt; /* format */-
706 char *string; /* expanded string argument */-
707 int len; /* length of expanded string */-
708 int fieldwidth; /* argument for width of `*' */-
709 int precision; /* argument for precision of `*' */-
710{-
711#if 0-
712 char *s;-
713#endif-
714 int padlen, nc, ljust, i;-
715 int fw, pr; /* fieldwidth and precision */-
716 intmax_t mfw, mpr;-
717-
718 if (string == 0)
string == 0Description
TRUEnever evaluated
FALSEevaluated 919 times by 1 test
Evaluated by:
  • Self test
0-919
719 string = "";
never executed: string = "";
0
720-
721#if 0-
722 s = fmt;-
723#endif-
724 if (*fmt == '%')
*fmt == '%'Description
TRUEevaluated 919 times by 1 test
Evaluated by:
  • Self test
FALSEnever evaluated
0-919
725 fmt++;
executed 919 times by 1 test: fmt++;
Executed by:
  • Self test
919
726-
727 ljust = fw = 0;-
728 pr = -1;-
729 mfw = 0;-
730 mpr = -1;-
731-
732 /* skip flags */-
733 while (strchr (SKIP1, *fmt))
(__extension__... 0" , *fmt )))Description
TRUEevaluated 12 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 919 times by 1 test
Evaluated by:
  • Self test
__builtin_constant_p ( *fmt )Description
TRUEnever evaluated
FALSEevaluated 931 times by 1 test
Evaluated by:
  • Self test
!__builtin_con...p ( "#'-+ 0" )Description
TRUEnever evaluated
FALSEnever evaluated
( *fmt ) == '\0'Description
TRUEnever evaluated
FALSEnever evaluated
0-931
734 {-
735 if (*fmt == '-')
*fmt == '-'Description
TRUEevaluated 12 times by 1 test
Evaluated by:
  • Self test
FALSEnever evaluated
0-12
736 ljust = 1;
executed 12 times by 1 test: ljust = 1;
Executed by:
  • Self test
12
737 fmt++;-
738 }
executed 12 times by 1 test: end of block
Executed by:
  • Self test
12
739-
740 /* get fieldwidth, if present. rely on caller to clamp fieldwidth at INT_MAX */-
741 if (*fmt == '*')
*fmt == '*'Description
TRUEevaluated 15 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 904 times by 1 test
Evaluated by:
  • Self test
15-904
742 {-
743 fmt++;-
744 fw = fieldwidth;-
745 if (fw < 0)
fw < 0Description
TRUEevaluated 5 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 10 times by 1 test
Evaluated by:
  • Self test
5-10
746 {-
747 fw = -fw;-
748 ljust = 1;-
749 }
executed 5 times by 1 test: end of block
Executed by:
  • Self test
5
750 }
executed 15 times by 1 test: end of block
Executed by:
  • Self test
15
751 else if (DIGIT (*fmt))
(*fmt) >= '0'Description
TRUEevaluated 894 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 10 times by 1 test
Evaluated by:
  • Self test
(*fmt) <= '9'Description
TRUEevaluated 50 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 844 times by 1 test
Evaluated by:
  • Self test
10-894
752 {-
753 mfw = *fmt++ - '0';-
754 while (DIGIT (*fmt))
(*fmt) >= '0'Description
TRUEevaluated 57 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 22 times by 1 test
Evaluated by:
  • Self test
(*fmt) <= '9'Description
TRUEevaluated 29 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 28 times by 1 test
Evaluated by:
  • Self test
22-57
755 mfw = (mfw * 10) + (*fmt++ - '0');
executed 29 times by 1 test: mfw = (mfw * 10) + (*fmt++ - '0');
Executed by:
  • Self test
29
756 /* Error if fieldwidth > INT_MAX here? */-
757 fw = (mfw < 0 || mfw > INT_MAX) ? INT_MAX : mfw;
mfw < 0Description
TRUEnever evaluated
FALSEevaluated 50 times by 1 test
Evaluated by:
  • Self test
mfw > 0x7fffffffDescription
TRUEnever evaluated
FALSEevaluated 50 times by 1 test
Evaluated by:
  • Self test
0-50
758 }
executed 50 times by 1 test: end of block
Executed by:
  • Self test
50
759-
760 /* get precision, if present */-
761 if (*fmt == '.')
*fmt == '.'Description
TRUEevaluated 37 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 882 times by 1 test
Evaluated by:
  • Self test
37-882
762 {-
763 fmt++;-
764 if (*fmt == '*')
*fmt == '*'Description
TRUEevaluated 5 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 32 times by 1 test
Evaluated by:
  • Self test
5-32
765 {-
766 fmt++;-
767 pr = precision;-
768 }
executed 5 times by 1 test: end of block
Executed by:
  • Self test
5
769 else if (DIGIT (*fmt))
(*fmt) >= '0'Description
TRUEevaluated 32 times by 1 test
Evaluated by:
  • Self test
FALSEnever evaluated
(*fmt) <= '9'Description
TRUEevaluated 32 times by 1 test
Evaluated by:
  • Self test
FALSEnever evaluated
0-32
770 {-
771 mpr = *fmt++ - '0';-
772 while (DIGIT (*fmt))
(*fmt) >= '0'Description
TRUEevaluated 39 times by 1 test
Evaluated by:
  • Self test
FALSEnever evaluated
(*fmt) <= '9'Description
TRUEevaluated 7 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 32 times by 1 test
Evaluated by:
  • Self test
0-39
773 mpr = (mpr * 10) + (*fmt++ - '0');
executed 7 times by 1 test: mpr = (mpr * 10) + (*fmt++ - '0');
Executed by:
  • Self test
7
774 /* Error if precision > INT_MAX here? */-
775 pr = (mpr < 0 || mpr > INT_MAX) ? INT_MAX : mpr;
mpr < 0Description
TRUEnever evaluated
FALSEevaluated 32 times by 1 test
Evaluated by:
  • Self test
mpr > 0x7fffffffDescription
TRUEnever evaluated
FALSEevaluated 32 times by 1 test
Evaluated by:
  • Self test
0-32
776 }
executed 32 times by 1 test: end of block
Executed by:
  • Self test
32
777 else-
778 pr = 0; /* "a null digit string is treated as zero" */
never executed: pr = 0;
0
779 }-
780-
781#if 0-
782 /* If we remove this, get rid of `s'. */-
783 if (*fmt != 'b' && *fmt != 'q')-
784 {-
785 internal_error (_("format parsing problem: %s"), s);-
786 fw = pr = 0;-
787 }-
788#endif-
789-
790 /* chars from string to print */-
791 nc = (pr >= 0 && pr <= len) ? pr : len;
pr >= 0Description
TRUEevaluated 37 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 882 times by 1 test
Evaluated by:
  • Self test
pr <= lenDescription
TRUEevaluated 25 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 12 times by 1 test
Evaluated by:
  • Self test
12-882
792-
793 padlen = fw - nc;-
794 if (padlen < 0)
padlen < 0Description
TRUEevaluated 832 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 87 times by 1 test
Evaluated by:
  • Self test
87-832
795 padlen = 0;
executed 832 times by 1 test: padlen = 0;
Executed by:
  • Self test
832
796 if (ljust)
ljustDescription
TRUEevaluated 17 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 902 times by 1 test
Evaluated by:
  • Self test
17-902
797 padlen = -padlen;
executed 17 times by 1 test: padlen = -padlen;
Executed by:
  • Self test
17
798-
799 /* leading pad characters */-
800 for (; padlen > 0; padlen--)
padlen > 0Description
TRUEevaluated 121 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 919 times by 1 test
Evaluated by:
  • Self test
121-919
801 PC (' ');
executed 48 times by 1 test: vbadd (b, 1);
Executed by:
  • Self test
executed 73 times by 1 test: putchar (' ');
Executed by:
  • Self test
never executed: termsig_handler (terminating_signal);
never executed: throw_to_top_level ();
executed 121 times by 1 test: end of block
Executed by:
  • Self test
terminating_signalDescription
TRUEnever evaluated
FALSEevaluated 121 times by 1 test
Evaluated by:
  • Self test
interrupt_stateDescription
TRUEnever evaluated
FALSEevaluated 121 times by 1 test
Evaluated by:
  • Self test
vflagDescription
TRUEevaluated 48 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 73 times by 1 test
Evaluated by:
  • Self test
0-121
802-
803 /* output NC characters from STRING */-
804 for (i = 0; i < nc; i++)
i < ncDescription
TRUEevaluated 5187 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 919 times by 1 test
Evaluated by:
  • Self test
919-5187
805 PC (string[i]);
executed 427 times by 1 test: vbadd (b, 1);
Executed by:
  • Self test
executed 4760 times by 1 test: putchar (string[i]);
Executed by:
  • Self test
never executed: termsig_handler (terminating_signal);
never executed: throw_to_top_level ();
executed 5187 times by 1 test: end of block
Executed by:
  • Self test
terminating_signalDescription
TRUEnever evaluated
FALSEevaluated 5187 times by 1 test
Evaluated by:
  • Self test
interrupt_stateDescription
TRUEnever evaluated
FALSEevaluated 5187 times by 1 test
Evaluated by:
  • Self test
vflagDescription
TRUEevaluated 427 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 4760 times by 1 test
Evaluated by:
  • Self test
0-5187
806-
807 /* output any necessary trailing padding */-
808 for (; padlen < 0; padlen++)
padlen < 0Description
TRUEevaluated 64 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 919 times by 1 test
Evaluated by:
  • Self test
64-919
809 PC (' ');
executed 14 times by 1 test: vbadd (b, 1);
Executed by:
  • Self test
executed 50 times by 1 test: putchar (' ');
Executed by:
  • Self test
never executed: termsig_handler (terminating_signal);
never executed: throw_to_top_level ();
executed 64 times by 1 test: end of block
Executed by:
  • Self test
terminating_signalDescription
TRUEnever evaluated
FALSEevaluated 64 times by 1 test
Evaluated by:
  • Self test
interrupt_stateDescription
TRUEnever evaluated
FALSEevaluated 64 times by 1 test
Evaluated by:
  • Self test
vflagDescription
TRUEevaluated 14 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 50 times by 1 test
Evaluated by:
  • Self test
0-64
810-
811 return (ferror (stdout) ? -1 : 0);
executed 919 times by 1 test: return (ferror ( stdout ) ? -1 : 0);
Executed by:
  • Self test
919
812}-
813 -
814/* Convert STRING by expanding the escape sequences specified by the-
815 POSIX standard for printf's `%b' format string. If SAWC is non-null,-
816 perform the processing appropriate for %b arguments. In particular,-
817 recognize `\c' and use that as a string terminator. If we see \c, set-
818 *SAWC to 1 before returning. LEN is the length of STRING. */-
819-
820/* Translate a single backslash-escape sequence starting at ESTART (the-
821 character after the backslash) and return the number of characters-
822 consumed by the sequence. CP is the place to return the translated-
823 value. *SAWC is set to 1 if the escape sequence was \c, since that means-
824 to short-circuit the rest of the processing. If SAWC is null, we don't-
825 do the \c short-circuiting, and \c is treated as an unrecognized escape-
826 sequence; we also bypass the other processing specific to %b arguments. */-
827static int-
828tescape (estart, cp, lenp, sawc)-
829 char *estart;-
830 char *cp;-
831 int *lenp, *sawc;-
832{-
833 register char *p;-
834 int temp, c, evalue;-
835 unsigned long uvalue;-
836-
837 p = estart;-
838 if (lenp)
lenpDescription
TRUEevaluated 14673 times by 1 test
Evaluated by:
  • Self test
FALSEnever evaluated
0-14673
839 *lenp = 1;
executed 14673 times by 1 test: *lenp = 1;
Executed by:
  • Self test
14673
840-
841 switch (c = *p++)-
842 {-
843#if defined (__STDC__)-
844 case 'a': *cp = '\a'; break;
executed 2 times by 1 test: break;
Executed by:
  • Self test
executed 2 times by 1 test: case 'a':
Executed by:
  • Self test
2
845#else-
846 case 'a': *cp = '\007'; break;-
847#endif-
848-
849 case 'b': *cp = '\b'; break;
executed 2 times by 1 test: break;
Executed by:
  • Self test
executed 2 times by 1 test: case 'b':
Executed by:
  • Self test
2
850-
851 case 'e':
executed 2 times by 1 test: case 'e':
Executed by:
  • Self test
2
852 case 'E': *cp = '\033'; break; /* ESC -- non-ANSI */
executed 2 times by 1 test: break;
Executed by:
  • Self test
never executed: case 'E':
0-2
853-
854 case 'f': *cp = '\f'; break;
executed 2 times by 1 test: break;
Executed by:
  • Self test
executed 2 times by 1 test: case 'f':
Executed by:
  • Self test
2
855-
856 case 'n': *cp = '\n'; break;
executed 11667 times by 1 test: break;
Executed by:
  • Self test
executed 11667 times by 1 test: case 'n':
Executed by:
  • Self test
11667
857-
858 case 'r': *cp = '\r'; break;
executed 2 times by 1 test: break;
Executed by:
  • Self test
executed 2 times by 1 test: case 'r':
Executed by:
  • Self test
2
859-
860 case 't': *cp = '\t'; break;
executed 21 times by 1 test: break;
Executed by:
  • Self test
executed 21 times by 1 test: case 't':
Executed by:
  • Self test
21
861-
862 case 'v': *cp = '\v'; break;
executed 2 times by 1 test: break;
Executed by:
  • Self test
executed 2 times by 1 test: case 'v':
Executed by:
  • Self test
2
863-
864 /* The octal escape sequences are `\0' followed by up to three octal-
865 digits (if SAWC), or `\' followed by up to three octal digits (if-
866 !SAWC). As an extension, we allow the latter form even if SAWC. */-
867 case '0': case '1': case '2': case '3':
executed 41 times by 1 test: case '0':
Executed by:
  • Self test
executed 16 times by 1 test: case '1':
Executed by:
  • Self test
executed 3 times by 1 test: case '2':
Executed by:
  • Self test
executed 3 times by 1 test: case '3':
Executed by:
  • Self test
3-41
868 case '4': case '5': case '6': case '7':
never executed: case '4':
never executed: case '5':
never executed: case '6':
executed 3 times by 1 test: case '7':
Executed by:
  • Self test
0-3
869 evalue = OCTVALUE (c);-
870 for (temp = 2 + (!evalue && !!sawc); ISOCTAL (*p) && temp--; p++)
(*p) >= '0'Description
TRUEevaluated 157 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 30 times by 1 test
Evaluated by:
  • Self test
(*p) <= '7'Description
TRUEevaluated 137 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 20 times by 1 test
Evaluated by:
  • Self test
temp--Description
TRUEevaluated 121 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 16 times by 1 test
Evaluated by:
  • Self test
16-157
871 evalue = (evalue * 8) + OCTVALUE (*p);
executed 121 times by 1 test: evalue = (evalue * 8) + ((*p) - '0');
Executed by:
  • Self test
121
872 *cp = evalue & 0xFF;-
873 break;
executed 66 times by 1 test: break;
Executed by:
  • Self test
66
874-
875 /* And, as another extension, we allow \xNN, where each N is a-
876 hex digit. */-
877 case 'x':
executed 17 times by 1 test: case 'x':
Executed by:
  • Self test
17
878 for (temp = 2, evalue = 0; ISXDIGIT ((unsigned char)*p) && temp--; p++)
((*__ctype_b_l...nt) _ISxdigit)Description
TRUEevaluated 30 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 7 times by 1 test
Evaluated by:
  • Self test
temp--Description
TRUEevaluated 20 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 10 times by 1 test
Evaluated by:
  • Self test
7-30
879 evalue = (evalue * 16) + HEXVALUE (*p);
executed 20 times by 1 test: evalue = (evalue * 16) + (((*p) >= 'a' && (*p) <= 'f') ? (*p)-'a'+10 : (*p) >= 'A' && (*p) <= 'F' ? (*p)-'A'+10 : (*p)-'0');
Executed by:
  • Self test
(*p) >= 'a'Description
TRUEnever evaluated
FALSEevaluated 20 times by 1 test
Evaluated by:
  • Self test
(*p) <= 'f'Description
TRUEnever evaluated
FALSEnever evaluated
(*p) >= 'A'Description
TRUEnever evaluated
FALSEevaluated 20 times by 1 test
Evaluated by:
  • Self test
(*p) <= 'F'Description
TRUEnever evaluated
FALSEnever evaluated
0-20
880 if (p == estart + 1)
p == estart + 1Description
TRUEevaluated 7 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 10 times by 1 test
Evaluated by:
  • Self test
7-10
881 {-
882 builtin_error (_("missing hex digit for \\x"));-
883 *cp = '\\';-
884 return 0;
executed 7 times by 1 test: return 0;
Executed by:
  • Self test
7
885 }-
886 *cp = evalue & 0xFF;-
887 break;
executed 10 times by 1 test: break;
Executed by:
  • Self test
10
888-
889#if defined (HANDLE_MULTIBYTE)-
890 case 'u':
executed 6 times by 1 test: case 'u':
Executed by:
  • Self test
6
891 case 'U':
executed 1380 times by 1 test: case 'U':
Executed by:
  • Self test
1380
892 temp = (c == 'u') ? 4 : 8; /* \uNNNN \UNNNNNNNN */
(c == 'u')Description
TRUEevaluated 6 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 1380 times by 1 test
Evaluated by:
  • Self test
6-1380
893 for (uvalue = 0; ISXDIGIT ((unsigned char)*p) && temp--; p++)
((*__ctype_b_l...nt) _ISxdigit)Description
TRUEevaluated 11054 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 1386 times by 1 test
Evaluated by:
  • Self test
temp--Description
TRUEevaluated 11054 times by 1 test
Evaluated by:
  • Self test
FALSEnever evaluated
0-11054
894 uvalue = (uvalue * 16) + HEXVALUE (*p);
executed 11054 times by 1 test: uvalue = (uvalue * 16) + (((*p) >= 'a' && (*p) <= 'f') ? (*p)-'a'+10 : (*p) >= 'A' && (*p) <= 'F' ? (*p)-'A'+10 : (*p)-'0');
Executed by:
  • Self test
(*p) >= 'a'Description
TRUEevaluated 997 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 10057 times by 1 test
Evaluated by:
  • Self test
(*p) <= 'f'Description
TRUEevaluated 997 times by 1 test
Evaluated by:
  • Self test
FALSEnever evaluated
(*p) >= 'A'Description
TRUEnever evaluated
FALSEevaluated 10057 times by 1 test
Evaluated by:
  • Self test
(*p) <= 'F'Description
TRUEnever evaluated
FALSEnever evaluated
0-11054
895 if (p == estart + 1)
p == estart + 1Description
TRUEnever evaluated
FALSEevaluated 1386 times by 1 test
Evaluated by:
  • Self test
0-1386
896 {-
897 builtin_error (_("missing unicode digit for \\%c"), c);-
898 *cp = '\\';-
899 return 0;
never executed: return 0;
0
900 }-
901 if (uvalue <= 0x7f) /* <= 0x7f translates directly */
uvalue <= 0x7fDescription
TRUEevaluated 380 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 1006 times by 1 test
Evaluated by:
  • Self test
380-1006
902 *cp = uvalue;
executed 380 times by 1 test: *cp = uvalue;
Executed by:
  • Self test
380
903 else-
904 {-
905 temp = u32cconv (uvalue, cp);-
906 cp[temp] = '\0';-
907 if (lenp)
lenpDescription
TRUEevaluated 1006 times by 1 test
Evaluated by:
  • Self test
FALSEnever evaluated
0-1006
908 *lenp = temp;
executed 1006 times by 1 test: *lenp = temp;
Executed by:
  • Self test
1006
909 }
executed 1006 times by 1 test: end of block
Executed by:
  • Self test
1006
910 break;
executed 1386 times by 1 test: break;
Executed by:
  • Self test
1386
911#endif-
912 -
913 case '\\': /* \\ -> \ */
executed 1406 times by 1 test: case '\\':
Executed by:
  • Self test
1406
914 *cp = c;-
915 break;
executed 1406 times by 1 test: break;
Executed by:
  • Self test
1406
916-
917 /* SAWC == 0 means that \', \", and \? are recognized as escape-
918 sequences, though the only processing performed is backslash-
919 removal. */-
920 case '\'': case '"': case '?':
executed 44 times by 1 test: case '\'':
Executed by:
  • Self test
executed 17 times by 1 test: case '"':
Executed by:
  • Self test
executed 3 times by 1 test: case '?':
Executed by:
  • Self test
3-44
921 if (!sawc)
!sawcDescription
TRUEevaluated 26 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 38 times by 1 test
Evaluated by:
  • Self test
26-38
922 *cp = c;
executed 26 times by 1 test: *cp = c;
Executed by:
  • Self test
26
923 else-
924 {-
925 *cp = '\\';-
926 return 0;
executed 38 times by 1 test: return 0;
Executed by:
  • Self test
38
927 }-
928 break;
executed 26 times by 1 test: break;
Executed by:
  • Self test
26
929-
930 case 'c':
executed 12 times by 1 test: case 'c':
Executed by:
  • Self test
12
931 if (sawc)
sawcDescription
TRUEevaluated 5 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 7 times by 1 test
Evaluated by:
  • Self test
5-7
932 {-
933 *sawc = 1;-
934 break;
executed 5 times by 1 test: break;
Executed by:
  • Self test
5
935 }-
936 /* other backslash escapes are passed through unaltered */-
937 default:
code before this statement executed 7 times by 1 test: default:
Executed by:
  • Self test
executed 22 times by 1 test: default:
Executed by:
  • Self test
7-22
938 *cp = '\\';-
939 return 0;
executed 29 times by 1 test: return 0;
Executed by:
  • Self test
29
940 }-
941 return (p - estart);
executed 14599 times by 1 test: return (p - estart);
Executed by:
  • Self test
14599
942}-
943-
944static char *-
945bexpand (string, len, sawc, lenp)-
946 char *string;-
947 int len, *sawc, *lenp;-
948{-
949 int temp;-
950 char *ret, *r, *s, c;-
951#if defined (HANDLE_MULTIBYTE)-
952 char mbch[25];-
953 int mbind, mblen;-
954#endif-
955-
956 if (string == 0 || len == 0)
string == 0Description
TRUEnever evaluated
FALSEevaluated 180 times by 1 test
Evaluated by:
  • Self test
len == 0Description
TRUEevaluated 18 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 162 times by 1 test
Evaluated by:
  • Self test
0-180
957 {-
958 if (sawc)
sawcDescription
TRUEevaluated 18 times by 1 test
Evaluated by:
  • Self test
FALSEnever evaluated
0-18
959 *sawc = 0;
executed 18 times by 1 test: *sawc = 0;
Executed by:
  • Self test
18
960 if (lenp)
lenpDescription
TRUEevaluated 18 times by 1 test
Evaluated by:
  • Self test
FALSEnever evaluated
0-18
961 *lenp = 0;
executed 18 times by 1 test: *lenp = 0;
Executed by:
  • Self test
18
962 ret = (char *)xmalloc (1);-
963 ret[0] = '\0';-
964 return (ret);
executed 18 times by 1 test: return (ret);
Executed by:
  • Self test
18
965 }-
966-
967 ret = (char *)xmalloc (len + 1);-
968 for (r = ret, s = string; s && *s; )
sDescription
TRUEevaluated 1049 times by 1 test
Evaluated by:
  • Self test
FALSEnever evaluated
*sDescription
TRUEevaluated 892 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 157 times by 1 test
Evaluated by:
  • Self test
0-1049
969 {-
970 c = *s++;-
971 if (c != '\\' || *s == '\0')
c != '\\'Description
TRUEevaluated 731 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 161 times by 1 test
Evaluated by:
  • Self test
*s == '\0'Description
TRUEevaluated 5 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 156 times by 1 test
Evaluated by:
  • Self test
5-731
972 {-
973 *r++ = c;-
974 continue;
executed 736 times by 1 test: continue;
Executed by:
  • Self test
736
975 }-
976 temp = 0;-
977#if defined (HANDLE_MULTIBYTE)-
978 memset (mbch, '\0', sizeof (mbch));-
979 s += tescape (s, mbch, &mblen, &temp);-
980#else-
981 s += tescape (s, &c, (int *)NULL, &temp);-
982#endif-
983 if (temp)
tempDescription
TRUEevaluated 5 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 151 times by 1 test
Evaluated by:
  • Self test
5-151
984 {-
985 if (sawc)
sawcDescription
TRUEevaluated 5 times by 1 test
Evaluated by:
  • Self test
FALSEnever evaluated
0-5
986 *sawc = 1;
executed 5 times by 1 test: *sawc = 1;
Executed by:
  • Self test
5
987 break;
executed 5 times by 1 test: break;
Executed by:
  • Self test
5
988 }-
989-
990#if defined (HANDLE_MULTIBYTE)-
991 for (mbind = 0; mbind < mblen; mbind++)
mbind < mblenDescription
TRUEevaluated 151 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 151 times by 1 test
Evaluated by:
  • Self test
151
992 *r++ = mbch[mbind];
executed 151 times by 1 test: *r++ = mbch[mbind];
Executed by:
  • Self test
151
993#else-
994 *r++ = c;-
995#endif -
996 }
executed 151 times by 1 test: end of block
Executed by:
  • Self test
151
997-
998 *r = '\0';-
999 if (lenp)
lenpDescription
TRUEevaluated 162 times by 1 test
Evaluated by:
  • Self test
FALSEnever evaluated
0-162
1000 *lenp = r - ret;
executed 162 times by 1 test: *lenp = r - ret;
Executed by:
  • Self test
162
1001 return ret;
executed 162 times by 1 test: return ret;
Executed by:
  • Self test
162
1002}-
1003-
1004static char *-
1005vbadd (buf, blen)-
1006 char *buf;-
1007 int blen;-
1008{-
1009 size_t nlen;-
1010-
1011 nlen = vblen + blen + 1;-
1012 if (nlen >= vbsize)
nlen >= vbsizeDescription
TRUEevaluated 4 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 6322 times by 1 test
Evaluated by:
  • Self test
4-6322
1013 {-
1014 vbsize = ((nlen + 63) >> 6) << 6;-
1015 vbuf = (char *)xrealloc (vbuf, vbsize);-
1016 }
executed 4 times by 1 test: end of block
Executed by:
  • Self test
4
1017-
1018 if (blen == 1)
blen == 1Description
TRUEevaluated 6326 times by 1 test
Evaluated by:
  • Self test
FALSEnever evaluated
0-6326
1019 vbuf[vblen++] = buf[0];
executed 6326 times by 1 test: vbuf[vblen++] = buf[0];
Executed by:
  • Self test
6326
1020 else if (blen > 1)
blen > 1Description
TRUEnever evaluated
FALSEnever evaluated
0
1021 {-
1022 FASTCOPY (buf, vbuf + vblen, blen);-
1023 vblen += blen;-
1024 }
never executed: end of block
0
1025 vbuf[vblen] = '\0';-
1026-
1027#ifdef DEBUG-
1028 if (strlen (vbuf) != vblen)
strlen (vbuf) != vblenDescription
TRUEnever evaluated
FALSEevaluated 6326 times by 1 test
Evaluated by:
  • Self test
0-6326
1029 internal_error ("printf:vbadd: vblen (%d) != strlen (vbuf) (%d)", vblen, (int)strlen (vbuf));
never executed: internal_error ("printf:vbadd: vblen (%d) != strlen (vbuf) (%d)", vblen, (int)strlen (vbuf));
0
1030#endif-
1031-
1032 return vbuf;
executed 6326 times by 1 test: return vbuf;
Executed by:
  • Self test
6326
1033}-
1034-
1035static int-
1036#if defined (PREFER_STDARG)-
1037vbprintf (const char *format, ...)-
1038#else-
1039vbprintf (format, va_alist)-
1040 const char *format;-
1041 va_dcl-
1042#endif-
1043{-
1044 va_list args;-
1045 size_t nlen;-
1046 int blen;-
1047-
1048 SH_VA_START (args, format);-
1049 blen = vsnprintf (vbuf + vblen, vbsize - vblen, format, args);-
1050 va_end (args);-
1051-
1052 nlen = vblen + blen + 1;-
1053 if (nlen >= vbsize)
nlen >= vbsizeDescription
TRUEevaluated 2 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 1597 times by 1 test
Evaluated by:
  • Self test
2-1597
1054 {-
1055 vbsize = ((nlen + 63) >> 6) << 6;-
1056 vbuf = (char *)xrealloc (vbuf, vbsize);-
1057 SH_VA_START (args, format);-
1058 blen = vsnprintf (vbuf + vblen, vbsize - vblen, format, args);-
1059 va_end (args);-
1060 }
executed 2 times by 1 test: end of block
Executed by:
  • Self test
2
1061-
1062 vblen += blen;-
1063 vbuf[vblen] = '\0';-
1064-
1065#ifdef DEBUG-
1066 if (strlen (vbuf) != vblen)
strlen (vbuf) != vblenDescription
TRUEnever evaluated
FALSEevaluated 1599 times by 1 test
Evaluated by:
  • Self test
0-1599
1067 internal_error ("printf:vbprintf: vblen (%d) != strlen (vbuf) (%d)", vblen, (int)strlen (vbuf));
never executed: internal_error ("printf:vbprintf: vblen (%d) != strlen (vbuf) (%d)", vblen, (int)strlen (vbuf));
0
1068#endif-
1069 -
1070 return (blen);
executed 1599 times by 1 test: return (blen);
Executed by:
  • Self test
1599
1071}-
1072-
1073static char *-
1074mklong (str, modifiers, mlen)-
1075 char *str;-
1076 char *modifiers;-
1077 size_t mlen;-
1078{-
1079 size_t len, slen;-
1080-
1081 slen = strlen (str);-
1082 len = slen + mlen + 1;-
1083-
1084 if (len > conv_bufsize)
len > conv_bufsizeDescription
TRUEevaluated 206 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 6797 times by 1 test
Evaluated by:
  • Self test
206-6797
1085 {-
1086 conv_bufsize = (((len + 1023) >> 10) << 10);-
1087 conv_buf = (char *)xrealloc (conv_buf, conv_bufsize);-
1088 }
executed 206 times by 1 test: end of block
Executed by:
  • Self test
206
1089-
1090 FASTCOPY (str, conv_buf, slen - 1);-
1091 FASTCOPY (modifiers, conv_buf + slen - 1, mlen);-
1092-
1093 conv_buf[len - 2] = str[slen - 1];-
1094 conv_buf[len - 1] = '\0';-
1095 return (conv_buf);
executed 7003 times by 1 test: return (conv_buf);
Executed by:
  • Self test
7003
1096}-
1097-
1098static int-
1099getchr ()-
1100{-
1101 int ret;-
1102-
1103 if (garglist == 0)
garglist == 0Description
TRUEnever evaluated
FALSEevaluated 7 times by 1 test
Evaluated by:
  • Self test
0-7
1104 return ('\0');
never executed: return ('\0');
0
1105-
1106 ret = (int)garglist->word->word[0];-
1107 garglist = garglist->next;-
1108 return ret;
executed 7 times by 1 test: return ret;
Executed by:
  • Self test
7
1109}-
1110-
1111static char *-
1112getstr ()-
1113{-
1114 char *ret;-
1115-
1116 if (garglist == 0)
garglist == 0Description
TRUEevaluated 22 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 12121 times by 1 test
Evaluated by:
  • Self test
22-12121
1117 return ("");
executed 22 times by 1 test: return ("");
Executed by:
  • Self test
22
1118-
1119 ret = garglist->word->word;-
1120 garglist = garglist->next;-
1121 return ret;
executed 12121 times by 1 test: return ret;
Executed by:
  • Self test
12121
1122}-
1123-
1124static int-
1125getint ()-
1126{-
1127 intmax_t ret;-
1128-
1129 ret = getintmax ();-
1130-
1131 if (garglist == 0)
garglist == 0Description
TRUEnever evaluated
FALSEevaluated 80 times by 1 test
Evaluated by:
  • Self test
0-80
1132 return ret;
never executed: return ret;
0
1133-
1134 if (ret > INT_MAX)
ret > 0x7fffffffDescription
TRUEnever evaluated
FALSEevaluated 80 times by 1 test
Evaluated by:
  • Self test
0-80
1135 {-
1136 printf_erange (garglist->word->word);-
1137 ret = INT_MAX;-
1138 }
never executed: end of block
0
1139 else if (ret < INT_MIN)
ret < (-0x7fffffff - 1)Description
TRUEnever evaluated
FALSEevaluated 80 times by 1 test
Evaluated by:
  • Self test
0-80
1140 {-
1141 printf_erange (garglist->word->word);-
1142 ret = INT_MIN;-
1143 }
never executed: end of block
0
1144-
1145 return ((int)ret);
executed 80 times by 1 test: return ((int)ret);
Executed by:
  • Self test
80
1146}-
1147-
1148static intmax_t-
1149getintmax ()-
1150{-
1151 intmax_t ret;-
1152 char *ep;-
1153-
1154 if (garglist == 0)
garglist == 0Description
TRUEevaluated 28 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 5243 times by 1 test
Evaluated by:
  • Self test
28-5243
1155 return (0);
executed 28 times by 1 test: return (0);
Executed by:
  • Self test
28
1156-
1157 if (garglist->word->word[0] == '\'' || garglist->word->word[0] == '"')
garglist->word...ord[0] == '\''Description
TRUEevaluated 6 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 5237 times by 1 test
Evaluated by:
  • Self test
garglist->word->word[0] == '"'Description
TRUEevaluated 5 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 5232 times by 1 test
Evaluated by:
  • Self test
5-5237
1158 return asciicode ();
executed 11 times by 1 test: return asciicode ();
Executed by:
  • Self test
11
1159-
1160 errno = 0;-
1161 ret = strtoimax (garglist->word->word, &ep, 0);-
1162-
1163 if (*ep)
*epDescription
TRUEevaluated 5 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 5227 times by 1 test
Evaluated by:
  • Self test
5-5227
1164 {-
1165 sh_invalidnum (garglist->word->word);-
1166 /* POSIX.2 says ``...a diagnostic message shall be written to standard-
1167 error, and the utility shall not exit with a zero exit status, but-
1168 shall continue processing any remaining operands and shall write the-
1169 value accumulated at the time the error was detected to standard-
1170 output.'' Yecch. */-
1171#if 0-
1172 ret = 0; /* return partially-converted value from strtoimax */-
1173#endif-
1174 conversion_error = 1;-
1175 }
executed 5 times by 1 test: end of block
Executed by:
  • Self test
5
1176 else if (errno == ERANGE)
(*__errno_location ()) == 34Description
TRUEnever evaluated
FALSEevaluated 5227 times by 1 test
Evaluated by:
  • Self test
0-5227
1177 printf_erange (garglist->word->word);
never executed: printf_erange (garglist->word->word);
0
1178-
1179 garglist = garglist->next;-
1180 return (ret);
executed 5232 times by 1 test: return (ret);
Executed by:
  • Self test
5232
1181}-
1182-
1183static uintmax_t-
1184getuintmax ()-
1185{-
1186 uintmax_t ret;-
1187 char *ep;-
1188-
1189 if (garglist == 0)
garglist == 0Description
TRUEevaluated 7 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 1656 times by 1 test
Evaluated by:
  • Self test
7-1656
1190 return (0);
executed 7 times by 1 test: return (0);
Executed by:
  • Self test
7
1191-
1192 if (garglist->word->word[0] == '\'' || garglist->word->word[0] == '"')
garglist->word...ord[0] == '\''Description
TRUEevaluated 45 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 1611 times by 1 test
Evaluated by:
  • Self test
garglist->word->word[0] == '"'Description
TRUEevaluated 10 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 1601 times by 1 test
Evaluated by:
  • Self test
10-1611
1193 return asciicode ();
executed 55 times by 1 test: return asciicode ();
Executed by:
  • Self test
55
1194-
1195 errno = 0;-
1196 ret = strtoumax (garglist->word->word, &ep, 0);-
1197 -
1198 if (*ep)
*epDescription
TRUEevaluated 5 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 1596 times by 1 test
Evaluated by:
  • Self test
5-1596
1199 {-
1200 sh_invalidnum (garglist->word->word);-
1201 /* Same POSIX.2 conversion error requirements as getintmax(). */-
1202 ret = 0;-
1203 conversion_error = 1;-
1204 }
executed 5 times by 1 test: end of block
Executed by:
  • Self test
5
1205 else if (errno == ERANGE)
(*__errno_location ()) == 34Description
TRUEnever evaluated
FALSEevaluated 1596 times by 1 test
Evaluated by:
  • Self test
0-1596
1206 printf_erange (garglist->word->word);
never executed: printf_erange (garglist->word->word);
0
1207-
1208 garglist = garglist->next;-
1209 return (ret);
executed 1601 times by 1 test: return (ret);
Executed by:
  • Self test
1601
1210}-
1211-
1212static floatmax_t-
1213getfloatmax ()-
1214{-
1215 floatmax_t ret;-
1216 char *ep;-
1217-
1218 if (garglist == 0)
garglist == 0Description
TRUEevaluated 7 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 158 times by 1 test
Evaluated by:
  • Self test
7-158
1219 return (0);
executed 7 times by 1 test: return (0);
Executed by:
  • Self test
7
1220-
1221 if (garglist->word->word[0] == '\'' || garglist->word->word[0] == '"')
garglist->word...ord[0] == '\''Description
TRUEevaluated 5 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 153 times by 1 test
Evaluated by:
  • Self test
garglist->word->word[0] == '"'Description
TRUEevaluated 5 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 148 times by 1 test
Evaluated by:
  • Self test
5-153
1222 return asciicode ();
executed 10 times by 1 test: return asciicode ();
Executed by:
  • Self test
10
1223-
1224 errno = 0;-
1225 ret = strtofltmax (garglist->word->word, &ep);-
1226-
1227 if (*ep)
*epDescription
TRUEnever evaluated
FALSEevaluated 148 times by 1 test
Evaluated by:
  • Self test
0-148
1228 {-
1229 sh_invalidnum (garglist->word->word);-
1230 /* Same thing about POSIX.2 conversion error requirements. */-
1231 ret = 0;-
1232 conversion_error = 1;-
1233 }
never executed: end of block
0
1234 else if (errno == ERANGE)
(*__errno_location ()) == 34Description
TRUEnever evaluated
FALSEevaluated 148 times by 1 test
Evaluated by:
  • Self test
0-148
1235 printf_erange (garglist->word->word);
never executed: printf_erange (garglist->word->word);
0
1236-
1237 garglist = garglist->next;-
1238 return (ret);
executed 148 times by 1 test: return (ret);
Executed by:
  • Self test
148
1239}-
1240-
1241/* NO check is needed for garglist here. */-
1242static intmax_t-
1243asciicode ()-
1244{-
1245 register intmax_t ch;-
1246#if defined (HANDLE_MULTIBYTE)-
1247 wchar_t wc;-
1248 size_t slen;-
1249 int mblength;-
1250#endif-
1251 DECLARE_MBSTATE;-
1252-
1253#if defined (HANDLE_MULTIBYTE)-
1254 slen = strlen (garglist->word->word+1);-
1255 wc = 0;-
1256 mblength = mbtowc (&wc, garglist->word->word+1, slen);-
1257 if (mblength > 0)
mblength > 0Description
TRUEevaluated 76 times by 1 test
Evaluated by:
  • Self test
FALSEnever evaluated
0-76
1258 ch = wc; /* XXX */
executed 76 times by 1 test: ch = wc;
Executed by:
  • Self test
76
1259 else-
1260#endif-
1261 ch = (unsigned char)garglist->word->word[1];
never executed: ch = (unsigned char)garglist->word->word[1];
0
1262-
1263 garglist = garglist->next;-
1264 return (ch);
executed 76 times by 1 test: return (ch);
Executed by:
  • Self test
76
1265}-
1266-
1267static SHELL_VAR *-
1268bind_printf_variable (name, value, flags)-
1269 char *name;-
1270 char *value;-
1271 int flags;-
1272{-
1273 SHELL_VAR *v;-
1274-
1275#if defined (ARRAY_VARS)-
1276 if (valid_array_reference (name, assoc_expand_once) == 0)
valid_array_re...and_once) == 0Description
TRUEevaluated 3022 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 2 times by 1 test
Evaluated by:
  • Self test
2-3022
1277 v = bind_variable (name, value, flags);
executed 3022 times by 1 test: v = bind_variable (name, value, flags);
Executed by:
  • Self test
3022
1278 else-
1279 v = assign_array_element (name, value, flags | (assoc_expand_once ? ASS_NOEXPAND : 0));
executed 2 times by 1 test: v = assign_array_element (name, value, flags | (assoc_expand_once ? 0x0080 : 0));
Executed by:
  • Self test
2
1280#else /* !ARRAY_VARS */-
1281 v = bind_variable (name, value, flags);-
1282#endif /* !ARRAY_VARS */-
1283-
1284 if (v && readonly_p (v) == 0 && noassign_p (v) == 0)
vDescription
TRUEevaluated 3014 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 10 times by 1 test
Evaluated by:
  • Self test
((((v)->attrib...000002))) == 0Description
TRUEevaluated 3014 times by 1 test
Evaluated by:
  • Self test
FALSEnever evaluated
((((v)->attrib...004000))) == 0Description
TRUEevaluated 3014 times by 1 test
Evaluated by:
  • Self test
FALSEnever evaluated
0-3014
1285 VUNSETATTR (v, att_invisible);
executed 3014 times by 1 test: ((v)->attributes &= ~(0x0001000));
Executed by:
  • Self test
3014
1286-
1287 return v;
executed 3024 times by 1 test: return v;
Executed by:
  • Self test
3024
1288}-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.1.2