2 * Unix SMB/CIFS implementation.
3 * SMB parameters and setup
4 * Copyright (C) Andrew Tridgell 1992-1998 Modified by Jeremy Allison 1995.
6 * This program is free software; you can redistribute it and/or modify it under
7 * the terms of the GNU General Public License as published by the Free
8 * Software Foundation; either version 3 of the License, or (at your option)
11 * This program is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
16 * You should have received a copy of the GNU General Public License along with
17 * this program; if not, see <http://www.gnu.org/licenses/>.
21 #include "lib/sys_rw.h"
24 Load from a pipe into memory.
27 static char *file_pload(const char *syscmd
, size_t *size
)
34 fd
= sys_popen(syscmd
);
42 while ((n
= sys_read(fd
, buf
, sizeof(buf
))) > 0) {
43 p
= talloc_realloc(NULL
, p
, char, total
+ n
+ 1);
45 DEBUG(0,("file_pload: failed to expand buffer!\n"));
49 memcpy(p
+total
, buf
, n
);
57 /* FIXME: Perhaps ought to check that the command completed
58 * successfully (returned 0); if not the data may be
72 Load a pipe into memory and return an array of pointers to lines in the data
73 must be freed with TALLOC_FREE.
76 char **file_lines_pload(const char *syscmd
, int *numlines
)
81 p
= file_pload(syscmd
, &size
);
86 return file_lines_parse(p
, size
, numlines
, NULL
);