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 1.1 by greg, Thu Feb 2 10:49:19 1989 UTC vs.
Revision 2.9 by greg, Sat Jun 9 04:24:16 2012 UTC

# Line 1 | Line 1
1 /* Copyright (c) 1986 Regents of the University of California */
2
1   #ifndef lint
2 < static char SCCSid[] = "$SunId$ LBL";
2 > static const char       RCSid[] = "$Id$";
3   #endif
6
4   /*
5   *  getinfo.c - program to read info. header from file.
6   *
# Line 11 | Line 8 | static char SCCSid[] = "$SunId$ LBL";
8   */
9  
10   #include  <stdio.h>
11 + #include  <string.h>
12  
13 + #include  "platform.h"
14 + #include  "resolu.h"
15  
16 < tabstr(s)                               /* put out line followed by tab */
17 < register char  *s;
16 > #ifdef getc_unlocked            /* avoid nasty file-locking overhead */
17 > #undef getchar
18 > #undef putchar
19 > #define getchar         getchar_unlocked
20 > #define putchar         putchar_unlocked
21 > #endif
22 >
23 >
24 > static gethfunc tabstr;
25 > static void getdim(register FILE *fp);
26 > static void copycat(void);
27 >
28 >
29 > static int
30 > tabstr(                         /* put out line followed by tab */
31 >        register char  *s,
32 >        void *p
33 > )
34   {
35          while (*s) {
36                  putchar(*s);
# Line 22 | Line 38 | register char  *s;
38          }
39          if (*--s == '\n')
40                  putchar('\t');
41 +        return(0);
42   }
43  
44  
45 < main(argc, argv)
46 < int  argc;
47 < char  *argv[];
45 > int
46 > main(
47 >        int  argc,
48 >        char  **argv
49 > )
50   {
51          int  dim = 0;
52          FILE  *fp;
# Line 36 | Line 55 | char  *argv[];
55          if (argc > 1 && !strcmp(argv[1], "-d")) {
56                  argc--; argv++;
57                  dim = 1;
58 +                SET_DEFAULT_BINARY(); /* for output file */
59 +                SET_FILE_BINARY(stdin);
60 +        } else if (argc == 2 && !strcmp(argv[1], "-")) {
61 +                SET_FILE_BINARY(stdin);
62 +                SET_FILE_BINARY(stdout);
63 +                getheader(stdin, NULL, NULL);
64 +                copycat();
65 +                return 0;
66          }
67          for (i = 1; i < argc; i++) {
68                  fputs(argv[i], stdout);
# Line 46 | Line 73 | char  *argv[];
73                                  fputs(": ", stdout);
74                                  getdim(fp);
75                          } else {
76 <                                tabstr(":\n");
77 <                                getheader(fp, tabstr);
76 >                                tabstr(":\n", NULL);
77 >                                getheader(fp, tabstr, NULL);
78                                  putchar('\n');
79                          }
80                          fclose(fp);
81                  }
82          }
83 <        if (argc == 1)
83 >        if (argc == 1) {
84                  if (dim) {
85                          getdim(stdin);
86                  } else {
87 <                        copyheader(stdin, stdout);
87 >                        getheader(stdin, (gethfunc*)fputs, stdout);
88                          putchar('\n');
89                  }
90 <        exit(0);
90 >        }
91 >        return 0;
92   }
93  
94  
95 < getdim(fp)                              /* get dimensions from file */
96 < register FILE  *fp;
95 > static void
96 > getdim(                         /* get dimensions from file */
97 >        register FILE  *fp
98 > )
99   {
100          int  j;
101          register int  c;
102  
103 <        getheader(fp, NULL);    /* skip header */
103 >        getheader(fp, NULL, NULL);      /* skip header */
104  
105          switch (c = getc(fp)) {
106          case '+':               /* picture */
# Line 96 | Line 126 | register FILE  *fp;
126                  fputs("unknown file type\n", stdout);
127                  break;
128          }
129 + }
130 +
131 +
132 + static void
133 + copycat(void)                   /* copy input to output */
134 + {
135 +        register int    c;
136 +
137 +        while ((c = getchar()) != EOF)
138 +                putchar(c);
139   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines