]> err.no Git - util-linux/commitdiff
libmount: add mnt_context_get_{source,target,fstype}
authorKarel Zak <kzak@redhat.com>
Mon, 24 Jan 2011 12:59:17 +0000 (13:59 +0100)
committerKarel Zak <kzak@redhat.com>
Mon, 24 Jan 2011 12:59:17 +0000 (13:59 +0100)
Signed-off-by: Karel Zak <kzak@redhat.com>
shlibs/mount/docs/libmount-sections.txt
shlibs/mount/src/context.c
shlibs/mount/src/libmount.h.in
shlibs/mount/src/mount.sym

index 956fe8a5d703ab8fe087809cf5a2c932eafb54f3..8a3a7d22bfac2169db02b6785ce4197c7739d3fb 100644 (file)
@@ -188,10 +188,13 @@ mnt_context_enable_verbose
 mnt_context_get_cache
 mnt_context_get_fs
 mnt_context_get_fstab
+mnt_context_get_fstype
 mnt_context_get_lock
 mnt_context_get_mflags
 mnt_context_get_mtab
+mnt_context_get_source
 mnt_context_get_status
+mnt_context_get_target
 mnt_context_get_user_mflags
 mnt_context_is_restricted
 mnt_context_set_cache
@@ -199,8 +202,8 @@ mnt_context_set_fs
 mnt_context_set_fstab
 mnt_context_set_fstype
 mnt_context_set_fstype_pattern
-mnt_context_set_mountdata
 mnt_context_set_mflags
+mnt_context_set_mountdata
 mnt_context_set_options
 mnt_context_set_options_pattern
 mnt_context_set_optsmode
index d82532e33687d959d4da75a05983137d070d30c9..bfa0292faeb9a0c9175e9cd76f666417e97382d7 100644 (file)
@@ -503,6 +503,17 @@ int mnt_context_set_source(struct libmnt_context *cxt, const char *source)
        return mnt_fs_set_source(mnt_context_get_fs(cxt), source);
 }
 
+/**
+ * mnt_context_get_source:
+ * @cxt: mount context
+ *
+ * Returns: returns pointer or NULL in case of error pr if not set.
+ */
+const char *mnt_context_get_source(struct libmnt_context *cxt)
+{
+       return mnt_fs_get_source(mnt_context_get_fs(cxt));
+}
+
 /**
  * mnt_context_set_target:
  * @cxt: mount context
@@ -515,6 +526,17 @@ int mnt_context_set_target(struct libmnt_context *cxt, const char *target)
        return mnt_fs_set_target(mnt_context_get_fs(cxt), target);
 }
 
+/**
+ * mnt_context_get_target:
+ * @cxt: mount context
+ *
+ * Returns: returns pointer or NULL in case of error pr if not set.
+ */
+const char *mnt_context_get_target(struct libmnt_context *cxt)
+{
+       return mnt_fs_get_target(mnt_context_get_fs(cxt));
+}
+
 /**
  * mnt_context_set_fstype:
  * @cxt: mount context
@@ -532,6 +554,17 @@ int mnt_context_set_fstype(struct libmnt_context *cxt, const char *fstype)
        return mnt_fs_set_fstype(mnt_context_get_fs(cxt), fstype);
 }
 
+/**
+ * mnt_context_get_fstype:
+ * @cxt: mount context
+ *
+ * Returns: returns pointer or NULL in case of error pr if not set.
+ */
+const char *mnt_context_get_fstype(struct libmnt_context *cxt)
+{
+       return mnt_fs_get_fstype(mnt_context_get_fs(cxt));
+}
+
 /**
  * mnt_context_set_options:
  * @cxt: mount context
@@ -1466,11 +1499,22 @@ int mnt_context_strerror(struct libmnt_context *cxt, char *buf, size_t bufsiz)
  *
  * This function infors libmount that used from [u]mount.<type> helper.
  *
+ * The function also calls mnt_context_disable_helpers() to avoid recursive
+ * mount.<type> helpers calling. It you really want to call another
+ * mount.<type> helper from your helper than you have to explicitly enable this
+ * feature by:
+ *
+ *      mnt_context_disable_helpers(cxt, FALSE);
+ *
  * Returns: 0 on success, negative number in case of error.
  */
 int mnt_context_init_helper(struct libmnt_context *cxt, int flags)
 {
-       return set_flag(cxt, MNT_FL_HELPER, 1);
+       int rc = mnt_context_disable_helpers(cxt, TRUE);
+
+       if (!rc)
+               return set_flag(cxt, MNT_FL_HELPER, 1);
+       return rc;
 }
 
 #ifdef TEST_PROGRAM
index 86a618850845eb80fb298481417e08e6ca700a3b..6ac24ca1811c83b01c59411eddf2f6744aac36f8 100644 (file)
@@ -378,6 +378,10 @@ extern struct libmnt_fs *mnt_context_get_fs(struct libmnt_context *cxt);
 extern int mnt_context_set_source(struct libmnt_context *cxt, const char *source);
 extern int mnt_context_set_target(struct libmnt_context *cxt, const char *target);
 extern int mnt_context_set_fstype(struct libmnt_context *cxt, const char *fstype);
+extern const char *mnt_context_get_source(struct libmnt_context *cxt);
+extern const char *mnt_context_get_target(struct libmnt_context *cxt);
+extern const char *mnt_context_get_fstype(struct libmnt_context *cxt);
+
 extern int mnt_context_set_options(struct libmnt_context *cxt, const char *optstr);
 extern int mnt_context_append_options(struct libmnt_context *cxt,
                                      const char *optstr);
index 34174ec5fc077ce0cbaa996b1b5f188fd3933124..4709a8a21b3bcd478a57286c6cd8ee83e7d04034 100644 (file)
@@ -26,11 +26,14 @@ global:
        mnt_context_get_cache;
        mnt_context_get_fs;
        mnt_context_get_fstab;
+       mnt_context_get_fstype;
        mnt_context_get_lock;
        mnt_context_get_mflags;
        mnt_context_get_mtab;
        mnt_context_get_optsmode;
+       mnt_context_get_source;
        mnt_context_get_status;
+       mnt_context_get_target;
        mnt_context_get_user_mflags;
        mnt_context_init_helper;
        mnt_context_is_fake;
@@ -48,8 +51,8 @@ global:
        mnt_context_set_fstab;
        mnt_context_set_fstype;
        mnt_context_set_fstype_pattern;
-       mnt_context_set_mountdata;
        mnt_context_set_mflags;
+       mnt_context_set_mountdata;
        mnt_context_set_options;
        mnt_context_set_options_pattern;
        mnt_context_set_optsmode;