| 1012 |
|
} else if (*vs == 'z') { |
| 1013 |
|
zpos = -1; vs++; |
| 1014 |
|
} |
| 1015 |
< |
viewtype = 'v'; |
| 1016 |
< |
if((*vs == 'v') | (*vs == 'l') | (*vs == 'a') | (*vs == 'h') | (*vs == 'c')) |
| 1015 |
> |
switch (*vs) { |
| 1016 |
> |
case VT_PER: |
| 1017 |
> |
case VT_PAR: |
| 1018 |
> |
case VT_ANG: |
| 1019 |
> |
case VT_HEM: |
| 1020 |
> |
case VT_PLS: |
| 1021 |
> |
case VT_CYL: |
| 1022 |
|
viewtype = *vs++; |
| 1023 |
+ |
break; |
| 1024 |
+ |
default: |
| 1025 |
+ |
viewtype = VT_PER; |
| 1026 |
+ |
break; |
| 1027 |
+ |
} |
| 1028 |
|
cp = viewopts; |
| 1029 |
|
if ((!*vs || isspace(*vs)) && (xpos|ypos|zpos)) { /* got one! */ |
| 1030 |
|
*cp++ = '-'; *cp++ = 'v'; *cp++ = 't'; *cp++ = viewtype; |
| 1066 |
|
} |
| 1067 |
|
cp = addarg(cp, vup[upax+3]); |
| 1068 |
|
switch (viewtype) { |
| 1069 |
< |
case 'v': |
| 1069 |
> |
case VT_PER: |
| 1070 |
|
cp = addarg(cp, "-vh 45 -vv 45"); |
| 1071 |
|
break; |
| 1072 |
< |
case 'l': |
| 1072 |
> |
case VT_PAR: |
| 1073 |
|
d = sqrt(dim[0]*dim[0]+dim[1]*dim[1]+dim[2]*dim[2]); |
| 1074 |
|
sprintf(cp, " -vh %.2g -vv %.2g", d, d); |
| 1075 |
|
cp += strlen(cp); |
| 1076 |
|
break; |
| 1077 |
< |
case 'a': |
| 1078 |
< |
case 'h': |
| 1077 |
> |
case VT_ANG: |
| 1078 |
> |
case VT_HEM: |
| 1079 |
> |
case VT_PLS: |
| 1080 |
|
cp = addarg(cp, "-vh 180 -vv 180"); |
| 1081 |
|
break; |
| 1082 |
< |
case 'c': |
| 1082 |
> |
case VT_CYL: |
| 1083 |
|
cp = addarg(cp, "-vh 180 -vv 90"); |
| 1084 |
|
break; |
| 1085 |
|
} |
| 1156 |
|
VIEW vwr; |
| 1157 |
|
char buf[128]; |
| 1158 |
|
register char *cp; |
| 1159 |
+ |
#ifdef _WIN32 |
| 1160 |
+ |
/* XXX Should we allow something like this for all platforms? */ |
| 1161 |
+ |
/* XXX Or is it still required at all? */ |
| 1162 |
+ |
again: |
| 1163 |
+ |
#endif |
| 1164 |
|
if (vopts == NULL) |
| 1165 |
|
return(-1); |
| 1166 |
|
#ifdef _WIN32 |
| 1333 |
|
/* rpict persistent mode */ |
| 1334 |
|
if (!silent) |
| 1335 |
|
printf("\t%s\n", combuf); |
| 1336 |
+ |
fflush(stdout); |
| 1337 |
|
sprintf(combuf, "rpict%s %s %s%s%s %s > %s", |
| 1338 |
|
rep, rppopt, res, po, opts, |
| 1339 |
|
oct1name, rawfile); |
| 1323 |
– |
fflush(stdout); |
| 1340 |
|
fp = popen(combuf, "w"); |
| 1341 |
|
if (fp == NULL) |
| 1342 |
|
goto rperror; |
| 1374 |
|
} |
| 1375 |
|
wait_process(1); /* wait for children to finish */ |
| 1376 |
|
if (pfile != NULL) { /* clean up rpict persistent mode */ |
| 1377 |
< |
int pid; |
| 1377 |
> |
RT_PID pid; |
| 1378 |
|
fp = fopen(pfile, "r"); |
| 1379 |
|
if (fp != NULL) { |
| 1380 |
|
if (fscanf(fp, "%*s %d", &pid) != 1 || |
| 1417 |
|
printf("\t%s\n", cs); |
| 1418 |
|
if (!nprocs) |
| 1419 |
|
return(0); |
| 1420 |
< |
fflush(stdout); /* flush output and pass to shell */ |
| 1420 |
> |
fflush(NULL); /* flush output and pass to shell */ |
| 1421 |
|
return(system(cs)); |
| 1422 |
|
} |
| 1423 |
|
|
| 1453 |
|
static int |
| 1454 |
|
next_process(void) /* fork the next process (max. nprocs) */ |
| 1455 |
|
{ |
| 1456 |
< |
int child_pid; |
| 1456 |
> |
RT_PID child_pid; |
| 1457 |
|
|
| 1458 |
|
if (nprocs <= 1) |
| 1459 |
|
return(0); /* it's us or no one */ |
| 1464 |
|
} |
| 1465 |
|
if (children_running >= nprocs) |
| 1466 |
|
wait_process(0); /* wait for someone to finish */ |
| 1467 |
< |
fflush(stdout); |
| 1467 |
> |
fflush(NULL); /* flush output */ |
| 1468 |
|
child_pid = fork(); /* split process */ |
| 1469 |
|
if (child_pid == 0) { /* we're the child */ |
| 1470 |
|
children_running = -1; |
| 1483 |
|
int all |
| 1484 |
|
) |
| 1485 |
|
{ |
| 1486 |
< |
int ourstatus = 0; |
| 1487 |
< |
int pid, status; |
| 1486 |
> |
int ourstatus = 0, status; |
| 1487 |
> |
RT_PID pid; |
| 1488 |
|
|
| 1489 |
|
if (all) |
| 1490 |
|
all = children_running; |
| 1521 |
|
} |
| 1522 |
|
int |
| 1523 |
|
kill(pid, sig) /* win|unix_process.c should also wait and kill */ |
| 1524 |
< |
int pid, sig; |
| 1524 |
> |
RT_PID pid; |
| 1525 |
> |
int sig; |
| 1526 |
|
{ |
| 1527 |
|
return 0; |
| 1528 |
|
} |