9 |
|
|
10 |
|
#include "copyright.h" |
11 |
|
|
12 |
< |
#include "ray.h" |
12 |
> |
#include <string.h> |
13 |
|
|
14 |
+ |
#include "platform.h" |
15 |
+ |
#include "ray.h" |
16 |
|
#include "otypes.h" |
15 |
– |
|
17 |
|
#include "ambient.h" |
17 |
– |
|
18 |
|
#include "random.h" |
19 |
|
|
20 |
|
#ifndef OCTSCALE |
35 |
|
static int nunflshed = 0; /* number of unflushed ambient values */ |
36 |
|
|
37 |
|
#ifndef SORT_THRESH |
38 |
< |
#ifdef BIGMEM |
39 |
< |
#define SORT_THRESH ((9L<<20)/sizeof(AMBVAL)) |
40 |
< |
#else |
38 |
> |
#ifdef SMLMEM |
39 |
|
#define SORT_THRESH ((3L<<20)/sizeof(AMBVAL)) |
40 |
+ |
#else |
41 |
+ |
#define SORT_THRESH ((9L<<20)/sizeof(AMBVAL)) |
42 |
|
#endif |
43 |
|
#endif |
44 |
|
#ifndef SORT_INTVL |
165 |
|
(flen - pos)/AMBVALSIZ); |
166 |
|
error(WARNING, errmsg); |
167 |
|
fseek(ambfp, pos, 0); |
168 |
+ |
#ifndef _WIN32 /* XXX we need a replacement for that one */ |
169 |
|
ftruncate(fileno(ambfp), (off_t)pos); |
170 |
+ |
#endif |
171 |
|
} |
172 |
|
} else if ((ambfp = fopen(ambfile, "w+")) != NULL) { |
173 |
|
initambfile(1); /* else create new file */ |
476 |
|
#ifdef F_SETLKW |
477 |
|
aflock(creat ? F_WRLCK : F_RDLCK); |
478 |
|
#endif |
479 |
< |
#ifdef MSDOS |
478 |
< |
setmode(fileno(ambfp), O_BINARY); |
479 |
< |
#endif |
479 |
> |
SET_FILE_BINARY(ambfp); |
480 |
|
if (mybuf == NULL) |
481 |
|
mybuf = (char *)bmalloc(BUFSIZ+8); |
482 |
|
setbuf(ambfp, mybuf); |
529 |
|
|
530 |
|
if ((av = newambval()) == NULL) |
531 |
|
error(SYSTEM, "out of memory in avstore"); |
532 |
< |
copystruct(av, aval); |
532 |
> |
*av = *aval; |
533 |
|
av->latick = ambclock; |
534 |
|
av->next = NULL; |
535 |
|
nambvals++; |
564 |
|
} |
565 |
|
atp = atfreelist; |
566 |
|
atfreelist = atp->kid; |
567 |
< |
bzero((char *)atp, 8*sizeof(AMBTREE)); |
567 |
> |
memset((char *)atp, '\0', 8*sizeof(AMBTREE)); |
568 |
|
return(atp); |
569 |
|
} |
570 |
|
|
741 |
|
if (avlist2 != NULL) |
742 |
|
free((void *)avlist2); |
743 |
|
if (always) { /* rebuild without sorting */ |
744 |
< |
copystruct(&oldatrunk, &atrunk); |
744 |
> |
oldatrunk = atrunk; |
745 |
|
atrunk.alist = NULL; |
746 |
|
atrunk.kid = NULL; |
747 |
|
unloadatree(&oldatrunk, avinsert); |
772 |
|
if (avlist1[i].p == NULL) |
773 |
|
continue; |
774 |
|
tap = avlist2[i]; |
775 |
< |
copystruct(&tav, tap); |
775 |
> |
tav = *tap; |
776 |
|
for (j = i; (pnext = avlist1[j].p) != tap; |
777 |
|
j = avlmemi(pnext)) { |
778 |
< |
copystruct(avlist2[j], pnext); |
778 |
> |
*(avlist2[j]) = *pnext; |
779 |
|
avinsert(avlist2[j]); |
780 |
|
avlist1[j].p = NULL; |
781 |
|
} |
782 |
< |
copystruct(avlist2[j], &tav); |
782 |
> |
*(avlist2[j]) = tav; |
783 |
|
avinsert(avlist2[j]); |
784 |
|
avlist1[j].p = NULL; |
785 |
|
} |