diff options
| author | Kinware AB | 2013-11-12 20:51:23 +0100 | 
|---|---|---|
| committer | Michael Stapelberg | 2013-11-22 15:52:27 +0100 | 
| commit | 717484184f6e8a3bb38f50cc6fbe4fbfb3544cd9 (patch) | |
| tree | 3bb8bfdab64761ce06dff14494a75bdcf2bd8bbd /src | |
| parent | document format_muted in the manpage (diff) | |
Add support for path_exists directive.
Diffstat (limited to 'src')
| -rw-r--r-- | src/general.c | 1 | ||||
| -rw-r--r-- | src/print_path_exists.c | 35 | 
2 files changed, 36 insertions, 0 deletions
| diff --git a/src/general.c b/src/general.c index 7ec80a8..c5b33b4 100644 --- a/src/general.c +++ b/src/general.c @@ -6,6 +6,7 @@  #include <stdlib.h>  #include <unistd.h>  #include <sys/fcntl.h> +#include <sys/stat.h>  #include "i3status.h" diff --git a/src/print_path_exists.c b/src/print_path_exists.c new file mode 100644 index 0000000..c5225a1 --- /dev/null +++ b/src/print_path_exists.c @@ -0,0 +1,35 @@ +#include <stdio.h> +#include <string.h> +#include <yajl/yajl_gen.h> +#include <yajl/yajl_version.h> +#include <sys/stat.h> +#include "i3status.h" + +void print_path_exists(yajl_gen json_gen, char *buffer, const char *title, const char *path, const char *format) { +        const char *walk; +        char *outwalk = buffer; +        struct stat st; +        const bool exists = (stat(path, &st) == 0); + +        INSTANCE(path); + +        START_COLOR((exists ? "color_good" : "color_bad")); + +        for (walk = format; *walk != '\0'; walk++) { +                if (*walk != '%') { +                        *(outwalk++) = *walk; +                        continue; +                } + +                if (strncmp(walk+1, "title", strlen("title")) == 0) { +                        outwalk += sprintf(outwalk, "%s", title); +                        walk += strlen("title"); +                } else if (strncmp(walk+1, "status", strlen("status")) == 0) { +                        outwalk += sprintf(outwalk, "%s", (exists ? "yes" : "no")); +                        walk += strlen("status"); +                } +        } + +        END_COLOR; +        OUTPUT_FULL_TEXT(buffer); +} | 
