X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=daemon%2Ffile.c;h=476f44569a1d99ef93ac5a673eb3efb682f47c59;hb=956fc5a3feacc970ea763697bf28fb686c875408;hp=a55c606615f984d36b6a247ac4be13111fbe6505;hpb=4df593496e116dfb635731c058b7627e81fc179c;p=libguestfs.git diff --git a/daemon/file.c b/daemon/file.c index a55c606..476f445 100644 --- a/daemon/file.c +++ b/daemon/file.c @@ -270,40 +270,6 @@ do_lchown (int owner, int group, const char *path) } int -do_exists (const char *path) -{ - int r; - - CHROOT_IN; - r = access (path, F_OK); - CHROOT_OUT; - - return r == 0; -} - -int -do_is_file (const char *path) -{ - int r; - struct stat buf; - - CHROOT_IN; - r = lstat (path, &buf); - CHROOT_OUT; - - if (r == -1) { - if (errno != ENOENT && errno != ENOTDIR) { - reply_with_perror ("stat: %s", path); - return -1; - } - else - return 0; /* Not a file. */ - } - - return S_ISREG (buf.st_mode); -} - -int do_write_file (const char *path, const char *content, int size) { int fd; @@ -581,8 +547,13 @@ do_file (const char *path) } } + /* Which flags to use? For /dev paths, follow links because + * /dev/VG/LV is a symbolic link. + */ + const char *flags = is_dev ? "-zbsL" : "-zb"; + char *out, *err; - int r = command (&out, &err, "file", "-zbs", path, NULL); + int r = command (&out, &err, "file", flags, path, NULL); free (buf); if (r == -1) {