X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=fish%2Fcopy.c;h=a7274f35a76cd927e53875f5a8feeea04094be4b;hb=d3c6e50422562af592682fdd58dbadc98069ef18;hp=789e430d177ba72bd28169ce2bd250e9b0cd77b8;hpb=2635a9c70e5f8aab85bbcb6b7a645f720d1e4466;p=libguestfs.git diff --git a/fish/copy.c b/fish/copy.c index 789e430..a7274f3 100644 --- a/fish/copy.c +++ b/fish/copy.c @@ -22,7 +22,6 @@ #include #include #include -#include #include #include #include @@ -31,7 +30,7 @@ static int make_tar_from_local (const char *local); static int make_tar_output (const char *local, const char *basename); -static int split_path (char *buf, size_t buf_size, const char *path, char **dirname, char **basename); +static int split_path (char *buf, size_t buf_size, const char *path, const char **dirname, const char **basename); int do_copy_in (const char *cmd, int argc, char *argv[]) @@ -119,7 +118,7 @@ make_tar_from_local (const char *local) close (fd[1]); char buf[PATH_MAX]; - char *dirname, *basename; + const char *dirname, *basename; if (split_path (buf, sizeof buf, local, &dirname, &basename) == -1) _exit (EXIT_FAILURE); @@ -132,7 +131,7 @@ make_tar_from_local (const char *local) */ static int split_path (char *buf, size_t buf_size, - const char *path, char **dirname, char **basename) + const char *path, const char **dirname, const char **basename) { size_t len = strlen (path); if (len == 0 || len > buf_size - 1) { @@ -148,11 +147,14 @@ split_path (char *buf, size_t buf_size, } char *p = strrchr (buf, '/'); - if (p && p > buf) { + if (p && p > buf) { /* "foo/bar" */ *p = '\0'; p++; if (dirname) *dirname = buf; if (basename) *basename = p; + } else if (p && p == buf) { /* "/foo" */ + if (dirname) *dirname = "/"; + if (basename) *basename = buf+1; } else { if (dirname) *dirname = NULL; if (basename) *basename = buf; @@ -204,7 +206,7 @@ do_copy_out (const char *cmd, int argc, char *argv[]) return -1; if (r == 1) { /* is file */ char buf[PATH_MAX]; - char *basename; + const char *basename; if (split_path (buf, sizeof buf, argv[i], NULL, &basename) == -1) return -1; @@ -225,7 +227,7 @@ do_copy_out (const char *cmd, int argc, char *argv[]) } char buf[PATH_MAX]; - char *basename; + const char *basename; if (split_path (buf, sizeof buf, argv[i], NULL, &basename) == -1) return -1;