diff options
Diffstat (limited to 'swaybar/tray')
| -rw-r--r-- | swaybar/tray/host.c | 10 | ||||
| -rw-r--r-- | swaybar/tray/icon.c | 26 | ||||
| -rw-r--r-- | swaybar/tray/watcher.c | 11 | 
3 files changed, 13 insertions, 34 deletions
diff --git a/swaybar/tray/host.c b/swaybar/tray/host.c index ddf2416d..eea2caa5 100644 --- a/swaybar/tray/host.c +++ b/swaybar/tray/host.c @@ -10,6 +10,7 @@  #include "swaybar/tray/tray.h"  #include "list.h"  #include "log.h" +#include "stringop.h"  static const char *watcher_path = "/StatusNotifierWatcher"; @@ -138,12 +139,10 @@ static int handle_new_watcher(sd_bus_message *msg,  bool init_host(struct swaybar_host *host, char *protocol,  		struct swaybar_tray *tray) { -	size_t len = snprintf(NULL, 0, "org.%s.StatusNotifierWatcher", protocol) + 1; -	host->watcher_interface = malloc(len); +	host->watcher_interface = format_str("org.%s.StatusNotifierWatcher", protocol);  	if (!host->watcher_interface) {  		return false;  	} -	snprintf(host->watcher_interface, len, "org.%s.StatusNotifierWatcher", protocol);  	sd_bus_slot *reg_slot = NULL, *unreg_slot = NULL, *watcher_slot = NULL;  	int ret = sd_bus_match_signal(tray->bus, ®_slot, host->watcher_interface, @@ -173,13 +172,10 @@ bool init_host(struct swaybar_host *host, char *protocol,  	}  	pid_t pid = getpid(); -	size_t service_len = snprintf(NULL, 0, "org.%s.StatusNotifierHost-%d", -			protocol, pid) + 1; -	host->service = malloc(service_len); +	host->service = format_str("org.%s.StatusNotifierHost-%d", protocol, pid);  	if (!host->service) {  		goto error;  	} -	snprintf(host->service, service_len, "org.%s.StatusNotifierHost-%d", protocol, pid);  	ret = sd_bus_request_name(tray->bus, host->service, 0);  	if (ret < 0) {  		sway_log(SWAY_DEBUG, "Failed to acquire service name: %s", strerror(-ret)); 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; diff --git a/swaybar/tray/watcher.c b/swaybar/tray/watcher.c index 16afc27c..2458a8c2 100644 --- a/swaybar/tray/watcher.c +++ b/swaybar/tray/watcher.c @@ -6,6 +6,7 @@  #include <string.h>  #include "list.h"  #include "log.h" +#include "stringop.h"  #include "swaybar/tray/watcher.h"  static const char *obj_path = "/StatusNotifierWatcher"; @@ -76,9 +77,7 @@ static int register_sni(sd_bus_message *msg, void *data, sd_bus_error *error) {  			service = service_or_path;  			path = "/StatusNotifierItem";  		} -		size_t id_len = snprintf(NULL, 0, "%s%s", service, path) + 1; -		id = malloc(id_len); -		snprintf(id, id_len, "%s%s", service, path); +		id = format_str("%s%s", service, path);  	}  	if (list_seq_find(watcher->items, cmp_id, id) == -1) { @@ -107,7 +106,7 @@ static int register_host(sd_bus_message *msg, void *data, sd_bus_error *error) {  		sway_log(SWAY_DEBUG, "Registering Status Notifier Host '%s'", service);  		list_add(watcher->hosts, strdup(service));  		sd_bus_emit_signal(watcher->bus, obj_path, watcher->interface, -				"StatusNotifierHostRegistered", "s", service); +				"StatusNotifierHostRegistered", "");  	} else {  		sway_log(SWAY_DEBUG, "Status Notifier Host '%s' already registered", service);  	} @@ -159,9 +158,7 @@ struct swaybar_watcher *create_watcher(char *protocol, sd_bus *bus) {  		return NULL;  	} -	size_t len = snprintf(NULL, 0, "org.%s.StatusNotifierWatcher", protocol) + 1; -	watcher->interface = malloc(len); -	snprintf(watcher->interface, len, "org.%s.StatusNotifierWatcher", protocol); +	watcher->interface = format_str("org.%s.StatusNotifierWatcher", protocol);  	sd_bus_slot *signal_slot = NULL, *vtable_slot = NULL;  	int ret = sd_bus_add_object_vtable(bus, &vtable_slot, obj_path,  | 
