]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
ply-utils: Add ply_kernel_command_line_get_ulong () helper
authorHans de Goede <hdegoede@redhat.com>
Tue, 4 Mar 2025 11:50:53 +0000 (12:50 +0100)
committerHans de Goede <hdegoede@redhat.com>
Mon, 10 Mar 2025 10:45:18 +0000 (11:45 +0100)
Add a ply_kernel_command_line_get_ulong () helper mirroring
ply_key_file_get_ulong ().

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

index 155459dc23aaa3085ae7b1321898ce95fcfed86a..dee79869d086350ec9d82c87e47d2789092ae277 100644 (file)
@@ -1251,6 +1251,28 @@ ply_kernel_command_line_get_key_value (const char *key)
         return strndup (value, strcspn (value, " \n"));
 }
 
+unsigned long
+ply_kernel_command_line_get_ulong (const char   *key,
+                                   unsigned long default_value)
+{
+        const char *raw_value;
+        char *endptr = NULL;
+        unsigned long u;
+
+        raw_value = ply_kernel_command_line_get_string_after_prefix (key);
+        if (raw_value == NULL || raw_value[0] == '\0')
+                return default_value;
+
+        u = strtoul (raw_value, &endptr, 0);
+        if (!isspace ((int) *endptr) && *endptr != '\0') {
+                ply_trace ("'%s' argument '%s' is not a valid unsigned number",
+                           key, raw_value);
+                return default_value;
+        }
+
+        return u;
+}
+
 void
 ply_kernel_command_line_override (const char *command_line)
 {
index 1ee319609552b1e1aa658069dbd949afe30916e6..058c7bff010bc47e10fbf5fe246870603f7cdccf 100644 (file)
@@ -175,6 +175,8 @@ const char *ply_kernel_command_line_get_string_after_prefix (const char *prefix)
 bool ply_kernel_command_line_has_argument (const char *argument);
 void ply_kernel_command_line_override (const char *command_line);
 char *ply_kernel_command_line_get_key_value (const char *key);
+unsigned long ply_kernel_command_line_get_ulong (const char   *key,
+                                                 unsigned long default_value);
 
 char *ply_get_primary_kernel_console_type (void);