ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/util/getinfo.c
(Generate patch)

Comparing ray/src/util/getinfo.c (file contents):
Revision 2.9 by greg, Sat Jun 9 04:24:16 2012 UTC vs.
Revision 2.14 by greg, Tue Aug 30 06:10:12 2016 UTC

# Line 20 | Line 20 | static const char      RCSid[] = "$Id$";
20   #define putchar         putchar_unlocked
21   #endif
22  
23 + #if defined(_WIN32) || defined(_WIN64)
24 + #include <process.h>
25 + #define execvp  _execvp
26 + #endif
27  
28   static gethfunc tabstr;
29 < static void getdim(register FILE *fp);
29 > static void getdim(FILE *fp);
30   static void copycat(void);
31  
32  
33   static int
34   tabstr(                         /* put out line followed by tab */
35 <        register char  *s,
35 >        char  *s,
36          void *p
37   )
38   {
# Line 55 | Line 59 | main(
59          if (argc > 1 && !strcmp(argv[1], "-d")) {
60                  argc--; argv++;
61                  dim = 1;
58                SET_DEFAULT_BINARY(); /* for output file */
62                  SET_FILE_BINARY(stdin);
63 +        } else if (argc > 2 && !strcmp(argv[1], "-c")) {
64 +                SET_FILE_BINARY(stdin);
65 +                SET_FILE_BINARY(stdout);
66 +                setvbuf(stdin, NULL, _IONBF, 2);
67 +                getheader(stdin, (gethfunc *)fputs, stdout);
68 +                printargs(argc-2, argv+2, stdout);
69 +                fputc('\n', stdout);
70 +                fflush(stdout);
71 +                execvp(argv[2], argv+2);
72 +                perror(argv[2]);
73 +                return 1;
74 +        } else if (argc > 2 && !strcmp(argv[1], "-a")) {
75 +                SET_FILE_BINARY(stdin);
76 +                SET_FILE_BINARY(stdout);
77 +                getheader(stdin, (gethfunc *)fputs, stdout);
78 +                for (i = 2; i < argc; i++) {
79 +                        int     len = strlen(argv[i]);
80 +                        if (!len) continue;
81 +                        fputs(argv[i], stdout);
82 +                        if (argv[i][len-1] != '\n')
83 +                                fputc('\n', stdout);
84 +                }
85 +                fputc('\n', stdout);
86 +                copycat();
87 +                return 0;
88          } else if (argc == 2 && !strcmp(argv[1], "-")) {
89                  SET_FILE_BINARY(stdin);
90                  SET_FILE_BINARY(stdout);
# Line 75 | Line 103 | main(
103                          } else {
104                                  tabstr(":\n", NULL);
105                                  getheader(fp, tabstr, NULL);
106 <                                putchar('\n');
106 >                                fputc('\n', stdout);
107                          }
108                          fclose(fp);
109                  }
# Line 84 | Line 112 | main(
112                  if (dim) {
113                          getdim(stdin);
114                  } else {
115 <                        getheader(stdin, (gethfunc*)fputs, stdout);
116 <                        putchar('\n');
115 >                        getheader(stdin, (gethfunc *)fputs, stdout);
116 >                        fputc('\n', stdout);
117                  }
118          }
119          return 0;
# Line 94 | Line 122 | main(
122  
123   static void
124   getdim(                         /* get dimensions from file */
125 <        register FILE  *fp
125 >        FILE  *fp
126   )
127   {
128          int  j;
129 <        register int  c;
129 >        int  c;
130  
131          getheader(fp, NULL, NULL);      /* skip header */
132  
# Line 113 | Line 141 | getdim(                                /* get dimensions from file */
141                  getc(fp);
142                  j = 0;
143                  while ((c = getc(fp)) != EOF)
144 <                        if (c == 0)
144 >                        if (c == 0) {
145                                  if (++j >= 4)
146                                          break;
147 <                                else
148 <                                        putchar(' ');
121 <                        else
147 >                                putchar(' ');
148 >                        } else {
149                                  putchar(c);
150 +                        }
151                  putchar('\n');
152                  break;
153          default:                /* ??? */
# Line 132 | Line 160 | getdim(                                /* get dimensions from file */
160   static void
161   copycat(void)                   /* copy input to output */
162   {
163 <        register int    c;
163 >        char    buf[8192];
164 >        int     n;
165  
166 <        while ((c = getchar()) != EOF)
167 <                putchar(c);
166 >        fflush(stdout);
167 >        while ((n = fread(buf, 1, sizeof(buf), stdin)) > 0)
168 >                if (write(fileno(stdout), buf, n) != n)
169 >                        break;
170   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines