chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
util-lib: add parse_percent_unbounded() for percentages over 100% (#3886)
[elogind.git]
/
src
/
basic
/
parse-util.c
diff --git
a/src/basic/parse-util.c
b/src/basic/parse-util.c
index 90bae7149559ee6001bf25b69341fd1da765b583..757e5b4127041f0de12136b0600702878eb32b35 100644
(file)
--- a/
src/basic/parse-util.c
+++ b/
src/basic/parse-util.c
@@
-33,6
+33,9
@@
#include "parse-util.h"
#include "string-util.h"
#include "parse-util.h"
#include "string-util.h"
+/// Additional includes needed by elogind
+#include "musl_missing.h"
+
int parse_boolean(const char *v) {
assert(v);
int parse_boolean(const char *v) {
assert(v);
@@
-537,7
+540,7
@@
int parse_fractional_part_u(const char **p, size_t digits, unsigned *res) {
return 0;
}
return 0;
}
-int parse_percent(const char *p) {
+int parse_percent
_unbounded
(const char *p) {
const char *pc, *n;
unsigned v;
int r;
const char *pc, *n;
unsigned v;
int r;
@@
-550,8
+553,15
@@
int parse_percent(const char *p) {
r = safe_atou(n, &v);
if (r < 0)
return r;
r = safe_atou(n, &v);
if (r < 0)
return r;
+
+ return (int) v;
+}
+
+int parse_percent(const char *p) {
+ int v = parse_percent_unbounded(p);
+
if (v > 100)
return -ERANGE;
if (v > 100)
return -ERANGE;
- return
(int)
v;
+ return v;
}
}