]> git.sur5r.net Git - i3/i3status/blobdiff - src/print_path_exists.c
able to print percentage
[i3/i3status] / src / print_path_exists.c
index 1b231e6f78ef6afa140852bfa1c5cde23718ce1e..7bdbe30cf4b392421baa6c92a36764d8e231037f 100644 (file)
@@ -6,28 +6,36 @@
 #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) {
+void print_path_exists(yajl_gen json_gen, char *buffer, const char *title, const char *path, const char *format, const char *format_down) {
     const char *walk;
     char *outwalk = buffer;
     struct stat st;
     const bool exists = (stat(path, &st) == 0);
 
+    if (exists || format_down == NULL) {
+        walk = format;
+    } else {
+        walk = format_down;
+    }
+
     INSTANCE(path);
 
     START_COLOR((exists ? "color_good" : "color_bad"));
 
-    for (walk = format; *walk != '\0'; walk++) {
+    for (; *walk != '\0'; walk++) {
         if (*walk != '%') {
             *(outwalk++) = *walk;
-            continue;
-        }
 
-        if (BEGINS_WITH(walk + 1, "title")) {
+        } else if (BEGINS_WITH(walk + 1, "title")) {
             outwalk += sprintf(outwalk, "%s", title);
             walk += strlen("title");
+
         } else if (BEGINS_WITH(walk + 1, "status")) {
             outwalk += sprintf(outwalk, "%s", (exists ? "yes" : "no"));
             walk += strlen("status");
+
+        } else {
+            *(outwalk++) = '%';
         }
     }