From: Karel Zak Date: Tue, 19 Nov 2013 16:41:28 +0000 (+0100) Subject: libmount: add mnt_tag_is_valid() X-Git-Tag: v2.25-rc1~724 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a53cc4e0cb30eb55e5ccbd376d1ea803aefa060d;p=thirdparty%2Futil-linux.git libmount: add mnt_tag_is_valid() Signed-off-by: Karel Zak --- diff --git a/libmount/docs/libmount-sections.txt b/libmount/docs/libmount-sections.txt index ec04fff098..6affbfbb6e 100644 --- a/libmount/docs/libmount-sections.txt +++ b/libmount/docs/libmount-sections.txt @@ -370,6 +370,7 @@ mnt_has_regular_mtab mnt_mangle mnt_match_fstype mnt_match_options +mnt_tag_is_valid mnt_unmangle diff --git a/libmount/src/libmount.h.in b/libmount/src/libmount.h.in index bb03363c86..8c8e739c9a 100644 --- a/libmount/src/libmount.h.in +++ b/libmount/src/libmount.h.in @@ -197,6 +197,7 @@ extern char *mnt_mangle(const char *str) extern char *mnt_unmangle(const char *str) __ul_attribute__((warn_unused_result)); +extern int mnt_tag_is_valid(const char *tag); extern int mnt_fstype_is_netfs(const char *type); extern int mnt_fstype_is_pseudofs(const char *type); diff --git a/libmount/src/libmount.sym b/libmount/src/libmount.sym index 430c58ec67..d1180d35b5 100644 --- a/libmount/src/libmount.sym +++ b/libmount/src/libmount.sym @@ -287,3 +287,7 @@ global: mnt_unref_fs; mnt_unref_table; } MOUNT_2.23; + +MOUNT_2.25 { + mnt_tag_is_valid; +} MOUNT_2.24; diff --git a/libmount/src/utils.c b/libmount/src/utils.c index 0d5a227166..66203d2b47 100644 --- a/libmount/src/utils.c +++ b/libmount/src/utils.c @@ -14,6 +14,7 @@ #include #include #include +#include #include "strutils.h" #include "pathnames.h" @@ -71,6 +72,22 @@ int mnt_valid_tagname(const char *tagname) return 0; } +/** + * mnt_tag_is_valid: + * @tag: NAME=value string + * + * Returns: 1 if the @tag is parsable and tag NAME= is supported by libmount, or 0. + */ +int mnt_tag_is_valid(const char *tag) +{ + char *t = NULL; + int rc = tag && blkid_parse_tag_string(tag, &t, NULL) == 0 + && mnt_valid_tagname(t); + + free(t); + return rc; +} + int mnt_parse_offset(const char *str, size_t len, uintmax_t *res) { char *p;