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

Comparing ray/src/hd/rhoptimize.c (file contents):
Revision 3.6 by gwlarson, Sat Jan 9 09:23:49 1999 UTC vs.
Revision 3.11 by greg, Fri Jun 13 15:27:04 2003 UTC

# Line 1 | Line 1
1 /* Copyright (c) 1999 Silicon Graphics, Inc. */
2
1   #ifndef lint
2 < static char SCCSid[] = "$SunId$ SGI";
2 > static const char       RCSid[] = "$Id$";
3   #endif
6
4   /*
5   * Optimize holodeck for quick access.
6   *
# Line 23 | Line 20 | char   tempfile[128];
20   int     dupchecking = 0;
21  
22   extern char     *rindex();
26 extern int      quit();
23   extern long     rhinitcopy();
24  
25  
# Line 68 | Line 64 | char   *argv[];
64          lastopos = 0L;                  /* copy sections one by one */
65          while (nextipos != 0L) {
66                                          /* set input position; get next */
67 <                lseek(hdfd[0], nextipos, 0);
67 >                lseek(hdfd[0], (off_t)nextipos, 0);
68                  read(hdfd[0], (char *)&nextipos, sizeof(nextipos));
69                                          /* get output position; set last */
70 <                thisopos = lseek(hdfd[1], 0L, 2);
70 >                thisopos = lseek(hdfd[1], (off_t)0, 2);
71                  if (lastopos > 0L) {
72 <                        lseek(hdfd[1], lastopos, 0);
72 >                        lseek(hdfd[1], (off_t)lastopos, 0);
73                          write(hdfd[1], (char *)&thisopos, sizeof(thisopos));
74 <                        lseek(hdfd[1], 0L, 2);
74 >                        lseek(hdfd[1], (off_t)0, 2);
75                  }
76                  lastopos = thisopos;
77                  thisopos = 0L;          /* write place holder */
# Line 107 | Line 103 | char   *infn, *outfn;
103                  sprintf(errmsg, "cannot open \"%s\" for reading", infn);
104                  error(SYSTEM, errmsg);
105          }
106 +        if (access(outfn, F_OK) == 0) {
107 +                sprintf(errmsg, "output file \"%s\" already exists!", outfn);
108 +                error(USER, errmsg);
109 +        }
110          if ((outfp = fopen(outfn, "w+")) == NULL) {
111                  sprintf(errmsg, "cannot open \"%s\" for writing", outfn);
112                  error(SYSTEM, errmsg);
# Line 172 | Line 172 | static int
172   bpcmp(b1p, b2p)                 /* compare beam positions on disk */
173   int     *b1p, *b2p;
174   {
175 <        register long   pdif = beamdir[*b1p].fo - beamdir[*b2p].fo;
175 >        register off_t  pdif = beamdir[*b1p].fo - beamdir[*b2p].fo;
176  
177          if (pdif < 0L) return(-1);
178          return(pdif > 0L);
# Line 190 | Line 190 | int    *bq, nb;
190          int     n;
191  
192          beamdir = hp->bi;               /* sort based on file position */
193 <        qsort((char *)bq, nb, sizeof(*bq), bpcmp);
193 >        qsort((void *)bq, nb, sizeof(*bq), bpcmp);
194                                          /* transfer and free each beam */
195          for (i = 0; i < nb; i++) {
196                  bp = hdgetbeam(hp, bq[i]);
197                  DCHECK(bp==NULL, CONSISTENCY, "empty beam in xferclump");
198                  n = dupchecking ? nuniq(hdbray(bp),bp->nrm) : bp->nrm;
199 <                bcopy((char *)hdbray(bp), (char *)hdnewrays(hout,bq[i],n),
199 >                bcopy((void *)hdbray(bp), (void *)hdnewrays(hout,bq[i],n),
200                                  n*sizeof(RAYVAL));
201                  hdfreebeam(hp, bq[i]);
202          }
203 <        hdflush(hout);                  /* write & free clump */
203 >        hdfreebeam(hout, 0);            /* write & free clump */
204          return(0);
205   }
206  
# Line 220 | Line 220 | int    ifd, ofd;
220   }
221  
222  
223 + void
224   eputs(s)                        /* put error message to stderr */
225   register char  *s;
226   {
# Line 239 | Line 240 | register char  *s;
240   }
241  
242  
243 + void
244   quit(code)                      /* exit the program gracefully */
245   int     code;
246   {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines