summaryrefslogtreecommitdiff
path: root/swaynag/config.c
diff options
context:
space:
mode:
authorWilliam McKinnon <[email protected]>2022-04-27 17:33:23 -0400
committerWilliam McKinnon <[email protected]>2022-04-27 17:33:23 -0400
commit7460d9f565092836f81b917a040caff57142d91a (patch)
treeb76e7facef2aaa5925a62ad6b9995c16663313f0 /swaynag/config.c
parentc37aba2736e31264bdcd52147a96fa85e17c8c5f (diff)
merge sway master
Diffstat (limited to 'swaynag/config.c')
-rw-r--r--swaynag/config.c27
1 files changed, 23 insertions, 4 deletions
diff --git a/swaynag/config.c b/swaynag/config.c
index 6db7cce5..b212a0c3 100644
--- a/swaynag/config.c
+++ b/swaynag/config.c
@@ -19,6 +19,10 @@ static char *read_from_stdin(void) {
ssize_t nread;
while ((nread = getline(&line, &line_size, stdin)) != -1) {
buffer = realloc(buffer, buffer_len + nread + 1);
+ if (!buffer) {
+ perror("realloc");
+ return NULL;
+ }
snprintf(&buffer[buffer_len], nread + 1, "%s", line);
buffer_len += nread;
}
@@ -152,6 +156,10 @@ int swaynag_parse_options(int argc, char **argv, struct swaynag *swaynag,
}
struct swaynag_button *button;
button = calloc(sizeof(struct swaynag_button), 1);
+ if (!button) {
+ perror("calloc");
+ return EXIT_FAILURE;
+ }
button->text = strdup(optarg);
button->type = SWAYNAG_ACTION_COMMAND;
button->action = strdup(argv[optind]);
@@ -215,14 +223,17 @@ int swaynag_parse_options(int argc, char **argv, struct swaynag *swaynag,
if (swaynag) {
free(swaynag->details.message);
swaynag->details.message = read_from_stdin();
+ if (!swaynag->details.message) {
+ return EXIT_FAILURE;
+ }
swaynag->details.button_up.text = strdup("▲");
swaynag->details.button_down.text = strdup("▼");
}
break;
case 'L': // Detailed Button Text
if (swaynag) {
- free(swaynag->details.button_details->text);
- swaynag->details.button_details->text = strdup(optarg);
+ free(swaynag->details.button_details.text);
+ swaynag->details.button_details.text = strdup(optarg);
}
break;
case 'm': // Message
@@ -406,6 +417,10 @@ int swaynag_load_config(char *path, struct swaynag *swaynag, list_t *types) {
break;
}
char *name = calloc(1, close - line);
+ if (!name) {
+ perror("calloc");
+ return EXIT_FAILURE;
+ }
strncat(name, line + 1, close - line - 1);
type = swaynag_type_get(types, name);
if (!type) {
@@ -414,8 +429,12 @@ int swaynag_load_config(char *path, struct swaynag *swaynag, list_t *types) {
}
free(name);
} else {
- char *flag = malloc(sizeof(char) * (nread + 3));
- sprintf(flag, "--%s", line);
+ char *flag = malloc(nread + 3);
+ if (!flag) {
+ perror("calloc");
+ return EXIT_FAILURE;
+ }
+ snprintf(flag, nread + 3, "--%s", line);
char *argv[] = {"swaynag", flag};
result = swaynag_parse_options(2, argv, swaynag, types, type,
NULL, NULL);