| 1 |
– |
/* Copyright (c) 1998 Silicon Graphics, Inc. */ |
| 2 |
– |
|
| 1 |
|
#ifndef lint |
| 2 |
< |
static char SCCSid[] = "$SunId$ SGI"; |
| 2 |
> |
static const char RCSid[] = "$Id$"; |
| 3 |
|
#endif |
| 6 |
– |
|
| 4 |
|
/* |
| 5 |
|
* Executive program for oconv, rpict and pfilt |
| 6 |
|
*/ |
| 7 |
|
|
| 8 |
|
#include "standard.h" |
| 9 |
+ |
|
| 10 |
+ |
#include <ctype.h> |
| 11 |
+ |
|
| 12 |
+ |
#include "platform.h" |
| 13 |
|
#include "view.h" |
| 14 |
|
#include "paths.h" |
| 15 |
|
#include "vars.h" |
| 15 |
– |
#include <ctype.h> |
| 16 |
– |
#include <sys/types.h> |
| 16 |
|
|
| 17 |
|
/* variables (alphabetical by name) */ |
| 18 |
|
#define AMBFILE 0 /* ambient file name */ |
| 74 |
|
}; |
| 75 |
|
|
| 76 |
|
/* overture calculation file */ |
| 77 |
< |
#ifdef NIX |
| 78 |
< |
char overfile[] = "overture.unf"; |
| 77 |
> |
#ifdef NULL_DEVICE |
| 78 |
> |
char overfile[] = NULL_DEVICE; |
| 79 |
|
#else |
| 80 |
< |
char overfile[] = "/dev/null"; |
| 80 |
> |
char overfile[] = "overture.unf"; |
| 81 |
|
#endif |
| 82 |
|
|
| 83 |
< |
extern time_t fdate(), time(); |
| 83 |
> |
extern time_t time(); |
| 84 |
|
|
| 85 |
|
time_t scenedate; /* date of latest scene or object file */ |
| 86 |
|
time_t octreedate; /* date of octree */ |
| 106 |
|
char *progname; /* global argv[0] */ |
| 107 |
|
char *rifname; /* global rad input file name */ |
| 108 |
|
|
| 109 |
< |
char radname[MAXPATH]; /* root Radiance file name */ |
| 109 |
> |
char radname[PATH_MAX]; /* root Radiance file name */ |
| 110 |
|
|
| 111 |
|
|
| 112 |
|
main(argc, argv) |
| 210 |
|
checklast(fnames) /* check files and find most recent */ |
| 211 |
|
register char *fnames; |
| 212 |
|
{ |
| 213 |
< |
char thisfile[MAXPATH]; |
| 213 |
> |
char thisfile[PATH_MAX]; |
| 214 |
|
time_t thisdate, lastdate = 0; |
| 216 |
– |
register char *cp; |
| 215 |
|
|
| 216 |
|
if (fnames == NULL) |
| 217 |
|
return(0); |
| 218 |
< |
while (*fnames) { |
| 219 |
< |
while (isspace(*fnames)) fnames++; |
| 220 |
< |
cp = thisfile; |
| 221 |
< |
while (*fnames && !isspace(*fnames)) |
| 224 |
< |
*cp++ = *fnames++; |
| 225 |
< |
*cp = '\0'; |
| 218 |
> |
while ((fnames = nextword(thisfile, PATH_MAX, fnames)) != NULL) { |
| 219 |
> |
if (thisfile[0] == '!' || |
| 220 |
> |
(thisfile[0] == '\\' && thisfile[1] == '!')) |
| 221 |
> |
continue; |
| 222 |
|
if (!(thisdate = fdate(thisfile))) |
| 223 |
|
syserr(thisfile); |
| 224 |
|
if (thisdate > lastdate) |
| 233 |
|
char *orig; |
| 234 |
|
int pred; |
| 235 |
|
{ |
| 240 |
– |
extern char *rindex(); |
| 236 |
|
register char *cp; |
| 237 |
|
register int n; |
| 238 |
|
int suffix; |
| 262 |
|
syserr(progname); |
| 263 |
|
sprintf(vval(OCTREE), "%s.oct", radname); |
| 264 |
|
vdef(OCTREE)++; |
| 265 |
+ |
} else if (vval(OCTREE)[0] == '!') { |
| 266 |
+ |
fprintf(stderr, "%s: illegal '%s' specification\n", |
| 267 |
+ |
progname, vnam(OCTREE)); |
| 268 |
+ |
quit(1); |
| 269 |
|
} |
| 270 |
|
octreedate = fdate(vval(OCTREE)); |
| 271 |
|
if (vdef(ILLUM)) { /* illum requires secondary octrees */ |
| 398 |
|
oconv() /* run oconv and mkillum if necessary */ |
| 399 |
|
{ |
| 400 |
|
static char illumtmp[] = "ilXXXXXX"; |
| 401 |
< |
char combuf[1024], ocopts[64], mkopts[64]; |
| 401 |
> |
char combuf[PATH_MAX], ocopts[64], mkopts[64]; |
| 402 |
|
|
| 403 |
|
oconvopts(ocopts); /* get options */ |
| 404 |
|
if (octreedate < scenedate) { /* check date on original octree */ |
| 823 |
|
syserr(vval(OPTFILE)); |
| 824 |
|
sprintf(ro, " @%s", vval(OPTFILE)); |
| 825 |
|
} |
| 826 |
< |
#ifdef MSDOS |
| 826 |
> |
#ifdef _WIN32 |
| 827 |
|
else if (n > 50) { |
| 828 |
|
setenv("ROPT", ro+1); |
| 829 |
|
strcpy(ro, " $ROPT"); |
| 842 |
|
} |
| 843 |
|
switch (vscale(QUALITY)) { |
| 844 |
|
case MEDIUM: |
| 845 |
< |
po = addarg(po, "-r 1"); |
| 845 |
> |
po = addarg(po, "-r .6"); |
| 846 |
|
break; |
| 847 |
|
case HIGH: |
| 848 |
|
po = addarg(po, "-m .25"); |
| 979 |
|
if (cp == viewopts) /* append any additional options */ |
| 980 |
|
vs++; /* skip prefixed space if unneeded */ |
| 981 |
|
strcpy(cp, vs); |
| 982 |
< |
#ifdef MSDOS |
| 982 |
> |
#ifdef _WIN32 |
| 983 |
|
if (strlen(viewopts) > 40) { |
| 984 |
|
setenv("VIEW", viewopts); |
| 985 |
|
return("$VIEW"); |
| 1033 |
|
printview(vopts) /* print out selected view */ |
| 1034 |
|
register char *vopts; |
| 1035 |
|
{ |
| 1037 |
– |
extern char *strstr(), *atos(), *getenv(); |
| 1036 |
|
VIEW vwr; |
| 1037 |
|
char buf[128]; |
| 1038 |
|
register char *cp; |
| 1039 |
|
again: |
| 1040 |
|
if (vopts == NULL) |
| 1041 |
|
return(-1); |
| 1042 |
< |
#ifdef MSDOS |
| 1042 |
> |
#ifdef _WIN32 |
| 1043 |
|
if (vopts[0] == '$') { |
| 1044 |
|
vopts = getenv(vopts+1); |
| 1045 |
|
goto again; |
| 1046 |
|
} |
| 1047 |
|
#endif |
| 1048 |
|
copystruct(&vwr, &stdview); |
| 1049 |
< |
cp = vopts; /* get -vf files first */ |
| 1049 |
> |
sscanview(&vwr, cp=vopts); /* set initial options */ |
| 1050 |
|
while ((cp = strstr(cp, "-vf ")) != NULL && |
| 1051 |
< |
*atos(buf, sizeof(buf), cp += 4)) |
| 1052 |
< |
viewfile(buf, &vwr, NULL); |
| 1053 |
< |
sscanview(&vwr, vopts); /* get the rest */ |
| 1051 |
> |
*atos(buf, sizeof(buf), cp += 4)) { |
| 1052 |
> |
viewfile(buf, &vwr, NULL); /* load -vf file */ |
| 1053 |
> |
sscanview(&vwr, cp); /* reset tail */ |
| 1054 |
> |
} |
| 1055 |
|
fputs(VIEWSTR, stdout); |
| 1056 |
|
fprintview(&vwr, stdout); /* print full spec. */ |
| 1057 |
|
fputc('\n', stdout); |
| 1063 |
|
char *opts, *po; |
| 1064 |
|
{ |
| 1065 |
|
char *vw; |
| 1066 |
< |
char combuf[512]; |
| 1066 |
> |
char combuf[PATH_MAX]; |
| 1067 |
|
/* build command */ |
| 1068 |
|
if (touchonly || (vw = getview(0, NULL)) == NULL) |
| 1069 |
|
return; |
| 1085 |
|
rpict(opts, po) /* run rpict and pfilt for each view */ |
| 1086 |
|
char *opts, *po; |
| 1087 |
|
{ |
| 1088 |
< |
char combuf[1024]; |
| 1089 |
< |
char rawfile[MAXPATH], picfile[MAXPATH]; |
| 1090 |
< |
char zopt[MAXPATH+4], rep[MAXPATH+16], res[32]; |
| 1088 |
> |
char combuf[PATH_MAX]; |
| 1089 |
> |
char rawfile[PATH_MAX], picfile[PATH_MAX]; |
| 1090 |
> |
char zopt[PATH_MAX+4], rep[PATH_MAX+16], res[32]; |
| 1091 |
|
char pfopts[128]; |
| 1092 |
|
char vs[32], *vw; |
| 1093 |
|
int vn, mult; |
| 1176 |
|
progname, vs); |
| 1177 |
|
quit(1); |
| 1178 |
|
} |
| 1179 |
< |
#ifdef NIX |
| 1179 |
> |
#ifndef NULL_DEVICE |
| 1180 |
|
rmfile(overfile); |
| 1181 |
|
#endif |
| 1182 |
|
} |
| 1247 |
|
char *fn; |
| 1248 |
|
{ |
| 1249 |
|
if (!silent) |
| 1250 |
< |
#ifdef MSDOS |
| 1250 |
> |
#ifdef _WIN32 |
| 1251 |
|
printf("\tdel %s\n", fn); |
| 1252 |
|
#else |
| 1253 |
|
printf("\trm -f %s\n", fn); |
| 1262 |
|
char *fold, *fnew; |
| 1263 |
|
{ |
| 1264 |
|
if (!silent) |
| 1265 |
< |
#ifdef MSDOS |
| 1265 |
> |
#ifdef _WIN32 |
| 1266 |
|
printf("\trename %s %s\n", fold, fnew); |
| 1267 |
|
#else |
| 1268 |
|
printf("\tmv %s %s\n", fold, fnew); |
| 1273 |
|
} |
| 1274 |
|
|
| 1275 |
|
|
| 1276 |
< |
#ifdef MSDOS |
| 1276 |
> |
#ifdef _WIN32 |
| 1277 |
|
setenv(vname, value) /* set an environment variable */ |
| 1278 |
|
char *vname, *value; |
| 1279 |
|
{ |
| 1310 |
|
} |
| 1311 |
|
|
| 1312 |
|
|
| 1313 |
+ |
void |
| 1314 |
|
quit(ec) /* exit program */ |
| 1315 |
|
int ec; |
| 1316 |
|
{ |