diff options
| author | Matt Whitlock <busybox@mattwhitlock.name> | 2014-03-22 18:54:24 -0400 |
|---|---|---|
| committer | Denys Vlasenko <vda.linux@googlemail.com> | 2014-03-23 18:36:22 +0100 |
| commit | c3a27b0bfdf758f649caab2c474e690067af3402 (patch) | |
| tree | be6d8243a249e362f7a079a46fc817def5f1ed4d /util-linux | |
| parent | 504fe45f35bab29752d39cc2d39d2e8c43fe6eac (diff) | |
| download | busybox-w32-c3a27b0bfdf758f649caab2c474e690067af3402.tar.gz busybox-w32-c3a27b0bfdf758f649caab2c474e690067af3402.tar.bz2 busybox-w32-c3a27b0bfdf758f649caab2c474e690067af3402.zip | |
avoid calling bb_strtou twice in MIN macro expansion
Also, the maximum allowable value of swap priority is technically SWAP_FLAG_PRIO_MASK >> SWAP_FLAG_PRIO_SHIFT.
Signed-off-by: Matt Whitlock <busybox@mattwhitlock.name>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'util-linux')
| -rw-r--r-- | util-linux/swaponoff.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/util-linux/swaponoff.c b/util-linux/swaponoff.c index 3f223343e..bcceff772 100644 --- a/util-linux/swaponoff.c +++ b/util-linux/swaponoff.c | |||
| @@ -100,12 +100,12 @@ static int do_em_all(void) | |||
| 100 | g_flags = 0; /* each swap space might have different flags */ | 100 | g_flags = 0; /* each swap space might have different flags */ |
| 101 | p = hasmntopt(m, "pri"); | 101 | p = hasmntopt(m, "pri"); |
| 102 | if (p) { | 102 | if (p) { |
| 103 | /* Max allowed 32767 (==SWAP_FLAG_PRIO_MASK) */ | 103 | /* Max allowed 32767 (== SWAP_FLAG_PRIO_MASK) */ |
| 104 | unsigned int swap_prio = MIN(bb_strtou(p + 4 , NULL, 10), SWAP_FLAG_PRIO_MASK); | 104 | unsigned prio = bb_strtou(p + 4, NULL, 10); |
| 105 | /* We want to allow "NNNN,foo", thus errno == EINVAL is allowed too */ | 105 | /* We want to allow "NNNN,foo", thus errno == EINVAL is allowed too */ |
| 106 | if (errno != ERANGE) { | 106 | if (errno != ERANGE) { |
| 107 | g_flags = SWAP_FLAG_PREFER | | 107 | g_flags = SWAP_FLAG_PREFER | |
| 108 | (swap_prio << SWAP_FLAG_PRIO_SHIFT); | 108 | MIN(prio, SWAP_FLAG_PRIO_MASK); |
| 109 | } | 109 | } |
| 110 | } | 110 | } |
| 111 | #endif | 111 | #endif |
| @@ -124,6 +124,9 @@ int swap_on_off_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; | |||
| 124 | int swap_on_off_main(int argc UNUSED_PARAM, char **argv) | 124 | int swap_on_off_main(int argc UNUSED_PARAM, char **argv) |
| 125 | { | 125 | { |
| 126 | int ret; | 126 | int ret; |
| 127 | #if ENABLE_FEATURE_SWAPON_PRI | ||
| 128 | unsigned prio; | ||
| 129 | #endif | ||
| 127 | 130 | ||
| 128 | INIT_G(); | 131 | INIT_G(); |
| 129 | 132 | ||
| @@ -132,11 +135,11 @@ int swap_on_off_main(int argc UNUSED_PARAM, char **argv) | |||
| 132 | #else | 135 | #else |
| 133 | if (applet_name[5] == 'n') | 136 | if (applet_name[5] == 'n') |
| 134 | opt_complementary = "p+"; | 137 | opt_complementary = "p+"; |
| 135 | ret = getopt32(argv, (applet_name[5] == 'n') ? "ap:" : "a", &g_flags); | 138 | ret = getopt32(argv, (applet_name[5] == 'n') ? "ap:" : "a", &prio); |
| 136 | 139 | ||
| 137 | if (ret & 2) { // -p | 140 | if (ret & 2) { // -p |
| 138 | g_flags = SWAP_FLAG_PREFER | | 141 | g_flags = SWAP_FLAG_PREFER | |
| 139 | ((g_flags & SWAP_FLAG_PRIO_MASK) << SWAP_FLAG_PRIO_SHIFT); | 142 | MIN(prio, SWAP_FLAG_PRIO_MASK); |
| 140 | ret &= 1; | 143 | ret &= 1; |
| 141 | } | 144 | } |
| 142 | #endif | 145 | #endif |
