]> err.no Git - util-linux/commitdiff
mount: parse SPEC before search in fstab
authorKarel Zak <kzak@redhat.com>
Fri, 25 May 2007 10:28:49 +0000 (12:28 +0200)
committerKarel Zak <kzak@redhat.com>
Fri, 25 May 2007 10:28:49 +0000 (12:28 +0200)
The mount blindly uses a SPEC from command line and tries to found the
SPEC in /etc/fstab. It's better to parse the SPEC and search by UUID,
LABEL or devname only.

Signed-off-by: Karel Zak <kzak@redhat.com>
mount/fstab.c

index ec5a9655aaf8ca154c499a15ef7d1c36c7bdaf54..b7792bc025319353edd335a469bd78319bd8dac8 100644 (file)
@@ -369,6 +369,24 @@ getfs_by_dir (const char *dir) {
 /* Find the device SPEC in fstab.  */
 struct mntentchn *
 getfs_by_spec (const char *spec) {
+       char *name, *value;
+       struct mntentchn *mc = NULL;
+
+       if (!spec)
+               return NULL;
+
+       if (parse_spec(spec, &name, &value) != 0)
+               return NULL;                            /* parse error */
+
+       if (name) {
+               if (!strcmp(name,"LABEL"))
+                       mc = getfs_by_label (value);
+               else if (!strcmp(name,"UUID"))
+                       mc = getfs_by_uuid (value);
+
+               free((void *) name);
+               return mc;
+       }
        return getfs_by_devname(spec);
 }