mirror of
https://github.com/samba-team/samba.git
synced 2024-12-22 13:34:15 +03:00
s3:util: Move static file_pload() function to lib/util
file_pload() is static private function in Samba3 library, however it does not have any special dependencies and might be widely used as common function, so moving it into common samba-util library. Signed-off-by: Aliaksei Karaliou <akaraliou@panasas.com> Reviewed-by: Garming Sam <garming@catalyst.net.nz> Reviewed-by: Andrew Bartlett <abartlet@samba.org>
This commit is contained in:
parent
65ea3f2a46
commit
d21fc7d8b8
@ -394,6 +394,11 @@ _PUBLIC_ int fdprintf(int fd, const char *format, ...) PRINTF_ATTRIBUTE(2,3);
|
||||
*/
|
||||
bool file_compare(const char *path1, const char *path2);
|
||||
|
||||
/*
|
||||
load from a pipe into memory.
|
||||
*/
|
||||
char *file_pload(const char *syscmd, size_t *size);
|
||||
|
||||
/* The following definitions come from lib/util/util.c */
|
||||
|
||||
|
||||
|
@ -24,6 +24,8 @@
|
||||
#include "system/filesys.h"
|
||||
#include <talloc.h>
|
||||
#include "lib/util/samba_util.h"
|
||||
#include "lib/util/sys_popen.h"
|
||||
#include "lib/util/sys_rw.h"
|
||||
#include "lib/util/debug.h"
|
||||
|
||||
/**
|
||||
@ -362,3 +364,49 @@ bool file_compare(const char *path1, const char *path2)
|
||||
talloc_free(mem_ctx);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Load from a pipe into memory.
|
||||
**/
|
||||
char *file_pload(const char *syscmd, size_t *size)
|
||||
{
|
||||
int fd, n;
|
||||
char *p;
|
||||
char buf[1024];
|
||||
size_t total;
|
||||
|
||||
fd = sys_popen(syscmd);
|
||||
if (fd == -1) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
p = NULL;
|
||||
total = 0;
|
||||
|
||||
while ((n = sys_read(fd, buf, sizeof(buf))) > 0) {
|
||||
p = talloc_realloc(NULL, p, char, total + n + 1);
|
||||
if (!p) {
|
||||
DEBUG(0,("file_pload: failed to expand buffer!\n"));
|
||||
close(fd);
|
||||
return NULL;
|
||||
}
|
||||
memcpy(p+total, buf, n);
|
||||
total += n;
|
||||
}
|
||||
|
||||
if (p) {
|
||||
p[total] = 0;
|
||||
}
|
||||
|
||||
/* FIXME: Perhaps ought to check that the command completed
|
||||
* successfully (returned 0); if not the data may be
|
||||
* truncated. */
|
||||
sys_pclose(fd);
|
||||
|
||||
if (size) {
|
||||
*size = total;
|
||||
}
|
||||
|
||||
return p;
|
||||
}
|
||||
|
@ -151,53 +151,6 @@ int file_pload_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
Load from a pipe into memory.
|
||||
**/
|
||||
|
||||
static char *file_pload(const char *syscmd, size_t *size)
|
||||
{
|
||||
int fd, n;
|
||||
char *p;
|
||||
char buf[1024];
|
||||
size_t total;
|
||||
|
||||
fd = sys_popen(syscmd);
|
||||
if (fd == -1) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
p = NULL;
|
||||
total = 0;
|
||||
|
||||
while ((n = sys_read(fd, buf, sizeof(buf))) > 0) {
|
||||
p = talloc_realloc(NULL, p, char, total + n + 1);
|
||||
if (!p) {
|
||||
DEBUG(0,("file_pload: failed to expand buffer!\n"));
|
||||
close(fd);
|
||||
return NULL;
|
||||
}
|
||||
memcpy(p+total, buf, n);
|
||||
total += n;
|
||||
}
|
||||
|
||||
if (p) {
|
||||
p[total] = 0;
|
||||
}
|
||||
|
||||
/* FIXME: Perhaps ought to check that the command completed
|
||||
* successfully (returned 0); if not the data may be
|
||||
* truncated. */
|
||||
sys_pclose(fd);
|
||||
|
||||
if (size) {
|
||||
*size = total;
|
||||
}
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
Load a pipe into memory and return an array of pointers to lines in the data
|
||||
|
Loading…
Reference in New Issue
Block a user