OpenCoverage

zmapfd.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/bash/src/lib/sh/zmapfd.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/* zmapfd - read contents of file descriptor into a newly-allocated buffer */-
2-
3/* Copyright (C) 2006 Free Software Foundation, Inc.-
4-
5 This file is part of GNU Bash, the Bourne Again SHell.-
6-
7 Bash is free software: you can redistribute it and/or modify-
8 it under the terms of the GNU General Public License as published by-
9 the Free Software Foundation, either version 3 of the License, or-
10 (at your option) any later version.-
11-
12 Bash is distributed in the hope that it will be useful,-
13 but WITHOUT ANY WARRANTY; without even the implied warranty of-
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the-
15 GNU General Public License for more details.-
16-
17 You should have received a copy of the GNU General Public License-
18 along with Bash. If not, see <http://www.gnu.org/licenses/>.-
19*/-
20-
21#include <config.h>-
22-
23#include <sys/types.h>-
24-
25#if defined (HAVE_UNISTD_H)-
26# include <unistd.h>-
27#endif-
28-
29#include <errno.h>-
30-
31#include "bashansi.h"-
32#include "command.h"-
33#include "general.h"-
34-
35#if !defined (errno)-
36extern int errno;-
37#endif-
38-
39extern ssize_t zread __P((int, char *, size_t));-
40-
41/* Dump contents of file descriptor FD to *OSTR. FN is the filename for-
42 error messages (not used right now). */-
43int-
44zmapfd (fd, ostr, fn)-
45 int fd;-
46 char **ostr;-
47 char *fn;-
48{-
49 ssize_t nr;-
50 int rval;-
51 char lbuf[128];-
52 char *result;-
53 int rsize, rind;-
54-
55 rval = 0;-
56 result = (char *)xmalloc (rsize = 64);-
57 rind = 0;-
58-
59 while (1)-
60 {-
61 nr = zread (fd, lbuf, sizeof (lbuf));-
62 if (nr == 0)
nr == 0Description
TRUEevaluated 20 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 6 times by 1 test
Evaluated by:
  • Self test
6-20
63 {-
64 rval = rind;-
65 break;
executed 20 times by 1 test: break;
Executed by:
  • Self test
20
66 }-
67 else if (nr < 0)
nr < 0Description
TRUEnever evaluated
FALSEevaluated 6 times by 1 test
Evaluated by:
  • Self test
0-6
68 {-
69 free (result);-
70 if (ostr)
ostrDescription
TRUEnever evaluated
FALSEnever evaluated
0
71 *ostr = (char *)NULL;
never executed: *ostr = (char *) ((void *)0) ;
0
72 return -1;
never executed: return -1;
0
73 }-
74-
75 RESIZE_MALLOCED_BUFFER (result, rind, nr, rsize, 128);
never executed: rsize += (128);
never executed: end of block
(rind) + (nr) >= rsizeDescription
TRUEnever evaluated
FALSEevaluated 6 times by 1 test
Evaluated by:
  • Self test
(rind) + (nr) >= rsizeDescription
TRUEnever evaluated
FALSEnever evaluated
0-6
76 memcpy (result+rind, lbuf, nr);-
77 rind += nr;-
78 }
executed 6 times by 1 test: end of block
Executed by:
  • Self test
6
79-
80 RESIZE_MALLOCED_BUFFER (result, rind, 1, rsize, 128);
never executed: rsize += (128);
never executed: end of block
(rind) + (1) >= rsizeDescription
TRUEnever evaluated
FALSEevaluated 20 times by 1 test
Evaluated by:
  • Self test
(rind) + (1) >= rsizeDescription
TRUEnever evaluated
FALSEnever evaluated
0-20
81 result[rind] = '\0';-
82-
83 if (ostr)
ostrDescription
TRUEevaluated 20 times by 1 test
Evaluated by:
  • Self test
FALSEnever evaluated
0-20
84 *ostr = result;
executed 20 times by 1 test: *ostr = result;
Executed by:
  • Self test
20
85 else-
86 free (result);
never executed: sh_xfree((result), "zmapfd.c", 86);
0
87-
88 return rval;
executed 20 times by 1 test: return rval;
Executed by:
  • Self test
20
89}-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.1.2