tIgnore hidden inodes by default - wendy - watch files/directories and run commands on any event
 (HTM) git clone git://z3bra.org/wendy
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 143131288cbe6d8602ab925392a5b7537a026d85
 (DIR) parent 4ff6468aa26d8c9c7b85ca6cf6eac680e4d1ccc4
 (HTM) Author: Willy Goiffon <dev@z3bra.org>
       Date:   Thu, 12 Mar 2020 19:30:52 +0100
       
       Ignore hidden inodes by default
       
       Diffstat:
         M wendy.c                             |      19 +++++++++++++++++--
       
       1 file changed, 17 insertions(+), 2 deletions(-)
       ---
 (DIR) diff --git a/wendy.c b/wendy.c
       t@@ -38,14 +38,22 @@ char *evname[] = {
        };
        
        int verbose = 0;
       +int aflag = 0, dflag = 0, rflag = 0;
        
        void
        usage(char *name)
        {
       -        fprintf(stderr, "usage: %s [-vdr] [-m mask] [-w file] [command [args...]]\n", name);
       +        fprintf(stderr, "usage: %s [-adrv] [-m mask] [-w file] [command [args...]]\n", name);
                exit(1);
        }
        
       +char *
       +basename(char *p)
       +{
       +        char *b = strrchr(p, '/');
       +        return *b ? b + 1 : p;
       +}
       +
        struct watcher *
        getwatcher(struct watchers *h, int wd)
        {
       t@@ -119,7 +127,7 @@ wdpath(struct inotify_event *e, struct watcher *w)
        int
        main (int argc, char **argv)
        {
       -        int fd, dflag = 0, rflag = 0;
       +        int fd;
                uint8_t buf[EVSZ];
                uint32_t mask = MASK;
                ssize_t len, off = 0;
       t@@ -133,6 +141,9 @@ main (int argc, char **argv)
                        perror("inotify_init");
        
                ARGBEGIN {
       +        case 'a':
       +                aflag = 1;
       +                break;
                case 'd':
                        dflag = 1;
                        break;
       t@@ -173,6 +184,10 @@ main (int argc, char **argv)
                                goto skip;
                        }
        
       +                /* skip hidden files when aflag is not set */
       +                if (!aflag && basename(wdpath(e, w))[0] == '.')
       +                        goto skip;
       +
                        if (verbose && e->mask & IN_ALL_EVENTS) {
                                printf("%s\t%s\n", evname[e->mask & IN_ALL_EVENTS], wdpath(e, w));
                                fflush(stdout);