]> err.no Git - util-linux/commitdiff
libmount: fix user= usage
authorKarel Zak <kzak@redhat.com>
Tue, 25 Jan 2011 00:11:37 +0000 (01:11 +0100)
committerKarel Zak <kzak@redhat.com>
Tue, 25 Jan 2011 00:11:37 +0000 (01:11 +0100)
Signed-off-by: Karel Zak <kzak@redhat.com>
shlibs/mount/src/context.c
shlibs/mount/src/context_mount.c
shlibs/mount/src/optstr.c

index ed9f223aeb7ee3179fcf95a79096624958c14549..676552bf135e8f8123ac67f6aae5e5a43f871ccb 100644 (file)
@@ -1440,8 +1440,10 @@ int mnt_context_apply_fstab(struct libmnt_context *cxt)
        }
 
        /* fstab is not required if source and target are specified */
-       if (src && tgt && !(cxt->optsmode == MNT_OMODE_FORCE))
+       if (src && tgt && !(cxt->optsmode & MNT_OMODE_FORCE)) {
+               DBG(CXT, mnt_debug_h(cxt, "fstab not required -- skip"));
                return 0;
+       }
 
        DBG(CXT, mnt_debug_h(cxt,
                "trying to apply fstab (src=%s, target=%s)", src, tgt));
index 0b6c3d864eae3aeb0ec9f815796245916a5550a3..8c764078d14f8d94666f6e5d1d87ab1980786366 100644 (file)
@@ -107,11 +107,11 @@ static int fix_optstr(struct libmnt_context *cxt)
        }
 
        if (!rc && cxt->user_mountflags && MNT_MS_USER)
-               rc = mnt_optstr_fix_user(&fs->fs_optstr);
+               rc = mnt_optstr_fix_user(&fs->user_optstr);
 
 done:
        DBG(CXT, mnt_debug_h(cxt, "fixed options [rc=%d]: "
-               "vfs='%s' fs='%s' user='%s'", rc,
+               "vfs: '%s' fs: '%s' user: '%s'", rc,
                fs->vfs_optstr, fs->fs_optstr, fs->user_optstr));
        return rc;
 }
index 9c8aa62e6cf343ce684ccca538288269f14a8715..fd4a8610c58603e698a6ff971740b4d8c844f912 100644 (file)
@@ -945,12 +945,13 @@ int mnt_optstr_fix_user(char **optstr)
        if (!username)
                return -ENOMEM;
 
-       if (!ol.valsz || strncmp(ol.value, username, ol.valsz)) {
+       if (!ol.valsz || (ol.value && strncmp(ol.value, username, ol.valsz))) {
                if (ol.valsz)
                        /* remove old value */
                        mnt_optstr_remove_option_at(optstr, ol.value, ol.end);
 
-               rc = insert_value(optstr, ol.value, username, NULL);
+               rc = insert_value(optstr, ol.value ? ol.value : ol.end,
+                                 username, NULL);
        }
 
        free(username);