X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=daemon%2Fls.c;h=e2ca55f8c4e37155b11705755c225653e29908db;hb=2361905686c62b4163232139c3d390acd2c07916;hp=261bc96481f2e97b7ec93a31ac44590af3f12746;hpb=8e570870f577ff0c3db074f88924633b559af5d4;p=libguestfs.git diff --git a/daemon/ls.c b/daemon/ls.c index 261bc96..e2ca55f 100644 --- a/daemon/ls.c +++ b/daemon/ls.c @@ -1,5 +1,5 @@ /* libguestfs - the guestfsd daemon - * Copyright (C) 2009 Red Hat Inc. + * Copyright (C) 2009 Red Hat Inc. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -30,7 +30,7 @@ #include "actions.h" char ** -do_ls (const char *path) +do_ls (char *path) { char **r = NULL; int size = 0, alloc = 0; @@ -74,29 +74,30 @@ do_ls (const char *path) return r; } +/* Because we can't chroot and run the ls command (since 'ls' won't + * necessarily exist in the chroot), this command can be used to escape + * from the sysroot (eg. 'll /..'). This command is not meant for + * serious use anyway, just for quick interactive sessions. + * + * FIXME: eventually, provide a "debug ll" command that would list files + * in the appliance. + */ + char * -do_ll (const char *path) +do_ll (char *path) { - int r, len; + int r; char *out, *err; char *spath; - //NEED_ROOT + NEED_ROOT (NULL); ABS_PATH (path, NULL); - /* This exposes the /sysroot, because we can't chroot and run the ls - * command (since 'ls' won't necessarily exist in the chroot). This - * command is not meant for serious use anyway, just for quick - * interactive sessions. For the same reason, you can also "escape" - * the sysroot (eg. 'll /..'). - */ - len = strlen (path) + 9; - spath = malloc (len); + spath = sysroot_path (path); if (!spath) { reply_with_perror ("malloc"); return NULL; } - snprintf (spath, len, "/sysroot%s", path); r = command (&out, &err, "ls", "-la", spath, NULL); free (spath);