summaryrefslogtreecommitdiff
path: root/swaybar/tray/icon.c
diff options
context:
space:
mode:
authorReza Jelveh <[email protected]>2024-04-15 13:39:41 +0800
committerGitHub <[email protected]>2024-04-15 01:39:41 -0400
commitfb86ed6b0588dfdebfb66ce875bc63cfa0a897f6 (patch)
tree29857a1769107adc58696f08d379f608aa4e29a2 /swaybar/tray/icon.c
parenta5e79676c4bd22fc5902182acf0667907202a465 (diff)
feat: 1.9 merge (#277)
Co-authored-by: William McKinnon <[email protected]> Co-authored-by: Erik Reider <[email protected]>
Diffstat (limited to 'swaybar/tray/icon.c')
-rw-r--r--swaybar/tray/icon.c26
1 files changed, 6 insertions, 20 deletions
diff --git a/swaybar/tray/icon.c b/swaybar/tray/icon.c
index c426c3d4..b513dca5 100644
--- a/swaybar/tray/icon.c
+++ b/swaybar/tray/icon.c
@@ -40,9 +40,7 @@ static list_t *get_basedirs(void) {
data_dirs = strdup(data_dirs);
char *dir = strtok(data_dirs, ":");
do {
- size_t path_len = snprintf(NULL, 0, "%s/icons", dir) + 1;
- char *path = malloc(path_len);
- snprintf(path, path_len, "%s/icons", dir);
+ char *path = format_str("%s/icons", dir);
list_add(basedirs, path);
} while ((dir = strtok(NULL, ":")));
free(data_dirs);
@@ -206,13 +204,7 @@ static const char *entry_handler(char *group, char *key, char *value,
*/
static struct icon_theme *read_theme_file(char *basedir, char *theme_name) {
// look for index.theme file
- size_t path_len = snprintf(NULL, 0, "%s/%s/index.theme", basedir,
- theme_name) + 1;
- char *path = malloc(path_len);
- if (!path) {
- return NULL;
- }
- snprintf(path, path_len, "%s/%s/index.theme", basedir, theme_name);
+ char *path = format_str("%s/%s/index.theme", basedir, theme_name);
FILE *theme_file = fopen(path, "r");
free(path);
if (!theme_file) {
@@ -416,26 +408,20 @@ static char *find_icon_in_subdir(char *name, char *basedir, char *theme,
#endif
};
- size_t path_len = snprintf(NULL, 0, "%s/%s/%s/%s.EXT", basedir, theme,
- subdir, name) + 1;
- char *path = malloc(path_len);
-
for (size_t i = 0; i < sizeof(extensions) / sizeof(*extensions); ++i) {
- snprintf(path, path_len, "%s/%s/%s/%s.%s", basedir, theme, subdir,
- name, extensions[i]);
+ char *path = format_str("%s/%s/%s/%s.%s",
+ basedir, theme, subdir, name, extensions[i]);
if (access(path, R_OK) == 0) {
return path;
}
+ free(path);
}
- free(path);
return NULL;
}
static bool theme_exists_in_basedir(char *theme, char *basedir) {
- size_t path_len = snprintf(NULL, 0, "%s/%s", basedir, theme) + 1;
- char *path = malloc(path_len);
- snprintf(path, path_len, "%s/%s", basedir, theme);
+ char *path = format_str("%s/%s", basedir, theme);
bool ret = dir_exists(path);
free(path);
return ret;