tcc version 0.9.28rc 2023-11-27 mob@0655fd9 (x86_64 Linux)

Given this straightforward file named foo.c:

#include <stdio.h>#include <string.h>int main(int argc, char *argv[]){
   for (int i = 0; i < argc; ++i) printf("argv[%d]=%s", i, argv[i]);
 printf("\n");    if (argc == 2 && !strcmp(argv[1], "-")) {
char buf[1024] = {};        printf("enter a line: ");        if
(fgets(buf, sizeof buf, stdin))            printf("[%s]\n", buf);
  else            printf("fgets failed");    }    return 0;}

The following command does what I would expect (it allows me to type
in a line of input):

$ tcc -run foo.c -

But if I try to read foo.c from stdin then foo.c itself is unable to
read, b.c. stdin is already closed:

$ cat foo.c | tcc -run - -

I tried duplicating fd 0 in _tcc_open() but that didn't work.
Suggestions welcome.

if (strcmp(filename, "-") == 0) {        fd = dup(0), filename =
"<stdin>";        ...

Thanks - Eric
_______________________________________________
Tinycc-devel mailing list
Tinycc-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/tinycc-devel

Reply via email to