git.annexia.org
/
libguestfs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
New API: get-umask, returns the current umask (RHBZ#582891).
[libguestfs.git]
/
daemon
/
mount.c
diff --git
a/daemon/mount.c
b/daemon/mount.c
index
d1b26fa
..
838bef8
100644
(file)
--- a/
daemon/mount.c
+++ b/
daemon/mount.c
@@
-48,10
+48,12
@@
do_mount_vfs (const char *options, const char *vfstype,
char *mp;
char *error;
char *mp;
char *error;
- is_root = strcmp (mountpoint, "/") == 0;
+ ABS_PATH (mountpoint, return -1);
+
+ is_root = STREQ (mountpoint, "/");
if (!root_mounted && !is_root) {
if (!root_mounted && !is_root) {
- reply_with_error ("
mount:
you must mount something on / first");
+ reply_with_error ("you must mount something on / first");
return -1;
}
return -1;
}
@@
-69,7
+71,7
@@
do_mount_vfs (const char *options, const char *vfstype,
"mount", "-o", options, device, mp, NULL);
free (mp);
if (r == -1) {
"mount", "-o", options, device, mp, NULL);
free (mp);
if (r == -1) {
- reply_with_error ("
mount:
%s on %s: %s", device, mountpoint, error);
+ reply_with_error ("%s on %s: %s", device, mountpoint, error);
free (error);
return -1;
}
free (error);
return -1;
}
@@
-107,20
+109,25
@@
do_umount (const char *pathordevice)
{
int r;
char *err;
{
int r;
char *err;
+ char *buf;
+ int is_dev;
- char *buf = (strncmp (pathordevice, "/dev/", 5) == 0
-
? strdup (pathordevice)
- : sysroot_path (pathordevice)
)
;
+ is_dev = STREQLEN (pathordevice, "/dev/", 5);
+
buf = is_dev
? strdup (pathordevice)
+ : sysroot_path (pathordevice);
if (buf == NULL) {
reply_with_perror ("malloc");
return -1;
}
if (buf == NULL) {
reply_with_perror ("malloc");
return -1;
}
+ if (is_dev)
+ RESOLVE_DEVICE (buf, { free (buf); return -1; });
+
r = command (NULL, &err, "umount", buf, NULL);
free (buf);
if (r == -1) {
r = command (NULL, &err, "umount", buf, NULL);
free (buf);
if (r == -1) {
- reply_with_error ("
umount:
%s: %s", pathordevice, err);
+ reply_with_error ("%s: %s", pathordevice, err);
free (err);
return -1;
}
free (err);
return -1;
}
@@
-331,7
+338,7
@@
do_mount_loop (const char *file, const char *mountpoint)
free (mp);
free (buf);
if (r == -1) {
free (mp);
free (buf);
if (r == -1) {
- reply_with_error ("
mount:
%s on %s: %s", file, mountpoint, error);
+ reply_with_error ("%s on %s: %s", file, mountpoint, error);
free (error);
return -1;
}
free (error);
return -1;
}
@@
-356,7
+363,7
@@
do_mkmountpoint (const char *path)
CHROOT_OUT;
if (r == -1) {
CHROOT_OUT;
if (r == -1) {
- reply_with_perror ("
mkmountpoint:
%s", path);
+ reply_with_perror ("%s", path);
return -1;
}
return -1;
}
@@
-381,7
+388,7
@@
do_rmmountpoint (const char *path)
CHROOT_OUT;
if (r == -1) {
CHROOT_OUT;
if (r == -1) {
- reply_with_perror ("
rmmountpoint:
%s", path);
+ reply_with_perror ("%s", path);
return -1;
}
return -1;
}