summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/tests/test_cmd.c38
-rw-r--r--lib/utils_cmd.c21
-rw-r--r--lib/utils_cmd.h12
3 files changed, 35 insertions, 36 deletions
diff --git a/lib/tests/test_cmd.c b/lib/tests/test_cmd.c
index 29ca42ac..d67c4d57 100644
--- a/lib/tests/test_cmd.c
+++ b/lib/tests/test_cmd.c
@@ -40,13 +40,11 @@ get_command (char *const *line)
40} 40}
41 41
42int 42int
43main (int argc, char **argv) 43main ()
44{ 44{
45 char **command_line = malloc (sizeof (char *) * COMMAND_LINE); 45 char **command_line = malloc (sizeof (char *) * COMMAND_LINE);
46 char *command = NULL; 46 char *command = NULL;
47 char *perl; 47 cmd_output chld_out, chld_err;
48 output chld_out, chld_err;
49 int c;
50 int result = UNSET; 48 int result = UNSET;
51 49
52 plan_tests(51); 50 plan_tests(51);
@@ -54,8 +52,8 @@ main (int argc, char **argv)
54 diag ("Running plain echo command, set one"); 52 diag ("Running plain echo command, set one");
55 53
56 /* ensure everything is empty before we begin */ 54 /* ensure everything is empty before we begin */
57 memset (&chld_out, 0, sizeof (output)); 55 memset (&chld_out, 0, sizeof (cmd_output));
58 memset (&chld_err, 0, sizeof (output)); 56 memset (&chld_err, 0, sizeof (cmd_output));
59 ok (chld_out.lines == 0, "(initialised) Checking stdout is reset"); 57 ok (chld_out.lines == 0, "(initialised) Checking stdout is reset");
60 ok (chld_err.lines == 0, "(initialised) Checking stderr is reset"); 58 ok (chld_err.lines == 0, "(initialised) Checking stderr is reset");
61 ok (result == UNSET, "(initialised) Checking exit code is reset"); 59 ok (result == UNSET, "(initialised) Checking exit code is reset");
@@ -78,8 +76,8 @@ main (int argc, char **argv)
78 ok (result == 0, "(array) Checking exit code"); 76 ok (result == 0, "(array) Checking exit code");
79 77
80 /* ensure everything is empty again */ 78 /* ensure everything is empty again */
81 memset (&chld_out, 0, sizeof (output)); 79 memset (&chld_out, 0, sizeof (cmd_output));
82 memset (&chld_err, 0, sizeof (output)); 80 memset (&chld_err, 0, sizeof (cmd_output));
83 result = UNSET; 81 result = UNSET;
84 ok (chld_out.lines == 0, "(initialised) Checking stdout is reset"); 82 ok (chld_out.lines == 0, "(initialised) Checking stdout is reset");
85 ok (chld_err.lines == 0, "(initialised) Checking stderr is reset"); 83 ok (chld_err.lines == 0, "(initialised) Checking stderr is reset");
@@ -98,8 +96,8 @@ main (int argc, char **argv)
98 diag ("Running plain echo command, set two"); 96 diag ("Running plain echo command, set two");
99 97
100 /* ensure everything is empty again */ 98 /* ensure everything is empty again */
101 memset (&chld_out, 0, sizeof (output)); 99 memset (&chld_out, 0, sizeof (cmd_output));
102 memset (&chld_err, 0, sizeof (output)); 100 memset (&chld_err, 0, sizeof (cmd_output));
103 result = UNSET; 101 result = UNSET;
104 ok (chld_out.lines == 0, "(initialised) Checking stdout is reset"); 102 ok (chld_out.lines == 0, "(initialised) Checking stdout is reset");
105 ok (chld_err.lines == 0, "(initialised) Checking stderr is reset"); 103 ok (chld_err.lines == 0, "(initialised) Checking stderr is reset");
@@ -121,8 +119,8 @@ main (int argc, char **argv)
121 ok (result == 0, "(array) Checking exit code"); 119 ok (result == 0, "(array) Checking exit code");
122 120
123 /* ensure everything is empty again */ 121 /* ensure everything is empty again */
124 memset (&chld_out, 0, sizeof (output)); 122 memset (&chld_out, 0, sizeof (cmd_output));
125 memset (&chld_err, 0, sizeof (output)); 123 memset (&chld_err, 0, sizeof (cmd_output));
126 result = UNSET; 124 result = UNSET;
127 ok (chld_out.lines == 0, "(initialised) Checking stdout is reset"); 125 ok (chld_out.lines == 0, "(initialised) Checking stdout is reset");
128 ok (chld_err.lines == 0, "(initialised) Checking stderr is reset"); 126 ok (chld_err.lines == 0, "(initialised) Checking stderr is reset");
@@ -140,8 +138,8 @@ main (int argc, char **argv)
140 138
141 139
142 /* ensure everything is empty again */ 140 /* ensure everything is empty again */
143 memset (&chld_out, 0, sizeof (output)); 141 memset (&chld_out, 0, sizeof (cmd_output));
144 memset (&chld_err, 0, sizeof (output)); 142 memset (&chld_err, 0, sizeof (cmd_output));
145 result = UNSET; 143 result = UNSET;
146 ok (chld_out.lines == 0, "(initialised) Checking stdout is reset"); 144 ok (chld_out.lines == 0, "(initialised) Checking stdout is reset");
147 ok (chld_err.lines == 0, "(initialised) Checking stderr is reset"); 145 ok (chld_err.lines == 0, "(initialised) Checking stderr is reset");
@@ -168,8 +166,8 @@ main (int argc, char **argv)
168 166
169 167
170 /* ensure everything is empty again */ 168 /* ensure everything is empty again */
171 memset (&chld_out, 0, sizeof (output)); 169 memset (&chld_out, 0, sizeof (cmd_output));
172 memset (&chld_err, 0, sizeof (output)); 170 memset (&chld_err, 0, sizeof (cmd_output));
173 result = UNSET; 171 result = UNSET;
174 ok (chld_out.lines == 0, "(initialised) Checking stdout is reset"); 172 ok (chld_out.lines == 0, "(initialised) Checking stdout is reset");
175 ok (chld_err.lines == 0, "(initialised) Checking stderr is reset"); 173 ok (chld_err.lines == 0, "(initialised) Checking stderr is reset");
@@ -187,8 +185,8 @@ main (int argc, char **argv)
187 185
188 186
189 /* ensure everything is empty again */ 187 /* ensure everything is empty again */
190 memset (&chld_out, 0, sizeof (output)); 188 memset (&chld_out, 0, sizeof (cmd_output));
191 memset (&chld_err, 0, sizeof (output)); 189 memset (&chld_err, 0, sizeof (cmd_output));
192 result = UNSET; 190 result = UNSET;
193 191
194 command = (char *)malloc(COMMAND_LINE); 192 command = (char *)malloc(COMMAND_LINE);
@@ -214,8 +212,8 @@ main (int argc, char **argv)
214 212
215 213
216 /* ensure everything is empty again */ 214 /* ensure everything is empty again */
217 memset (&chld_out, 0, sizeof (output)); 215 memset (&chld_out, 0, sizeof (cmd_output));
218 memset (&chld_err, 0, sizeof (output)); 216 memset (&chld_err, 0, sizeof (cmd_output));
219 result = UNSET; 217 result = UNSET;
220 218
221 command = (char *)malloc(COMMAND_LINE); 219 command = (char *)malloc(COMMAND_LINE);
diff --git a/lib/utils_cmd.c b/lib/utils_cmd.c
index 795840d3..2dc5deb0 100644
--- a/lib/utils_cmd.c
+++ b/lib/utils_cmd.c
@@ -70,7 +70,7 @@ extern char **environ;
70static int _cmd_open (char *const *, int *, int *) 70static int _cmd_open (char *const *, int *, int *)
71 __attribute__ ((__nonnull__ (1, 2, 3))); 71 __attribute__ ((__nonnull__ (1, 2, 3)));
72 72
73static int _cmd_fetch_output (int, output *, int) 73static int _cmd_fetch_output (int, cmd_output *, int)
74 __attribute__ ((__nonnull__ (2))); 74 __attribute__ ((__nonnull__ (2)));
75 75
76static int _cmd_close (int); 76static int _cmd_close (int);
@@ -196,7 +196,7 @@ _cmd_close (int fd)
196 196
197 197
198static int 198static int
199_cmd_fetch_output (int fd, output * op, int flags) 199_cmd_fetch_output (int fd, cmd_output * op, int flags)
200{ 200{
201 size_t len = 0, i = 0, lineno = 0; 201 size_t len = 0, i = 0, lineno = 0;
202 size_t rsf = 6, ary_size = 0; /* rsf = right shift factor, dec'ed uncond once */ 202 size_t rsf = 6, ary_size = 0; /* rsf = right shift factor, dec'ed uncond once */
@@ -267,9 +267,8 @@ _cmd_fetch_output (int fd, output * op, int flags)
267 267
268 268
269int 269int
270cmd_run (const char *cmdstring, output * out, output * err, int flags) 270cmd_run (const char *cmdstring, cmd_output * out, cmd_output * err, int flags)
271{ 271{
272 int fd, pfd_out[2], pfd_err[2];
273 int i = 0, argc; 272 int i = 0, argc;
274 size_t cmdlen; 273 size_t cmdlen;
275 char **argv = NULL; 274 char **argv = NULL;
@@ -281,9 +280,9 @@ cmd_run (const char *cmdstring, output * out, output * err, int flags)
281 280
282 /* initialize the structs */ 281 /* initialize the structs */
283 if (out) 282 if (out)
284 memset (out, 0, sizeof (output)); 283 memset (out, 0, sizeof (cmd_output));
285 if (err) 284 if (err)
286 memset (err, 0, sizeof (output)); 285 memset (err, 0, sizeof (cmd_output));
287 286
288 /* make copy of command string so strtok() doesn't silently modify it */ 287 /* make copy of command string so strtok() doesn't silently modify it */
289 /* (the calling program may want to access it later) */ 288 /* (the calling program may want to access it later) */
@@ -342,15 +341,15 @@ cmd_run (const char *cmdstring, output * out, output * err, int flags)
342} 341}
343 342
344int 343int
345cmd_run_array (char *const *argv, output * out, output * err, int flags) 344cmd_run_array (char *const *argv, cmd_output * out, cmd_output * err, int flags)
346{ 345{
347 int fd, pfd_out[2], pfd_err[2]; 346 int fd, pfd_out[2], pfd_err[2];
348 347
349 /* initialize the structs */ 348 /* initialize the structs */
350 if (out) 349 if (out)
351 memset (out, 0, sizeof (output)); 350 memset (out, 0, sizeof (cmd_output));
352 if (err) 351 if (err)
353 memset (err, 0, sizeof (output)); 352 memset (err, 0, sizeof (cmd_output));
354 353
355 if ((fd = _cmd_open (argv, pfd_out, pfd_err)) == -1) 354 if ((fd = _cmd_open (argv, pfd_out, pfd_err)) == -1)
356 die (STATE_UNKNOWN, _("Could not open pipe: %s\n"), argv[0]); 355 die (STATE_UNKNOWN, _("Could not open pipe: %s\n"), argv[0]);
@@ -364,11 +363,11 @@ cmd_run_array (char *const *argv, output * out, output * err, int flags)
364} 363}
365 364
366int 365int
367cmd_file_read ( char *filename, output *out, int flags) 366cmd_file_read ( char *filename, cmd_output *out, int flags)
368{ 367{
369 int fd; 368 int fd;
370 if(out) 369 if(out)
371 memset (out, 0, sizeof(output)); 370 memset (out, 0, sizeof(cmd_output));
372 371
373 if ((fd = open(filename, O_RDONLY)) == -1) { 372 if ((fd = open(filename, O_RDONLY)) == -1) {
374 die( STATE_UNKNOWN, _("Error opening %s: %s"), filename, strerror(errno) ); 373 die( STATE_UNKNOWN, _("Error opening %s: %s"), filename, strerror(errno) );
diff --git a/lib/utils_cmd.h b/lib/utils_cmd.h
index 6f3aeb81..b37c7712 100644
--- a/lib/utils_cmd.h
+++ b/lib/utils_cmd.h
@@ -7,8 +7,10 @@
7 * 7 *
8 */ 8 */
9 9
10#include <sys/types.h>
11
10/** types **/ 12/** types **/
11struct output 13struct cmd_output
12{ 14{
13 char *buf; /* output buffer */ 15 char *buf; /* output buffer */
14 size_t buflen; /* output buffer content length */ 16 size_t buflen; /* output buffer content length */
@@ -17,12 +19,12 @@ struct output
17 size_t lines; /* lines of output */ 19 size_t lines; /* lines of output */
18}; 20};
19 21
20typedef struct output output; 22typedef struct cmd_output cmd_output;
21 23
22/** prototypes **/ 24/** prototypes **/
23int cmd_run (const char *, output *, output *, int); 25int cmd_run (const char *, cmd_output *, cmd_output *, int);
24int cmd_run_array (char *const *, output *, output *, int); 26int cmd_run_array (char *const *, cmd_output *, cmd_output *, int);
25int cmd_file_read (char *, output *, int); 27int cmd_file_read (char *, cmd_output *, int);
26 28
27/* only multi-threaded plugins need to bother with this */ 29/* only multi-threaded plugins need to bother with this */
28void cmd_init (void); 30void cmd_init (void);