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

Comparing ray/src/hd/rhcopy.c (file contents):
Revision 3.30 by greg, Thu Aug 2 18:33:42 2018 UTC vs.
Revision 3.33 by greg, Thu Nov 7 23:17:58 2019 UTC

# Line 94 | Line 94 | userr:
94   #define H_BADF  01
95   #define H_OBST  02
96   #define H_OBSF  04
97 + #define H_SWAP  010
98  
99   static int
100   holheadline(            /* check holodeck header line */
101 <        register char   *s,
101 >        char    *s,
102          void    *vhf
103   )
104   {
105 +        int     be;
106          char    fmt[MAXFMTLEN];
107          int     *hf = vhf;
108  
# Line 122 | Line 124 | holheadline(           /* check holodeck header line */
124                          error(WARNING, "bad OBSTRUCTIONS value in holodeck");
125                  return(0);
126          }
127 +        if ((be = isbigendian(s)) >= 0) {
128 +                if (be != nativebigendian())
129 +                        *hf |= H_SWAP;
130 +        }
131          return(0);
132   }
133  
# Line 137 | Line 143 | openholo(              /* open existing holodeck file for i/o */
143          off_t   nextloc;
144          int     n;
145                                          /* open holodeck file */
146 <        if ((fp = fopen(fname, append ? "r+" : "r")) == NULL) {
146 >        if ((fp = fopen(fname, append ? "rb+" : "rb")) == NULL) {
147                  sprintf(errmsg, "cannot open \"%s\" for %s", fname,
148                                  append ? "appending" : "reading");
149                  error(SYSTEM, errmsg);
150          }
151                                          /* check header and magic number */
152          if (getheader(fp, holheadline, &hflags) < 0 ||
153 <                        hflags&H_BADF || getw(fp) != HOLOMAGIC) {
154 <                sprintf(errmsg, "file \"%s\" not in holodeck format", fname);
153 >                        hflags&(H_BADF|H_SWAP) || getw(fp) != HOLOMAGIC) {
154 >                sprintf(errmsg, "holodeck \"%s\" not in expected format", fname);
155                  error(USER, errmsg);
156          }
157          fd = dup(fileno(fp));                   /* dup file handle */
# Line 174 | Line 180 | addray(                /* add a ray to our output holodeck */
180   )
181   {
182          int     sn, bi, n;
183 <        register HOLO   *hp;
183 >        HOLO    *hp;
184          GCOORD  gc[2];
185          uby8    rr[2][2];
186          BEAM    *bp;
187          double  d0, d1;
188          unsigned        dc;
189 <        register RAYVAL *rv;
189 >        RAYVAL  *rv;
190                                  /* check each output section */
191          for (sn = noutsects; sn--; ) {
192                  hp = hdlist[sn];
# Line 223 | Line 229 | bpcmp(                 /* compare beam positions on disk */
229          const void      *b2p
230   )
231   {
232 <        register off_t  pdif = beamdir[*(int*)b1p].fo - beamdir[*(int*)b2p].fo;
232 >        off_t   pdif = beamdir[*(int*)b1p].fo - beamdir[*(int*)b2p].fo;
233  
234          if (pdif > 0L) return(1);
235          if (pdif < 0L) return(-1);
# Line 241 | Line 247 | addclump(              /* transfer the given clump and free */
247          FVECT   ro, rd;
248          double  d;
249          int     i;
250 <        register int    k;
251 <        register BEAM   *bp;
250 >        int     k;
251 >        BEAM    *bp;
252                                          /* sort based on file position */
253          beamdir = hp->bi;
254          qsort((char *)bq, nb, sizeof(*bq), bpcmp);
# Line 334 | Line 340 | addpicz(               /* add a picture + depth-buffer */
340          double  aftd;
341          COLOR   ctmp;
342          int     j;
343 <        register int    i;
343 >        int     i;
344                                  /* open files */
345 <        if ((pfp = fopen(pcf, "r")) == NULL) {
345 >        if ((pfp = fopen(pcf, "rb")) == NULL) {
346                  sprintf(errmsg, "cannot open picture file \"%s\"", pcf);
347                  error(SYSTEM, pcf);
348          }
# Line 344 | Line 350 | addpicz(               /* add a picture + depth-buffer */
350                  sprintf(errmsg, "cannot open depth file \"%s\"", zbf);
351                  error(SYSTEM, pcf);
352          }
353 +        SET_FD_BINARY(zfd);
354                                  /* load picture header */
355          phd.vw = stdview;
356          phd.expos = 1.0;
# Line 392 | Line 399 | addpicz(               /* add a picture + depth-buffer */
399                  }
400                  if (eshft)                              /* shift exposure */
401                          shiftcolrs(cscn, i, eshft);
402 <                i *= sizeof(float);                     /* read depth */
403 <                if (read(zfd, (char *)zscn, i) != i) {
402 >                                                        /* read depth */
403 >                if (read(zfd, zscn, i*sizeof(float)) != i*sizeof(float)) {
404                          sprintf(errmsg, "error reading depth file \"%s\"", zbf);
405                          error(USER, errmsg);
406                  }
407 <                for (i = scanlen(&prs); i--; ) {        /* do each pixel */
407 >                while (i--) {                           /* process each pixel */
408                          if (zscn[i] <= 0.0)
409                                  continue;               /* illegal depth */
410                          pix2loc(vl, &prs, i, j);
# Line 427 | Line 434 | addpicz(               /* add a picture + depth-buffer */
434  
435   void
436   eputs(                  /* put error message to stderr */
437 <        register char  *s
437 >        char  *s
438   )
439   {
440          static int  midline = 0;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines