| 11 |
|
#include <time.h> |
| 12 |
|
|
| 13 |
|
#include "platform.h" |
| 14 |
< |
#include "rtprocess.h" |
| 14 |
> |
#include "paths.h" |
| 15 |
|
#include "standard.h" |
| 16 |
|
#include "octree.h" |
| 17 |
|
#include "object.h" |
| 18 |
|
#include "otypes.h" |
| 19 |
|
#include "resolu.h" |
| 20 |
|
|
| 21 |
– |
#ifdef getc_unlocked /* avoid horrendous overhead of flockfile */ |
| 22 |
– |
#undef getc |
| 23 |
– |
#define getc getc_unlocked |
| 24 |
– |
#endif |
| 25 |
– |
|
| 21 |
|
static double ogetflt(void); |
| 22 |
|
static long ogetint(int); |
| 23 |
|
static char *ogetstr(char *); |
| 41 |
|
char *ofn[] |
| 42 |
|
) |
| 43 |
|
{ |
| 44 |
+ |
time_t oct_t = 0; |
| 45 |
+ |
time_t last_it = 0; |
| 46 |
|
char sbuf[512]; |
| 47 |
|
int nf; |
| 48 |
|
int i; |
| 64 |
|
inpspec); |
| 65 |
|
error(SYSTEM, errmsg); |
| 66 |
|
} |
| 67 |
+ |
oct_t = fddate(fileno(infp)); |
| 68 |
|
} |
| 69 |
+ |
#ifdef getc_unlocked /* avoid stupid semaphores */ |
| 70 |
+ |
flockfile(infp); |
| 71 |
+ |
#endif |
| 72 |
|
SET_FILE_BINARY(infp); |
| 73 |
|
/* get header */ |
| 74 |
|
if (checkheader(infp, OCTFMT, load&IO_INFO ? stdout : (FILE *)NULL) < 0) |
| 93 |
|
readobj(sbuf); |
| 94 |
|
if (load & IO_FILES) |
| 95 |
|
ofn[nf] = savqstr(sbuf); |
| 96 |
+ |
if (oct_t > last_it) { |
| 97 |
+ |
time_t t = fdate(sbuf); |
| 98 |
+ |
if (t > last_it) |
| 99 |
+ |
last_it = t; |
| 100 |
+ |
} |
| 101 |
|
nf++; |
| 102 |
|
} |
| 103 |
|
if (load & IO_FILES) |
| 122 |
|
if (nobjects != objorig+fnobjects) |
| 123 |
|
octerror(USER, "bad object count; octree stale?"); |
| 124 |
|
/* check for non-surfaces */ |
| 125 |
< |
if (nonsurfintree(scene->cutree)) |
| 125 |
> |
if (oct_t <= last_it && nonsurfintree(scene->cutree)) |
| 126 |
|
octerror(USER, "modifier in tree; octree stale?"); |
| 127 |
|
} |
| 128 |
|
} |
| 129 |
|
/* close the input */ |
| 130 |
|
if (infn[0] == '!') |
| 131 |
|
pclose(infp); |
| 132 |
< |
else |
| 132 |
> |
else if (infp != stdin) |
| 133 |
|
fclose(infp); |
| 134 |
+ |
#ifdef getc_unlocked |
| 135 |
+ |
else |
| 136 |
+ |
funlockfile(infp); |
| 137 |
+ |
#endif |
| 138 |
|
return(nf); |
| 139 |
|
} |
| 140 |
|
|
| 235 |
|
return(0); |
| 236 |
|
} |
| 237 |
|
objset(set, ot); |
| 238 |
< |
for (i = set[0]; i-- > 0; ) |
| 238 |
> |
for (i = set[0]; i > 0; i-- ) |
| 239 |
|
if (ismodifier(objptr(set[i])->otype)) |
| 240 |
|
return(1); |
| 241 |
|
return(0); |