]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
tree-wide: parse permyriads wherever we can
authorLennart Poettering <lennart@poettering.net>
Wed, 17 Feb 2021 13:37:08 +0000 (14:37 +0100)
committerLennart Poettering <lennart@poettering.net>
Thu, 18 Feb 2021 21:36:34 +0000 (22:36 +0100)
Given that we now have a parser for permyriads, let's use it everywhere
for greater accuracy. This means wherever we previously supported % and
‰, we now also support ‱.

src/core/load-fragment.c
src/home/homectl.c
src/login/logind-user.c
src/login/pam_systemd.c
src/network/tc/tc-util.c
src/shared/bus-unit-util.c

index 11836c09384d469b0a3b0bc989dce9f66ecb7455..a1ab5f70eb48703b8f6b90fecb4445c6f3e0b346 100644 (file)
@@ -3593,13 +3593,13 @@ int config_parse_cpu_quota(
                 return 0;
         }
 
-        r = parse_permille_unbounded(rvalue);
+        r = parse_permyriad_unbounded(rvalue);
         if (r <= 0) {
                 log_syntax(unit, LOG_WARNING, filename, line, r, "Invalid CPU quota '%s', ignoring.", rvalue);
                 return 0;
         }
 
-        c->cpu_quota_per_sec_usec = ((usec_t) r * USEC_PER_SEC) / 1000U;
+        c->cpu_quota_per_sec_usec = ((usec_t) r * USEC_PER_SEC) / 10000U;
         return 0;
 }
 
@@ -3664,7 +3664,7 @@ int config_parse_memory_limit(
                 bytes = CGROUP_LIMIT_MIN;
         else if (!isempty(rvalue) && !streq(rvalue, "infinity")) {
 
-                r = parse_permille(rvalue);
+                r = parse_permyriad(rvalue);
                 if (r < 0) {
                         r = parse_size(rvalue, 1024, &bytes);
                         if (r < 0) {
@@ -3672,7 +3672,7 @@ int config_parse_memory_limit(
                                 return 0;
                         }
                 } else
-                        bytes = physical_memory_scale(r, 1000U);
+                        bytes = physical_memory_scale(r, 10000U);
 
                 if (bytes >= UINT64_MAX ||
                     (bytes <= 0 && !STR_IN_SET(lvalue, "MemorySwapMax", "MemoryLow", "MemoryMin", "DefaultMemoryLow", "DefaultMemoryMin"))) {
@@ -3734,9 +3734,9 @@ int config_parse_tasks_max(
                 return 0;
         }
 
-        r = parse_permille(rvalue);
+        r = parse_permyriad(rvalue);
         if (r >= 0)
-                *tasks_max = (TasksMax) { r, 1000U }; /* r‰ */
+                *tasks_max = (TasksMax) { r, 10000U }; /* r‱ */
         else {
                 r = safe_atou64(rvalue, &v);
                 if (r < 0) {
index fa9d11e69dc641297258b27c8fdd78a2234719c2..98835327cdb7660dc8fe8706a28aa06d8c9d3aa5 100644 (file)
@@ -1567,7 +1567,7 @@ static int resize_home(int argc, char *argv[], void *userdata) {
         (void) polkit_agent_open_if_enabled(arg_transport, arg_ask_password);
 
         if (arg_disk_size_relative != UINT64_MAX ||
-            (argc > 2 && parse_percent(argv[2]) >= 0))
+            (argc > 2 && parse_permyriad(argv[2]) >= 0))
                 return log_error_errno(SYNTHETIC_ERRNO(EOPNOTSUPP),
                                                "Relative disk size specification currently not supported when resizing.");
 
@@ -2653,7 +2653,7 @@ static int parse_argv(int argc, char *argv[]) {
                                 break;
                         }
 
-                        r = parse_permille(optarg);
+                        r = parse_permyriad(optarg);
                         if (r < 0) {
                                 r = parse_size(optarg, 1024, &arg_disk_size);
                                 if (r < 0)
@@ -2670,7 +2670,7 @@ static int parse_argv(int argc, char *argv[]) {
                                 arg_disk_size_relative = UINT64_MAX;
                         } else {
                                 /* Normalize to UINT32_MAX == 100% */
-                                arg_disk_size_relative = (uint64_t) r * UINT32_MAX / 1000U;
+                                arg_disk_size_relative = (uint64_t) r * UINT32_MAX / 10000U;
 
                                 r = drop_from_identity("diskSize");
                                 if (r < 0)
index 9b3ec07906ed94d60a2494e92c18918040d26720..4406f36614cdb418dff73f09879898590c65c4ab 100644 (file)
@@ -907,9 +907,9 @@ int config_parse_tmpfs_size(
         assert(data);
 
         /* First, try to parse as percentage */
-        r = parse_permille(rvalue);
-        if (r > 0 && r < 1000)
-                *sz = physical_memory_scale(r, 1000U);
+        r = parse_permyriad(rvalue);
+        if (r > 0)
+                *sz = physical_memory_scale(r, 10000U);
         else {
                 uint64_t k;
 
index 8e7a94db55ea87a981b56fe9c62ed5c8a624f319..fce27262f151f178f1308a833f53c759c7c088ab 100644 (file)
@@ -334,9 +334,9 @@ static int append_session_memory_max(pam_handle_t *handle, sd_bus_message *m, co
                 return PAM_SUCCESS;
         }
 
-        r = parse_permille(limit);
+        r = parse_permyriad(limit);
         if (r >= 0) {
-                r = sd_bus_message_append(m, "(sv)", "MemoryMaxScale", "u", (uint32_t) (((uint64_t) r * UINT32_MAX) / 1000U));
+                r = sd_bus_message_append(m, "(sv)", "MemoryMaxScale", "u", (uint32_t) ((uint64_t) r * UINT32_MAX) / 10000U);
                 if (r < 0)
                         return pam_bus_log_create_error(handle, r);
 
index 3e10b50c96b1cf2fab3a2a6accc7c3a21d13622d..1890e9616432b3344be60107bbf768989a260163 100644 (file)
@@ -57,17 +57,17 @@ int tc_time_to_tick(usec_t t, uint32_t *ret) {
         return 0;
 }
 
-int parse_tc_percent(const char *s, uint32_t *percent) {
+int parse_tc_percent(const char *s, uint32_t *ret_fraction) {
         int r;
 
         assert(s);
-        assert(percent);
+        assert(ret_fraction);
 
-        r = parse_permille(s);
+        r = parse_permyriad(s);
         if (r < 0)
                 return r;
 
-        *percent = (double) r / 1000 * UINT32_MAX;
+        *ret_fraction = (double) r / 10000 * UINT32_MAX;
         return 0;
 }
 
index 548dc57e3ceba129131d230d9ca6a9c2dc5b6da1..a1a253e80185025f549a0bba27d9a215a3da5402 100644 (file)
@@ -539,7 +539,7 @@ static int bus_append_cgroup_property(sd_bus_message *m, const char *field, cons
                         return 1;
                 }
 
-                r = parse_permille(eq);
+                r = parse_permyriad(eq);
                 if (r >= 0) {
                         char *n;
 
@@ -548,7 +548,7 @@ static int bus_append_cgroup_property(sd_bus_message *m, const char *field, cons
                          * size can be determined server-side. */
 
                         n = strjoina(field, "Scale");
-                        r = sd_bus_message_append(m, "(sv)", n, "u", (uint32_t) (((uint64_t) r * UINT32_MAX) / 1000U));
+                        r = sd_bus_message_append(m, "(sv)", n, "u", (uint32_t) (((uint64_t) r * UINT32_MAX) / 10000U));
                         if (r < 0)
                                 return bus_log_create_error(r);
 
@@ -565,14 +565,14 @@ static int bus_append_cgroup_property(sd_bus_message *m, const char *field, cons
                 if (isempty(eq))
                         r = sd_bus_message_append(m, "(sv)", "CPUQuotaPerSecUSec", "t", USEC_INFINITY);
                 else {
-                        r = parse_permille_unbounded(eq);
+                        r = parse_permyriad_unbounded(eq);
                         if (r == 0)
                                 return log_error_errno(SYNTHETIC_ERRNO(ERANGE),
                                                        "CPU quota too small.");
                         if (r < 0)
                                 return log_error_errno(r, "CPU quota '%s' invalid.", eq);
 
-                        r = sd_bus_message_append(m, "(sv)", "CPUQuotaPerSecUSec", "t", (((uint64_t) r * USEC_PER_SEC) / 1000U));
+                        r = sd_bus_message_append(m, "(sv)", "CPUQuotaPerSecUSec", "t", (((uint64_t) r * USEC_PER_SEC) / 10000U));
                 }
 
                 if (r < 0)