On Tue, Mar 17, 2015 at 03:33:09PM +0100, Maros Zatko wrote: > --- > cat/ls.c | 31 ++++++++++++++++++++++++++++++- > 1 file changed, 30 insertions(+), 1 deletion(-) > > diff --git a/cat/ls.c b/cat/ls.c > index 9161fb6..151c11d 100644 > --- a/cat/ls.c > +++ b/cat/ls.c > @@ -37,6 +37,7 @@ > > #include "options.h" > #include "visit.h" > +#include "windows.h" > > /* Currently open libguestfs handle. */ > guestfs_h *g; > @@ -76,6 +77,8 @@ static void output_int64_uid (int64_t); > static void output_string (const char *); > static void output_string_link (const char *); > > +static char *from_maybe_windows_path (const char *); > + > static void __attribute__((noreturn)) > usage (int status) > { > @@ -374,7 +377,7 @@ main (int argc, char *argv[]) > unsigned errors = 0; > > while (optind < argc) { > - const char *dir = argv[optind]; > + const char *dir = from_maybe_windows_path(argv[optind]); > > switch (mode) { > case 0: /* no -l or -R option */ > @@ -401,6 +404,7 @@ main (int argc, char *argv[]) > abort (); /* can't happen */ > } > > + free (dir);
Use CLEANUP_FREE instead? > optind++; > } > > @@ -409,6 +413,31 @@ main (int argc, char *argv[]) > exit (errors == 0 ? EXIT_SUCCESS : EXIT_FAILURE); > } > > +static char * > +from_maybe_windows_path (const char *dir) > +{ > + CLEANUP_FREE_STRING_LIST char **roots = NULL; > + char *path = NULL; > + char *root; > + > + roots = guestfs_inspect_get_roots (g); > + assert (roots); > + assert (roots[0] != NULL); > + assert (roots[1] == NULL); > + root = roots[0]; > + > + if (is_windows (g, root)) { > + path = windows_path (g, root, dir, 1 /* readonly */ ); > + if (path == NULL) { > + guestfs_close (g); > + exit (EXIT_FAILURE); > + } > + return path; > + } > + > + return safe_strdup (g, dir); > +} Hmmm. This isn't very similar to what cat/cat.c does. In cat/cat.c we do the inspection once only (inspection is expensive), and then we call windows_path conditionally based on that result. See: https://github.com/libguestfs/libguestfs/blob/master/cat/cat.c#L283-L301 Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-df lists disk usage of guests without needing to install any software inside the virtual machine. Supports Linux and Windows. http://people.redhat.com/~rjones/virt-df/ _______________________________________________ Libguestfs mailing list Libguestfs@redhat.com https://www.redhat.com/mailman/listinfo/libguestfs