diff options
author | Richard Jones <rjones@trick.home.annexia.org> | 2009-07-18 10:43:52 +0100 |
---|---|---|
committer | Richard Jones <rjones@trick.home.annexia.org> | 2009-07-18 10:43:52 +0100 |
commit | 78029b529ad98769685d607230b70f71832d5906 (patch) | |
tree | f103cb7252ccca7efc3e39f4400f961d5972937c /daemon/find.c | |
parent | e8c954933b2bfb3bc3ead5a151d49d164f1a8eab (diff) | |
download | libguestfs-78029b529ad98769685d607230b70f71832d5906.tar.gz libguestfs-78029b529ad98769685d607230b70f71832d5906.tar.xz libguestfs-78029b529ad98769685d607230b70f71832d5906.zip |
Make /sysroot path configurable.
Currently /sysroot is hard-coded throughout the daemon code.
This patch turns the path into a variable so that we can change
it in future, for example to allow standalone mode to be implemented.
This patch was tested by running all the C API tests successfully.
Diffstat (limited to 'daemon/find.c')
-rw-r--r-- | daemon/find.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/daemon/find.c b/daemon/find.c index 85994b6d..d8829530 100644 --- a/daemon/find.c +++ b/daemon/find.c @@ -56,21 +56,27 @@ do_find (char *dir) FILE *fp; char **res = NULL; int size = 0, alloc = 0; - char sysrootdir[PATH_MAX]; + char *sysrootdir; char str[PATH_MAX]; NEED_ROOT (NULL); ABS_PATH (dir, NULL); - snprintf (sysrootdir, sizeof sysrootdir, "/sysroot%s", dir); + sysrootdir = sysroot_path (dir); + if (!sysrootdir) { + reply_with_perror ("malloc"); + return NULL; + } r = stat (sysrootdir, &statbuf); if (r == -1) { reply_with_perror ("%s", dir); + free (sysrootdir); return NULL; } if (!S_ISDIR (statbuf.st_mode)) { reply_with_error ("%s: not a directory", dir); + free (sysrootdir); return NULL; } @@ -81,11 +87,13 @@ do_find (char *dir) cmd = malloc (len); if (!cmd) { reply_with_perror ("malloc"); + free (sysrootdir); return NULL; } strcpy (cmd, "find "); shell_quote (cmd+5, len-5, sysrootdir); + free (sysrootdir); strcat (cmd, " -print0"); if (verbose) |