plymouth/libply-Add-ply_strtod-helper.patch
songnannan b411777e51 init
2019-12-28 09:27:13 +08:00

64 lines
1.8 KiB
Diff

From 2dc81adb0f1a5469b15c62d3dacf53dfbc37c17a Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
Date: Wed, 19 Dec 2018 10:43:09 +0100
Subject: [PATCH 091/142] libply: Add ply_strtod helper
Add a ply_strtod helper which always uses "." as decimal separator
independent of the locale.
Using this fixes e.g. HorizontalAlignment in the two-step plugin
not working with some locales.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
src/libply/ply-utils.c | 14 ++++++++++++++
src/libply/ply-utils.h | 2 ++
2 files changed, 16 insertions(+)
diff --git a/src/libply/ply-utils.c b/src/libply/ply-utils.c
index c17e0c8..4ff7b1b 100644
--- a/src/libply/ply-utils.c
+++ b/src/libply/ply-utils.c
@@ -29,6 +29,7 @@
#include <errno.h>
#include <fcntl.h>
#include <limits.h>
+#include <locale.h>
#include <poll.h>
#include <stddef.h>
#include <stdio.h>
@@ -1109,4 +1110,17 @@ ply_kernel_command_line_override (const char *command_line)
kernel_command_line_is_set = true;
}
+double ply_strtod(const char *str)
+{
+ char *old_locale;
+ double ret;
+
+ /* Ensure strtod uses '.' as decimal separator, as we use this in our cfg files. */
+ old_locale = setlocale(LC_NUMERIC, "C");
+ ret = strtod(str, NULL);
+ setlocale(LC_NUMERIC, old_locale);
+
+ return ret;
+}
+
/* vim: set ts=4 sw=4 expandtab autoindent cindent cino={.5s,(0: */
diff --git a/src/libply/ply-utils.h b/src/libply/ply-utils.h
index ae4776e..4dd9c09 100644
--- a/src/libply/ply-utils.h
+++ b/src/libply/ply-utils.h
@@ -132,6 +132,8 @@ const char *ply_kernel_command_line_get_string_after_prefix (const char *prefix)
bool ply_kernel_cmd_line_has_argument (const char *argument);
void ply_kernel_cmd_line_set (const char *cmd_line);
+double ply_strtod(const char *str);
+
#endif
#endif /* PLY_UTILS_H */
--
2.7.4