Brian Stinson 2593d8
From cabd9055d0d745f7de9625dec6c623d363dd3aa6 Mon Sep 17 00:00:00 2001
Brian Stinson 2593d8
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
Brian Stinson 2593d8
Date: Wed, 29 May 2019 10:17:43 +0200
Brian Stinson 2593d8
Subject: [PATCH] shared/cpu-set-util: only force range printing one time
Brian Stinson 2593d8
MIME-Version: 1.0
Brian Stinson 2593d8
Content-Type: text/plain; charset=UTF-8
Brian Stinson 2593d8
Content-Transfer-Encoding: 8bit
Brian Stinson 2593d8
Brian Stinson 2593d8
The idea is to have at least one range to make the new format clearly
Brian Stinson 2593d8
distinguishable from the old. But it is enough to just do it once.
Brian Stinson 2593d8
In particular, in case the affinity would be specified like 0, 2, 4, 6…,
Brian Stinson 2593d8
this gives much shorter output.
Brian Stinson 2593d8
Brian Stinson 2593d8
(cherry picked from commit 1f57a176af5152d05719bf43740e87a47e37af50)
Brian Stinson 2593d8
Brian Stinson 2593d8
Related: #1734787
Brian Stinson 2593d8
---
Brian Stinson 2593d8
 src/basic/cpu-set-util.c     | 10 ++++++++--
Brian Stinson 2593d8
 src/test/test-cpu-set-util.c |  7 ++++---
Brian Stinson 2593d8
 2 files changed, 12 insertions(+), 5 deletions(-)
Brian Stinson 2593d8
Brian Stinson 2593d8
diff --git a/src/basic/cpu-set-util.c b/src/basic/cpu-set-util.c
Brian Stinson 2593d8
index bff39ec143..5024290557 100644
Brian Stinson 2593d8
--- a/src/basic/cpu-set-util.c
Brian Stinson 2593d8
+++ b/src/basic/cpu-set-util.c
Brian Stinson 2593d8
@@ -58,7 +58,10 @@ char *cpu_set_to_range_string(const CPUSet *set) {
Brian Stinson 2593d8
                         if (!GREEDY_REALLOC(str, allocated, len + 2 + 2 * DECIMAL_STR_MAX(unsigned)))
Brian Stinson 2593d8
                                 return NULL;
Brian Stinson 2593d8
 
Brian Stinson 2593d8
-                        r = sprintf(str + len, len > 0 ? " %d-%d" : "%d-%d", range_start, range_end);
Brian Stinson 2593d8
+                        if (range_end > range_start || len == 0)
Brian Stinson 2593d8
+                                r = sprintf(str + len, len > 0 ? " %d-%d" : "%d-%d", range_start, range_end);
Brian Stinson 2593d8
+                        else
Brian Stinson 2593d8
+                                r = sprintf(str + len, len > 0 ? " %d" : "%d", range_start);
Brian Stinson 2593d8
                         assert_se(r > 0);
Brian Stinson 2593d8
                         len += r;
Brian Stinson 2593d8
                 }
Brian Stinson 2593d8
@@ -67,7 +70,10 @@ char *cpu_set_to_range_string(const CPUSet *set) {
Brian Stinson 2593d8
                 if (!GREEDY_REALLOC(str, allocated, len + 2 + 2 * DECIMAL_STR_MAX(int)))
Brian Stinson 2593d8
                         return NULL;
Brian Stinson 2593d8
 
Brian Stinson 2593d8
-                r = sprintf(str + len, len > 0 ? " %d-%d" : "%d-%d", range_start, range_end);
Brian Stinson 2593d8
+                if (range_end > range_start || len == 0)
Brian Stinson 2593d8
+                        r = sprintf(str + len, len > 0 ? " %d-%d" : "%d-%d", range_start, range_end);
Brian Stinson 2593d8
+                else
Brian Stinson 2593d8
+                        r = sprintf(str + len, len > 0 ? " %d" : "%d", range_start);
Brian Stinson 2593d8
                 assert_se(r > 0);
Brian Stinson 2593d8
         }
Brian Stinson 2593d8
 
Brian Stinson 2593d8
diff --git a/src/test/test-cpu-set-util.c b/src/test/test-cpu-set-util.c
Brian Stinson 2593d8
index 0d2741cd43..995b981d25 100644
Brian Stinson 2593d8
--- a/src/test/test-cpu-set-util.c
Brian Stinson 2593d8
+++ b/src/test/test-cpu-set-util.c
Brian Stinson 2593d8
@@ -31,19 +31,20 @@ static void test_parse_cpu_set(void) {
Brian Stinson 2593d8
         cpu_set_reset(&c);
Brian Stinson 2593d8
 
Brian Stinson 2593d8
         /* Simple range (from CPUAffinity example) */
Brian Stinson 2593d8
-        assert_se(parse_cpu_set_full("1 2", &c, true, NULL, "fake", 1, "CPUAffinity") >= 0);
Brian Stinson 2593d8
+        assert_se(parse_cpu_set_full("1 2 4", &c, true, NULL, "fake", 1, "CPUAffinity") >= 0);
Brian Stinson 2593d8
         assert_se(c.set);
Brian Stinson 2593d8
         assert_se(c.allocated >= sizeof(__cpu_mask) / 8);
Brian Stinson 2593d8
         assert_se(CPU_ISSET_S(1, c.allocated, c.set));
Brian Stinson 2593d8
         assert_se(CPU_ISSET_S(2, c.allocated, c.set));
Brian Stinson 2593d8
-        assert_se(CPU_COUNT_S(c.allocated, c.set) == 2);
Brian Stinson 2593d8
+        assert_se(CPU_ISSET_S(4, c.allocated, c.set));
Brian Stinson 2593d8
+        assert_se(CPU_COUNT_S(c.allocated, c.set) == 3);
Brian Stinson 2593d8
 
Brian Stinson 2593d8
         assert_se(str = cpu_set_to_string(&c);;
Brian Stinson 2593d8
         log_info("cpu_set_to_string: %s", str);
Brian Stinson 2593d8
         str = mfree(str);
Brian Stinson 2593d8
         assert_se(str = cpu_set_to_range_string(&c);;
Brian Stinson 2593d8
         log_info("cpu_set_to_range_string: %s", str);
Brian Stinson 2593d8
-        assert_se(streq(str, "1-2"));
Brian Stinson 2593d8
+        assert_se(streq(str, "1-2 4"));
Brian Stinson 2593d8
         str = mfree(str);
Brian Stinson 2593d8
         cpu_set_reset(&c);
Brian Stinson 2593d8