diff options
author | Kinware AB <oss@kinware.com> | 2013-11-12 20:51:23 +0100 |
---|---|---|
committer | Michael Stapelberg <michael@stapelberg.de> | 2013-11-22 15:52:27 +0100 |
commit | 717484184f6e8a3bb38f50cc6fbe4fbfb3544cd9 (patch) | |
tree | 3bb8bfdab64761ce06dff14494a75bdcf2bd8bbd /src/print_path_exists.c | |
parent | 98595f9f280f331d485b74afd9535723f495b071 (diff) |
Add support for path_exists directive.
Diffstat (limited to 'src/print_path_exists.c')
-rw-r--r-- | src/print_path_exists.c | 35 |
1 files changed, 35 insertions, 0 deletions
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); +} |