stest: restore stream testing - dmenu - Dmenu fork with xft fonts.
 (HTM) git clone git://r-36.net/dmenu
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 6b1d658d1224cd108d64a6c340d47b66ad99816d
 (DIR) parent 32ef0f5662bfe8b8891ba6341d3a27818fb55508
 (HTM) Author: Connor Lane Smith <cls@lubutu.com>
       Date:   Fri,  9 Dec 2011 11:49:44 +0100
       
       stest: restore stream testing
       Diffstat:
         M stest.1                             |       3 ++-
         M stest.c                             |       9 ++++++++-
       
       2 files changed, 10 insertions(+), 2 deletions(-)
       ---
 (DIR) diff --git a/stest.1 b/stest.1
       @@ -13,7 +13,8 @@ stest \- filter a list of files by properties
        .B stest
        takes a list of files and filters by the files' properties, analogous to
        .IR test (1).
       -Files which pass all tests are printed to stdout.
       +Files which pass all tests are printed to stdout. If no files are given, stest
       +reads files from stdin.
        .SH OPTIONS
        .TP
        .B \-a
 (DIR) diff --git a/stest.c b/stest.c
       @@ -3,6 +3,7 @@
        #include <stdbool.h>
        #include <stdio.h>
        #include <stdlib.h>
       +#include <string.h>
        #include <unistd.h>
        #include <sys/stat.h>
        
       @@ -17,7 +18,7 @@ static struct stat old, new;
        int
        main(int argc, char *argv[]) {
                struct dirent *d;
       -        char buf[BUFSIZ];
       +        char buf[BUFSIZ], *p;
                DIR *dir;
                int opt;
        
       @@ -35,6 +36,12 @@ main(int argc, char *argv[]) {
                                fprintf(stderr, "usage: %s [-abcdefghlpqrsuwx] [-n file] [-o file] [file...]\n", argv[0]);
                                exit(2);
                        }
       +        if(optind == argc)
       +                while(fgets(buf, sizeof buf, stdin)) {
       +                        if((p = strchr(buf, '\n')))
       +                                *p = '\0';
       +                        test(buf, buf);
       +                }
                for(; optind < argc; optind++)
                        if(FLAG('l') && (dir = opendir(argv[optind]))) {
                                /* test directory contents */