git.annexia.org
/
libguestfs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Ignore launch() error in virt-rescue. (RHBZ#618556)
[libguestfs.git]
/
daemon
/
dir.c
diff --git
a/daemon/dir.c
b/daemon/dir.c
index
b603cfd
..
3a4647c
100644
(file)
--- a/
daemon/dir.c
+++ b/
daemon/dir.c
@@
-39,7
+39,7
@@
do_rmdir (const char *path)
CHROOT_OUT;
if (r == -1) {
CHROOT_OUT;
if (r == -1) {
- reply_with_perror ("
rmdir:
%s", path);
+ reply_with_perror ("%s", path);
return -1;
}
return -1;
}
@@
-56,8
+56,8
@@
do_rm_rf (const char *path)
int r;
char *buf, *err;
int r;
char *buf, *err;
- if (
strcmp (path, "/") == 0
) {
- reply_with_error ("
rm -rf:
cannot remove root directory");
+ if (
STREQ (path, "/")
) {
+ reply_with_error ("cannot remove root directory");
return -1;
}
return -1;
}
@@
-72,7
+72,7
@@
do_rm_rf (const char *path)
/* rm -rf is never supposed to fail. I/O errors perhaps? */
if (r == -1) {
/* rm -rf is never supposed to fail. I/O errors perhaps? */
if (r == -1) {
- reply_with_error ("
rm -rf:
%s: %s", path, err);
+ reply_with_error ("%s: %s", path, err);
free (err);
return -1;
}
free (err);
return -1;
}
@@
-92,7
+92,7
@@
do_mkdir (const char *path)
CHROOT_OUT;
if (r == -1) {
CHROOT_OUT;
if (r == -1) {
- reply_with_perror ("
mkdir:
%s", path);
+ reply_with_perror ("%s", path);
return -1;
}
return -1;
}
@@
-104,18
+104,28
@@
do_mkdir_mode (const char *path, int mode)
{
int r;
{
int r;
+ if (mode < 0) {
+ reply_with_error ("%s: mode is negative", path);
+ return -1;
+ }
+
CHROOT_IN;
r = mkdir (path, mode);
CHROOT_OUT;
if (r == -1) {
CHROOT_IN;
r = mkdir (path, mode);
CHROOT_OUT;
if (r == -1) {
- reply_with_perror ("
mkdir_mode:
%s", path);
+ reply_with_perror ("%s", path);
return -1;
}
return 0;
}
return -1;
}
return 0;
}
+/* Returns:
+ * 0 if everything was OK,
+ * -1 for a general error (sets errno),
+ * -2 if an existing path element was not a directory.
+ */
static int
recursive_mkdir (const char *path)
{
static int
recursive_mkdir (const char *path)
{
@@
-130,10
+140,7
@@
recursive_mkdir (const char *path)
if (errno == EEXIST) { /* Something exists here, might not be a dir. */
r = lstat (path, &buf);
if (r == -1) return -1;
if (errno == EEXIST) { /* Something exists here, might not be a dir. */
r = lstat (path, &buf);
if (r == -1) return -1;
- if (!S_ISDIR (buf.st_mode)) {
- errno = ENOTDIR;
- return -1;
- }
+ if (!S_ISDIR (buf.st_mode)) return -2;
return 0; /* OK - directory exists here already. */
}
return 0; /* OK - directory exists here already. */
}
@@
-153,7
+160,7
@@
recursive_mkdir (const char *path)
r = recursive_mkdir (ppath);
free (ppath);
r = recursive_mkdir (ppath);
free (ppath);
- if (r
== -1) return -1
;
+ if (r
!= 0) return r
;
goto again;
} else /* Failed for some other reason, so return error. */
goto again;
} else /* Failed for some other reason, so return error. */
@@
-172,7
+179,11
@@
do_mkdir_p (const char *path)
CHROOT_OUT;
if (r == -1) {
CHROOT_OUT;
if (r == -1) {
- reply_with_perror ("mkdir -p: %s", path);
+ reply_with_perror ("%s", path);
+ return -1;
+ }
+ if (r == -2) {
+ reply_with_error ("%s: a path element was not a directory", path);
return -1;
}
return -1;
}
@@
-215,7
+226,7
@@
do_mkdtemp (const char *template)
CHROOT_OUT;
if (r == NULL) {
CHROOT_OUT;
if (r == NULL) {
- reply_with_perror ("
mkdtemp:
%s", template);
+ reply_with_perror ("%s", template);
free (writable);
}
free (writable);
}