summaryrefslogtreecommitdiff
path: root/src/shared/util.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2014-03-06 21:14:26 +0100
committerLennart Poettering <lennart@poettering.net>2014-03-07 02:40:24 +0100
commit6db615c17ee7a434f9e0c40d67a1f833d8f3cc9d (patch)
tree02648e07251e322648fb98fc92afb791bb25a797 /src/shared/util.c
parent82ed60080d327d7301fcd55f5a1f8511f894b9d5 (diff)
fstab-generator: merge /proc/cmdline parsing loops into one
Diffstat (limited to 'src/shared/util.c')
-rw-r--r--src/shared/util.c27
1 files changed, 20 insertions, 7 deletions
diff --git a/src/shared/util.c b/src/shared/util.c
index cffa1abb30..d28caae6c2 100644
--- a/src/shared/util.c
+++ b/src/shared/util.c
@@ -3519,25 +3519,21 @@ int signal_from_string_try_harder(const char *s) {
static char *tag_to_udev_node(const char *tagvalue, const char *by) {
_cleanup_free_ char *t = NULL, *u = NULL;
- char *dn;
size_t enc_len;
u = unquote(tagvalue, "\"\'");
- if (u == NULL)
+ if (!u)
return NULL;
enc_len = strlen(u) * 4 + 1;
t = new(char, enc_len);
- if (t == NULL)
+ if (!t)
return NULL;
if (encode_devnode_name(u, t, enc_len) < 0)
return NULL;
- if (asprintf(&dn, "/dev/disk/by-%s/%s", by, t) < 0)
- return NULL;
-
- return dn;
+ return strjoin("/dev/disk/by-", by, "/", t, NULL);
}
char *fstab_node_to_udev_node(const char *p) {
@@ -6339,3 +6335,20 @@ uint64_t physical_memory(void) {
return (uint64_t) mem * (uint64_t) page_size();
}
+
+char* mount_test_option(const char *haystack, const char *needle) {
+
+ struct mntent me = {
+ .mnt_opts = (char*) haystack
+ };
+
+ assert(needle);
+
+ /* Like glibc's hasmntopt(), but works on a string, not a
+ * struct mntent */
+
+ if (!haystack)
+ return NULL;
+
+ return hasmntopt(&me, needle);
+}