diff options
-rw-r--r-- | common/util.c | 10 | ||||
-rw-r--r-- | include/util.h | 5 | ||||
-rw-r--r-- | sway/commands.c | 3 | ||||
-rw-r--r-- | swaygrab/CMakeLists.txt | 1 | ||||
-rw-r--r-- | swaygrab/main.c | 4 |
5 files changed, 18 insertions, 5 deletions
diff --git a/common/util.c b/common/util.c index 7602216c..243f90a8 100644 --- a/common/util.c +++ b/common/util.c | |||
@@ -4,6 +4,16 @@ int wrap(int i, int max) { | |||
4 | return ((i % max) + max) % max; | 4 | return ((i % max) + max) % max; |
5 | } | 5 | } |
6 | 6 | ||
7 | int numlen(int n) { | ||
8 | if (n >= 1000000) return 7; | ||
9 | if (n >= 100000) return 6; | ||
10 | if (n >= 10000) return 5; | ||
11 | if (n >= 1000) return 4; | ||
12 | if (n >= 100) return 3; | ||
13 | if (n >= 10) return 2; | ||
14 | return 1; | ||
15 | } | ||
16 | |||
7 | static struct modifier_key { | 17 | static struct modifier_key { |
8 | char *name; | 18 | char *name; |
9 | uint32_t mod; | 19 | uint32_t mod; |
diff --git a/include/util.h b/include/util.h index 7f4b3ace..dc47e343 100644 --- a/include/util.h +++ b/include/util.h | |||
@@ -11,6 +11,11 @@ | |||
11 | int wrap(int i, int max); | 11 | int wrap(int i, int max); |
12 | 12 | ||
13 | /** | 13 | /** |
14 | * Count number of digits in int | ||
15 | */ | ||
16 | int numlen(int n); | ||
17 | |||
18 | /** | ||
14 | * Get modifier mask from modifier name. | 19 | * Get modifier mask from modifier name. |
15 | * | 20 | * |
16 | * Returns the modifer mask or 0 if the name isn't found. | 21 | * Returns the modifer mask or 0 if the name isn't found. |
diff --git a/sway/commands.c b/sway/commands.c index 58fc4aa5..9f6e5032 100644 --- a/sway/commands.c +++ b/sway/commands.c | |||
@@ -14,7 +14,6 @@ | |||
14 | #include <limits.h> | 14 | #include <limits.h> |
15 | #include <float.h> | 15 | #include <float.h> |
16 | #include <libinput.h> | 16 | #include <libinput.h> |
17 | #include <math.h> | ||
18 | #include "stringop.h" | 17 | #include "stringop.h" |
19 | #include "layout.h" | 18 | #include "layout.h" |
20 | #include "focus.h" | 19 | #include "focus.h" |
@@ -1581,7 +1580,7 @@ static struct cmd_results *cmd_bar(int argc, char **argv) { | |||
1581 | int i; | 1580 | int i; |
1582 | for (i = 0; i < config->bars->length; ++i) { | 1581 | for (i = 0; i < config->bars->length; ++i) { |
1583 | if (bar == config->bars->items[i]) { | 1582 | if (bar == config->bars->items[i]) { |
1584 | const int len = 5 + log10(i) + 1; // "bar-" + i + \0 | 1583 | const int len = 5 + numlen(i); // "bar-" + i + \0 |
1585 | bar->id = malloc(len * sizeof(char)); | 1584 | bar->id = malloc(len * sizeof(char)); |
1586 | snprintf(bar->id, len, "bar-%d", i); | 1585 | snprintf(bar->id, len, "bar-%d", i); |
1587 | break; | 1586 | break; |
diff --git a/swaygrab/CMakeLists.txt b/swaygrab/CMakeLists.txt index 9bd06c08..9035ac8b 100644 --- a/swaygrab/CMakeLists.txt +++ b/swaygrab/CMakeLists.txt | |||
@@ -10,7 +10,6 @@ target_link_libraries(swaygrab | |||
10 | sway-common | 10 | sway-common |
11 | ${JSONC_LIBRARIES} | 11 | ${JSONC_LIBRARIES} |
12 | rt | 12 | rt |
13 | m | ||
14 | ) | 13 | ) |
15 | 14 | ||
16 | install( | 15 | install( |
diff --git a/swaygrab/main.c b/swaygrab/main.c index b944222c..82d623e7 100644 --- a/swaygrab/main.c +++ b/swaygrab/main.c | |||
@@ -39,7 +39,7 @@ void grab_and_apply_magick(const char *file, const char *output, | |||
39 | 39 | ||
40 | const char *fmt = "convert -depth 8 -size %dx%d+0 rgba:- -flip %s"; | 40 | const char *fmt = "convert -depth 8 -size %dx%d+0 rgba:- -flip %s"; |
41 | char *cmd = malloc(strlen(fmt) - 6 /*args*/ | 41 | char *cmd = malloc(strlen(fmt) - 6 /*args*/ |
42 | + log10(width) + 1 + log10(height) + 1 + strlen(file) + 1); | 42 | + numlen(width) + numlen(height) + strlen(file) + 1); |
43 | sprintf(cmd, fmt, width, height, file); | 43 | sprintf(cmd, fmt, width, height, file); |
44 | 44 | ||
45 | FILE *f = popen(cmd, "w"); | 45 | FILE *f = popen(cmd, "w"); |
@@ -72,7 +72,7 @@ void grab_and_apply_movie_magic(const char *file, const char *output, | |||
72 | "-video_size %dx%d -pixel_format argb " | 72 | "-video_size %dx%d -pixel_format argb " |
73 | "-i pipe:0 -r %d -vf vflip %s"; | 73 | "-i pipe:0 -r %d -vf vflip %s"; |
74 | char *cmd = malloc(strlen(fmt) - 8 /*args*/ | 74 | char *cmd = malloc(strlen(fmt) - 8 /*args*/ |
75 | + log10(width) + 1 + log10(height) + 1 + log10(framerate) + 1 * 2 | 75 | + numlen(width) + numlen(height) + numlen(framerate) * 2 |
76 | + strlen(file) + 1); | 76 | + strlen(file) + 1); |
77 | sprintf(cmd, fmt, framerate, width, height, framerate, file); | 77 | sprintf(cmd, fmt, framerate, width, height, framerate, file); |
78 | 78 | ||