diff options
| author | Abhinav <abhinav.prsai@gmail.com> | 2025-06-20 22:27:47 +0100 |
|---|---|---|
| committer | Abhinav <abhinav.prsai@gmail.com> | 2025-06-20 22:27:47 +0100 |
| commit | faba12b660834f65aa759625b04efd9fb7d7a4eb (patch) | |
| tree | e5eb42db1027160e145b072e3306a257180fac60 /src/parser.c | |
| parent | 1179dc915b8bfb5d3f221b97c8f0f6a506ba74e4 (diff) | |
add window swallowing
the user can now specify which windows can swallow / can be swallowed.
Diffstat (limited to 'src/parser.c')
| -rw-r--r-- | src/parser.c | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/src/parser.c b/src/parser.c index 3fc2856..315013d 100644 --- a/src/parser.c +++ b/src/parser.c @@ -1,6 +1,6 @@ #define _POSIX_C_SOURCE 200809L #include <ctype.h> -#include <limits.h> +#include <linux/limits.h> #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -404,6 +404,41 @@ found: } torun++; } + else if (!strcmp(key, "can_swallow")) { + char *token = strtok(rest, ","); + int i = 0; + while (token && i < 256) { + char *item = strip_quotes(strip(token)); + if (*item) { + cfg->can_swallow[i] = malloc(2 * sizeof(char *)); + if (!cfg->can_swallow[i]) { + fprintf(stderr, "sxwmrc:%d: malloc failed\n", lineno); + break; + } + cfg->can_swallow[i][0] = strdup(item); + cfg->can_swallow[i][1] = NULL; + i++; + } + token = strtok(NULL, ","); + } + } + else if (!strcmp(key, "can_be_swallowed")) { + char *token = strtok(rest, ","); + int i = 0; + while (token && i < 256) { + char *item = strip_quotes(strip(token)); + if (*item) { + cfg->can_be_swallowed[i] = malloc(2 * sizeof(char *)); + if (!cfg->can_be_swallowed[i]) { + break; + } + cfg->can_be_swallowed[i][0] = strdup(item); + cfg->can_be_swallowed[i][1] = NULL; + i++; + } + token = strtok(NULL, ","); + } + } else { fprintf(stderr, "sxwmrc:%d: unknown option '%s'\n", lineno, key); } |
