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

Comparing ray/src/px/pflip.c (file contents):
Revision 2.1 by greg, Tue Nov 12 16:04:49 1991 UTC vs.
Revision 2.14 by greg, Sat Jun 7 05:09:46 2025 UTC

# Line 1 | Line 1
1 /* Copyright (c) 1991 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   * flip picture file horizontally and/or vertically
6   */
7  
8 < #include <stdio.h>
9 <
8 > #include "rtio.h"
9 > #include "platform.h"
10   #include "color.h"
14
11   #include "resolu.h"
12  
13   int     order;                          /* input orientation */
# Line 25 | Line 21 | int    correctorder = 0;               /* correcting orientation? */
21  
22   FILE    *fin;                           /* input file */
23  
28 char    *progname;
24  
25 + static void memerr(void);
26 + static void scanfile(void);
27 + static void flip(void);
28  
29 < int
30 < neworder()                      /* figure out new order from old */
29 >
30 > static int
31 > neworder(void)                  /* figure out new order from old */
32   {
33          register int  no;
34  
# Line 45 | Line 44 | neworder()                     /* figure out new order from old */
44          return(no);
45   }
46  
47 <
48 < main(argc, argv)
49 < int     argc;
50 < char    *argv[];
47 > int
48 > main(
49 >        int     argc,
50 >        char    *argv[]
51 > )
52   {
53 <        int     i;
53 >        static char     picfmt[MAXFMTLEN] = PICFMT;
54 >        int     i, rval;
55 >        
56 >        SET_DEFAULT_BINARY();
57 >        SET_FILE_BINARY(stdout);
58 >        fixargv0(argv[0]);
59  
55        progname = argv[0];
56
60          for (i = 1; i < argc; i++)
61                  if (!strcmp(argv[i], "-h"))
62                          fhoriz++;
# Line 63 | Line 66 | char   *argv[];
66                          correctorder++;
67                  else
68                          break;
69 +        if (i < argc-2)
70 +                goto userr;
71 +        if (!fhoriz && !fvert)
72 +                fprintf(stderr, "%s: warning - no operation\n", argv[0]);
73          if (i >= argc || argv[i][0] == '-') {
74 <                fprintf(stderr, "Usage: %s [-h][-v][-c] infile [outfile]\n",
75 <                                progname);
74 >                if (fvert)
75 >                        goto userr;
76 >                SET_FILE_BINARY(stdin);
77 >                fin = stdin;
78 >        } else if ((fin = fopen(argv[i], "r")) == NULL) {
79 >                fprintf(stderr, "%s: cannot open\n", argv[i]);
80                  exit(1);
81          }
71        if ((fin = fopen(argv[i], "r")) == NULL) {
72                fprintf(stderr, "%s: cannot open\n", argv[1]);
73                exit(1);
74        }
82          if (i < argc-1 && freopen(argv[i+1], "w", stdout) == NULL) {
83                  fprintf(stderr, "%s: cannot open\n", argv[i+1]);
84                  exit(1);
85          }
86                                          /* transfer header */
87 <        if (checkheader(fin, COLRFMT, stdout) < 0) {
87 >        if ((rval = checkheader(fin, picfmt, stdout)) < 0) {
88                  fprintf(stderr, "%s: input not a Radiance picture\n",
89                                  progname);
90                  exit(1);
91          }
92 +        if (rval)
93 +                fputformat(picfmt, stdout);
94                                          /* add new header info. */
95          printargs(i, argv, stdout);
87        fputformat(COLRFMT, stdout);
96          putchar('\n');
97                                          /* get picture size */
98          if ((order = fgetresolu(&xres, &yres, fin)) < 0) {
# Line 98 | Line 106 | char   *argv[];
106                  scanfile();
107          flip();                         /* flip the image */
108          exit(0);
109 + userr:
110 +        fprintf(stderr, "Usage: %s [-h][-v][-c] infile [outfile]\n",
111 +                        progname);
112 +        exit(1);
113   }
114  
115  
116 < memerr()
116 > static void
117 > memerr(void)
118   {
119          fprintf(stderr, "%s: out of memory\n", progname);
120          exit(1);
121   }
122  
123  
124 < scanfile()                              /* scan to the end of file */
124 > static void
125 > scanfile(void)                          /* scan to the end of file */
126   {
127          extern long     ftell();
128          COLR    *scanin;
# Line 118 | Line 132 | scanfile()                             /* scan to the end of file */
132                  memerr();
133          if ((scanin = (COLR *)malloc(xres*sizeof(COLR))) == NULL)
134                  memerr();
135 <        for (y = yres-1; y >= 0; y--) {
135 >        for (y = yres-1; y > 0; y--) {
136                  scanpos[y] = ftell(fin);
137                  if (freadcolrs(scanin, xres, fin) < 0) {
138                          fprintf(stderr, "%s: read error\n", progname);
139                          exit(1);
140                  }
141          }
142 <        free((char *)scanin);
142 >        scanpos[0] = ftell(fin);
143 >        free((void *)scanin);
144   }
145  
146  
147 < flip()                                  /* flip the picture */
147 > static void
148 > flip(void)                                      /* flip the picture */
149   {
150          COLR    *scanin, *scanout;
151          int     y;
# Line 159 | Line 175 | flip()                                 /* flip the picture */
175                          exit(1);
176                  }
177          }
178 <        free((char *)scanin);
179 <        free((char *)scanout);
178 >        free((void *)scanin);
179 >        if (fhoriz)
180 >                free((void *)scanout);
181   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines