summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--common/util.c10
-rw-r--r--include/util.h5
-rw-r--r--sway/commands.c3
-rw-r--r--swaygrab/CMakeLists.txt1
-rw-r--r--swaygrab/main.c4
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
7int 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
7static struct modifier_key { 17static 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 @@
11int wrap(int i, int max); 11int wrap(int i, int max);
12 12
13/** 13/**
14 * Count number of digits in int
15 */
16int 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
16install( 15install(
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