Add support for using - as shorthand for stdin/stdout in tradcpp.
authorjsg <jsg@openbsd.org>
Fri, 8 Aug 2014 12:40:26 +0000 (12:40 +0000)
committerjsg <jsg@openbsd.org>
Fri, 8 Aug 2014 12:40:26 +0000 (12:40 +0000)
When looking into switching the /usr/bin/cpp wrapper to
tradcpp I came across "| ${CPP} ${CPPFLAGS} -" in usr.bin/which.

gcc documents this behaviour for cpp here:
https://gcc.gnu.org/onlinedocs/cpp/Invocation.html

Versions of the John F. Reiser derived cpp in 32V and CSRG SCCS
accept this usage as well, as does the cpp in PCC.

libexec/tradcpp/files.c
libexec/tradcpp/main.c
libexec/tradcpp/output.c

index f0ee45e..ea151b2 100644 (file)
@@ -400,7 +400,7 @@ file_readabsolute(struct place *place, const char *name)
 
        assert(place != NULL);
 
-       if (name == NULL) {
+       if ((name == NULL) || !strcmp(name, "-")) {
                fd = STDIN_FILENO;
                pf = place_addfile(place, "<standard-input>", false);
        } else {
index 35f9bca..eae7f44 100644 (file)
@@ -1040,7 +1040,7 @@ main(int argc, char *argv[])
        init();
 
        for (i=1; i<argc; i++) {
-               if (argv[i][0] != '-') {
+               if ((argv[i][0] != '-') || !strcmp(argv[i], "-")) {
                        break;
                }
                place_setcommandline(&cmdplace, i, 1);
index d1d1f2d..5cc7165 100644 (file)
@@ -47,7 +47,7 @@ static
 void
 output_open(void)
 {
-       if (mode.output_file == NULL) {
+       if ((mode.output_file == NULL) || !strcmp(mode.output_file, "-")) {
                outputfd = STDOUT_FILENO;
        } else {
                outputfd = open(mode.output_file, O_WRONLY|O_CREAT|O_TRUNC,