]> err.no Git - util-linux/commitdiff
libmount: add unmangle/mangle() functions to API
authorKarel Zak <kzak@redhat.com>
Wed, 21 Jul 2010 12:18:02 +0000 (14:18 +0200)
committerKarel Zak <kzak@redhat.com>
Mon, 3 Jan 2011 11:28:40 +0000 (12:28 +0100)
Signed-off-by: Karel Zak <kzak@redhat.com>
include/mangle.h
lib/mangle.c
shlibs/mount/src/mount.h.in
shlibs/mount/src/mount.sym
shlibs/mount/src/utils.c

index 8ce38752d132d275d2923fae7597cdac0cafa847..0ccd37768c2eb320aeb0cc9fceda3c1d9ab0dd8a 100644 (file)
@@ -7,8 +7,8 @@
 
 extern char *mangle(const char *s);
 
-extern void unmangle_to_buffer(char *s, char *buf, size_t len);
-extern char *unmangle(char *s);
+extern void unmangle_to_buffer(const char *s, char *buf, size_t len);
+extern char *unmangle(const char *s);
 
 #endif /* UTIL_LINUX_MANGLE_H */
 
index 766d479d6c968be770e7c69384521afda38fcc92..c40e67badbdc4f5752dc9b2ed4bcbb92149e455e 100644 (file)
@@ -44,7 +44,7 @@ char *mangle(const char *s)
        return ss;
 }
 
-void unmangle_to_buffer(char *s, char *buf, size_t len)
+void unmangle_to_buffer(const char *s, char *buf, size_t len)
 {
        size_t sz = 0;
 
@@ -63,7 +63,7 @@ void unmangle_to_buffer(char *s, char *buf, size_t len)
        *buf = '\0';
 }
 
-static inline char *skip_nonspaces(char *s)
+static inline const char *skip_nonspaces(const char *s)
 {
        while (*s && !(*s == ' ' || *s == '\t'))
                s++;
@@ -73,9 +73,10 @@ static inline char *skip_nonspaces(char *s)
 /*
  * Returns mallocated buffer or NULL in case of error.
  */
-char *unmangle(char *s)
+char *unmangle(const char *s)
 {
-       char *buf, *end;
+       char *buf;
+       const char *end;
        size_t sz;
 
        end = skip_nonspaces(s);
index 9a628042649bcdb612a2aa954c4b45ba0781cf09..af1dd38a48d6a81337f66d057c7bdcde27da4426 100644 (file)
@@ -110,6 +110,8 @@ extern int mnt_parse_version_string(const char *ver_string);
 extern int mnt_get_library_version(const char **ver_string);
 
 /* utils.c */
+extern char *mnt_mangle(const char *str);
+extern char *mnt_unmangle(const char *str);
 extern int mnt_fstype_is_netfs(const char *type);
 extern int mnt_fstype_is_pseudofs(const char *type);
 extern int mnt_match_fstype(const char *type, const char *pattern);
index a33c7f2612969fd3d5fe6b8d252e45633a195ff5..7824597c06f478be697b18bb337df1c1eb90eb54 100644 (file)
@@ -55,6 +55,7 @@ global:
        mnt_lock_file;
        mnt_lock_get_linkfile;
        mnt_lock_get_lockfile;
+       mnt_mangle;
        mnt_match_fstype;
        mnt_match_options;
        mnt_new_cache;
@@ -132,6 +133,7 @@ global:
        mnt_tab_set_parser_errcb;
        mnt_tab_update_file;
        mnt_unlock_file;
+       mnt_unmangle;
 local:
        *;
 };
index eb183ee0f470506f1ab77213006e9bb01d0ff949..372351acc2190d1e48df5456ae82887a0f04ef59 100644 (file)
@@ -31,6 +31,7 @@
 #include "strutils.h"
 #include "pathnames.h"
 #include "mountP.h"
+#include "mangle.h"
 
 char *mnt_getenv_safe(const char *arg)
 {
@@ -84,6 +85,32 @@ int startswith(const char *s, const char *sx)
         return !strncmp(s, sx, off);
 }
 
+/**
+ * mnt_mangle:
+ * @str: string
+ *
+ * Encode @str to be compatible with fstab/mtab
+ *
+ * Returns: new allocated string or NULL in case of error.
+ */
+char *mnt_mangle(const char *str)
+{
+       return mangle(str);
+}
+
+/**
+ * mnt_unmangle:
+ * @str: string
+ *
+ * Decode @str from fstab/mtab
+ *
+ * Returns: new allocated string or NULL in case of error.
+ */
+char *mnt_unmangle(const char *str)
+{
+       return unmangle(str);
+}
+
 /**
  * mnt_fstype_is_pseudofs:
  * @type: filesystem name