diff options
-rw-r--r-- | Makefile | 7 | ||||
-rw-r--r-- | README.md | 1 | ||||
-rw-r--r-- | journal-notify.c | 23 |
3 files changed, 28 insertions, 3 deletions
@@ -14,7 +14,12 @@ VERSION := 0.0.2 all: journal-notify README.html -journal-notify: journal-notify.c +version.h: $(wildcard .git/HEAD .git/index .git/refs/tags/*) Makefile + echo "#ifndef VERSION" > $@ + echo "#define VERSION \"$(shell git describe --tags --long 2>/dev/null || echo ${VERSION})\"" >> $@ + echo "#endif" >> $@ + +journal-notify: journal-notify.c version.h $(CC) $(CFLAGS) -o journal-notify journal-notify.c README.html: README.md @@ -57,6 +57,7 @@ Be warned: This can flood your disktop with notifications. to systemd journal fields. (see `man 7 systemd.journal-fields`) * *-n*: no case sensitive regular expressions * *-r REGEX*: This add a regular expression match for the message field. +* *-v* verbose output, can be specified multiple times The screenshot shown above resulted from this command: diff --git a/journal-notify.c b/journal-notify.c index 413f6d8..0f54090 100644 --- a/journal-notify.c +++ b/journal-notify.c @@ -14,9 +14,11 @@ #include <libnotify/notify.h> +#include "version.h" + const char * program = NULL; -#define OPTSTRING "ehi:m:nr:" +#define OPTSTRING "ehi:m:nr:v" #define DEFAULTICON "dialog-information" int notify(const char * summary, const char * body, const char * icon) { @@ -46,6 +48,7 @@ out: int main(int argc, char **argv) { int i, rc = EXIT_FAILURE; + uint8_t verbose = 0; uint8_t have_regex = 0; regex_t regex; @@ -68,14 +71,21 @@ int main(int argc, char **argv) { regex_flags |= REG_EXTENDED; break; case 'h': - fprintf(stderr, "usage: %s [-e] [-h] [-m MATCH] [-n] [-r REGEX]\n", program); + fprintf(stderr, "usage: %s [-e] [-h] [-i ICON] [-m MATCH] [-n] [-r REGEX] [-vv]\n", program); return EXIT_SUCCESS; case 'n': regex_flags |= REG_ICASE; break; + case 'v': + verbose++; + break; } } + /* say hello */ + if (verbose > 0) + printf("%s v%s (compiled: " __DATE__ ", " __TIME__ ")\n", program, VERSION); + /* reinitialize getopt() by resetting optind to 0 */ optind = 0; @@ -92,6 +102,9 @@ int main(int argc, char **argv) { icon = optarg; break; case 'm': + if (verbose > 1) + printf("Adding match '%s'...\n", optarg); + if ((rc = sd_journal_add_match(journal, optarg, 0)) < 0) { fprintf(stderr, "Failed to add match '%s': %s\n", optarg, strerror(-rc)); goto out20; @@ -99,6 +112,9 @@ int main(int argc, char **argv) { break; case 'r': + if (verbose > 1) + printf("Adding regular expression '%s'...\n", optarg); + if (have_regex > 0) { fprintf(stderr, "Only one regex allowed!\n"); rc = EXIT_FAILURE; @@ -162,6 +178,9 @@ int main(int argc, char **argv) { /* show notification */ if (have_regex == 0 || regexec(®ex, message, 0, NULL, 0) == 0) { for (i = 0; i < 3; i++) { + if (verbose > 0) + printf("Showing notification: %s: %s\n", summary, message); + if ((rc = notify(summary, message, icon)) == 0) break; |