]> err.no Git - util-linux/commitdiff
libmount: add MNT_FS_SWAP flag
authorKarel Zak <kzak@redhat.com>
Wed, 15 Sep 2010 14:31:38 +0000 (16:31 +0200)
committerKarel Zak <kzak@redhat.com>
Mon, 3 Jan 2011 11:28:42 +0000 (12:28 +0100)
Signed-off-by: Karel Zak <kzak@redhat.com>
shlibs/mount/src/fs.c
shlibs/mount/src/mountP.h
shlibs/mount/src/tab.c
shlibs/mount/src/tab_parse.c

index fad5da890331baf22f52e69e64acc30d50a5cad8..adf99ca4ddc25ffdd88b44956d250e06cd095d04 100644 (file)
@@ -348,6 +348,8 @@ int __mnt_fs_set_fstype(mnt_fs *fs, char *fstype)
                fs->flags |= MNT_FS_PSEUDO;
        else if (mnt_fstype_is_netfs(fs->fstype))
                fs->flags |= MNT_FS_NET;
+       else if (!strcmp(fs->fstype, "swap"))
+               fs->flags |= MNT_FS_SWAP;
 
        return 0;
 }
@@ -508,7 +510,7 @@ int mnt_fs_prepend_optstr(mnt_fs *fs, const char *optstr)
        if (!rc && v)
                rc = mnt_optstr_prepend_option(&fs->vfs_optstr, v, NULL);
        if (!rc && f)
-              rc = mnt_optstr_prepend_option(&fs->fs_optstr, f, NULL);
+               rc = mnt_optstr_prepend_option(&fs->fs_optstr, f, NULL);
 
        return rc;
 }
@@ -844,11 +846,16 @@ int mnt_fs_print_debug(mnt_fs *fs, FILE *file)
        fprintf(file, "target: %s\n", mnt_fs_get_target(fs));
        fprintf(file, "fstype: %s\n", mnt_fs_get_fstype(fs));
        fprintf(file, "optstr: %s\n", mnt_fs_get_optstr(fs));
-       fprintf(file, "freq:   %d\n", mnt_fs_get_freq(fs));
-       fprintf(file, "pass:   %d\n", mnt_fs_get_passno(fs));
-       fprintf(file, "id:     %d\n", mnt_fs_get_id(fs));
-       fprintf(file, "parent: %d\n", mnt_fs_get_parent_id(fs));
-       fprintf(file, "devno:  %d:%d\n", major(mnt_fs_get_devno(fs)),
-                                        minor(mnt_fs_get_devno(fs)));
+       if (mnt_fs_get_freq(fs))
+               fprintf(file, "freq:   %d\n", mnt_fs_get_freq(fs));
+       if (mnt_fs_get_passno(fs))
+               fprintf(file, "pass:   %d\n", mnt_fs_get_passno(fs));
+       if (mnt_fs_get_id(fs))
+               fprintf(file, "id:     %d\n", mnt_fs_get_id(fs));
+       if (mnt_fs_get_parent_id(fs))
+               fprintf(file, "parent: %d\n", mnt_fs_get_parent_id(fs));
+       if (mnt_fs_get_devno(fs))
+               fprintf(file, "devno:  %d:%d\n", major(mnt_fs_get_devno(fs)),
+                                                minor(mnt_fs_get_devno(fs)));
        return 0;
 }
index ee33f7892878a074b4069554e84fc2694d212826..f595895775f00a5c9587f447998aefd1bb891ae2 100644 (file)
@@ -175,6 +175,7 @@ struct _mnt_fs {
  */
 #define MNT_FS_PSEUDO  (1 << 1) /* pseudo filesystem */
 #define MNT_FS_NET     (1 << 2) /* network filesystem */
+#define MNT_FS_SWAP    (1 << 3) /* swap device */
 
 /*
  * mtab/fstab/mountinfo file
index d5bde746a1d3ca39701bf5f73320607fd76f0b62..39f7814e4ceb68eeff3a2cef6be15b0ea9ea839d 100644 (file)
@@ -449,8 +449,11 @@ mnt_fs *mnt_tab_find_target(mnt_tab *tb, const char *path, int direction)
        mnt_reset_iter(&itr, direction);
        while(mnt_tab_next_fs(tb, &itr, &fs) == 0) {
                char *p;
-               if (!fs->target)
+
+               if (!fs->target || !(fs->flags & MNT_FS_SWAP) ||
+                   (*fs->target == '/' && *(fs->target + 1) == '\0'))
                       continue;
+
                p = mnt_resolve_path(fs->target, tb->cache);
                if (strcmp(cn, p) == 0)
                        return fs;
@@ -546,6 +549,8 @@ mnt_fs *mnt_tab_find_srcpath(mnt_tab *tb, const char *path, int direction)
        if (ntags <= mnt_tab_get_nents(tb)) {
                mnt_reset_iter(&itr, direction);
                while(mnt_tab_next_fs(tb, &itr, &fs) == 0) {
+                       if (fs->flags & (MNT_FS_NET | MNT_FS_PSEUDO))
+                               continue;
                        p = mnt_fs_get_srcpath(fs);
                        if (p)
                                p = mnt_resolve_path(p, tb->cache);
index e782b27815f99241ac80b45324571ce2b1155506..b9063c035327e094ddb6e5a724a26d592022190f 100644 (file)
@@ -352,7 +352,7 @@ static int mnt_tab_parse_next(mnt_tab *tb, FILE *f, mnt_fs *fs,
                s = skip_spaces(buf);
        } while (*s == '\0' || *s == '#');
 
-       DBG(TAB, mnt_debug_h(tb, "%s:%d: %s", filename, *nlines, s));
+       /*DBG(TAB, mnt_debug_h(tb, "%s:%d: %s", filename, *nlines, s));*/
 
        if (!tb->fmt)
                tb->fmt = detect_fmt(s);
@@ -374,13 +374,13 @@ static int mnt_tab_parse_next(mnt_tab *tb, FILE *f, mnt_fs *fs,
                if (!fs->optstr)
                        return -ENOMEM;
        }
-
+/*
        DBG(TAB, mnt_debug_h(tb, "%s:%d: SOURCE:%s, MNTPOINT:%s, TYPE:%s, "
                                  "OPTS:%s, FREQ:%d, PASSNO:%d",
                filename, *nlines,
                fs->source, fs->target, fs->fstype,
                fs->optstr, fs->freq, fs->passno));
-
+*/
        return 0;
 err:
        DBG(TAB, mnt_debug_h(tb, "%s:%d: parse error", tb, filename, *nlines));