]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
libply: Add ply_key_file_get_raw_value() helper
authorHans de Goede <hdegoede@redhat.com>
Wed, 25 Sep 2019 19:26:27 +0000 (21:26 +0200)
committerHans de Goede <hdegoede@redhat.com>
Wed, 25 Sep 2019 19:33:52 +0000 (21:33 +0200)
Add a private ply_key_file_get_raw_value() helper to avoid code-duplication
between ply_key_file_get_value() and ply_key_file_get_bool().

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
src/libply/ply-key-file.c

index 1c05766aae1a6e22d35ee755a0ec81bca957307c..7d9b7ab2ed2de917bac94bf84fa35dfb5a494a21 100644 (file)
@@ -332,10 +332,10 @@ ply_key_file_has_key (ply_key_file_t *key_file,
         return entry != NULL;
 }
 
-char *
-ply_key_file_get_value (ply_key_file_t *key_file,
-                        const char     *group_name,
-                        const char     *key)
+static char *
+ply_key_file_get_raw_value (ply_key_file_t *key_file,
+                            const char     *group_name,
+                            const char     *key)
 {
         ply_key_file_group_t *group;
         ply_key_file_entry_t *entry;
@@ -354,36 +354,34 @@ ply_key_file_get_value (ply_key_file_t *key_file,
                 return NULL;
         }
 
-        return strdup (entry->value);
+        return entry->value;
+}
+
+char *
+ply_key_file_get_value (ply_key_file_t *key_file,
+                        const char     *group,
+                        const char     *key)
+{
+        char *raw_value = ply_key_file_get_raw_value (key_file, group, key);
+
+        return raw_value ? strdup (raw_value) : NULL;
 }
 
 bool
 ply_key_file_get_bool (ply_key_file_t *key_file,
-                       const char     *group_name,
+                       const char     *group,
                        const char     *key)
 {
-        ply_key_file_group_t *group;
-        ply_key_file_entry_t *entry;
+        char *raw_value = ply_key_file_get_raw_value (key_file, group, key);
 
-        group = ply_key_file_find_group (key_file, group_name);
-
-        if (group == NULL) {
-                ply_trace ("key file does not have group '%s'", group_name);
-                return false;
-        }
-
-        entry = ply_key_file_find_entry (key_file, group, key);
-
-        if (entry == NULL) {
-                ply_trace ("key file does not have entry for key '%s'", key);
+        if (!raw_value)
                 return false;
-        }
 
         /* We treat "1", "y" and "yes" and "true" as true, all else is false */
-        if (strcasecmp (entry->value, "1")    == 0 ||
-            strcasecmp (entry->value, "y")    == 0 ||
-            strcasecmp (entry->value, "yes")  == 0 ||
-            strcasecmp (entry->value, "true") == 0)
+        if (strcasecmp (raw_value, "1")    == 0 ||
+            strcasecmp (raw_value, "y")    == 0 ||
+            strcasecmp (raw_value, "yes")  == 0 ||
+            strcasecmp (raw_value, "true") == 0)
                 return true;
 
         return false;