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.16 by greg, Mon Oct 20 16:01:55 2003 UTC vs.
Revision 3.21 by schorsch, Mon Mar 7 01:15:01 2016 UTC

# Line 9 | Line 9 | static const char      RCSid[] = "$Id$";
9  
10   #include <signal.h>
11   #include <string.h>
12 + #include <stdio.h>
13  
14 + #include "platform.h"
15 + #include "rterror.h"
16 + #include "resolu.h"
17   #include "rtprocess.h" /* getpid() */
18   #include "holo.h"
15 #include "platform.h"
19  
20   #ifndef BKBSIZE
21   #define BKBSIZE         256             /* beam clump size (kilobytes) */
# Line 22 | Line 25 | char   *progname;
25   char    tempfile[128];
26   int     dupchecking = 0;
27  
28 < extern long     rhinitcopy();
28 > static long rhinitcopy(int hfd[2], char *infn, char *outfn);
29 > static int nuniq(RAYVAL *rva, int n);
30 > static int bpcmp(const void *b1p, const void *b2p);
31 > static int xferclump(HOLO *hp, int *bq, int nb);
32 > static void copysect(int ifd, int ofd);
33  
34  
35 < main(argc, argv)
36 < int     argc;
37 < char    *argv[];
35 > int
36 > main(
37 >        int     argc,
38 >        char    *argv[]
39 > )
40   {
41          char    *inpname, *outname;
42          int     hdfd[2];
43 <        long    nextipos, lastopos, thisopos;
43 >        off_t   nextipos, lastopos, thisopos;
44  
45          progname = argv[0];
46          argv++; argc--;                 /* duplicate checking flag? */
# Line 63 | Line 72 | char   *argv[];
72          }
73                                          /* copy holodeck file header */
74          nextipos = rhinitcopy(hdfd, inpname, outname);
75 <        lastopos = 0L;                  /* copy sections one by one */
75 >        lastopos = 0;                   /* copy sections one by one */
76          while (nextipos != 0L) {
77                                          /* set input position; get next */
78 <                lseek(hdfd[0], (off_t)nextipos, SEEK_SET);
78 >                lseek(hdfd[0], nextipos, SEEK_SET);
79                  read(hdfd[0], (char *)&nextipos, sizeof(nextipos));
80                                          /* get output position; set last */
81                  thisopos = lseek(hdfd[1], (off_t)0, SEEK_END);
82 <                if (lastopos > 0L) {
83 <                        lseek(hdfd[1], (off_t)lastopos, SEEK_SET);
82 >                if (lastopos > 0) {
83 >                        lseek(hdfd[1], lastopos, SEEK_SET);
84                          write(hdfd[1], (char *)&thisopos, sizeof(thisopos));
85                          lseek(hdfd[1], (off_t)0, SEEK_END);
86                  }
87                  lastopos = thisopos;
88 <                thisopos = 0L;          /* write place holder */
88 >                thisopos = 0;           /* write place holder */
89                  write(hdfd[1], (char *)&thisopos, sizeof(thisopos));
90                                          /* copy holodeck section */
91                  copysect(hdfd[0], hdfd[1]);
# Line 89 | Line 98 | char   *argv[];
98                                  outname, inpname);
99                  error(SYSTEM, errmsg);
100          }
101 <        exit(0);
101 >        return 0;
102   }
103  
104  
105 < long
106 < rhinitcopy(hfd, infn, outfn)    /* open files and copy header */
107 < int     hfd[2];                 /* returned file descriptors */
108 < char    *infn, *outfn;
105 > static long
106 > rhinitcopy(     /* open files and copy header */
107 >        int     hfd[2],                 /* returned file descriptors */
108 >        char    *infn,
109 >        char    *outfn
110 > )
111   {
112          FILE    *infp, *outfp;
113          long    ifpos;
# Line 114 | Line 125 | char   *infn, *outfn;
125                  error(SYSTEM, errmsg);
126          }
127                                          /* set up signal handling */
128 + #ifdef SIGINT
129          if (signal(SIGINT, quit) == SIG_IGN) signal(SIGINT, SIG_IGN);
130 + #endif
131 + #ifdef SIGHUP
132          if (signal(SIGHUP, quit) == SIG_IGN) signal(SIGHUP, SIG_IGN);
133 + #endif
134 + #ifdef SIGTERM
135          if (signal(SIGTERM, quit) == SIG_IGN) signal(SIGTERM, SIG_IGN);
136 + #endif
137   #ifdef SIGXCPU
138          if (signal(SIGXCPU, quit) == SIG_IGN) signal(SIGXCPU, SIG_IGN);
139          if (signal(SIGXFSZ, quit) == SIG_IGN) signal(SIGXFSZ, SIG_IGN);
# Line 143 | Line 160 | char   *infn, *outfn;
160   }
161  
162  
163 < int
164 < nuniq(rva, n)                   /* sort unique rays to front of beam list */
165 < register RAYVAL *rva;
166 < int     n;
163 > static int
164 > nuniq(                  /* sort unique rays to front of beam list */
165 >        register RAYVAL *rva,
166 >        int     n
167 > )
168   {
169          register int    i, j;
170          RAYVAL  rtmp;
# Line 171 | Line 189 | int    n;
189   static BEAMI    *beamdir;
190  
191   static int
192 < bpcmp(b1p, b2p)                 /* compare beam positions on disk */
193 < int     *b1p, *b2p;
192 > bpcmp(                  /* compare beam positions on disk */
193 >        const void      *b1p,
194 >        const void      *b2p
195 > )
196   {
197 <        register off_t  pdif = beamdir[*b1p].fo - beamdir[*b2p].fo;
197 >        register off_t  pdif = beamdir[*(int*)b1p].fo - beamdir[*(int*)b2p].fo;
198  
199          if (pdif < 0L) return(-1);
200          return(pdif > 0L);
# Line 183 | Line 203 | int    *b1p, *b2p;
203   static HOLO     *hout;
204  
205   static int
206 < xferclump(hp, bq, nb)           /* transfer the given clump to hout and free */
207 < HOLO    *hp;
208 < int     *bq, nb;
206 > xferclump(              /* transfer the given clump to hout and free */
207 >        HOLO    *hp,
208 >        int     *bq,
209 >        int     nb
210 > )
211   {
212          register int    i;
213          register BEAM   *bp;
# Line 206 | Line 228 | int    *bq, nb;
228          return(0);
229   }
230  
231 < copysect(ifd, ofd)              /* copy holodeck section from ifd to ofd */
232 < int     ifd, ofd;
231 > static void
232 > copysect(               /* copy holodeck section from ifd to ofd */
233 >        int     ifd,
234 >        int     ofd
235 > )
236   {
237          HOLO    *hinp;
238                                          /* load input section directory */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines