ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/util/ranimate.c
(Generate patch)

Comparing ray/src/util/ranimate.c (file contents):
Revision 2.8 by greg, Wed Jan 24 14:31:36 1996 UTC vs.
Revision 2.12 by greg, Mon May 20 11:50:19 1996 UTC

# Line 1 | Line 1
1 < /* Copyright (c) 1995 Regents of the University of California */
1 > /* Copyright (c) 1996 Regents of the University of California */
2  
3   #ifndef lint
4   static char SCCSid[] = "$SunId$ LBL";
# Line 15 | Line 15 | static char SCCSid[] = "$SunId$ LBL";
15   #include "view.h"
16   #include "vars.h"
17   #include "netproc.h"
18 +                                /* default remote shell */
19 + #ifdef _AUX_SOURCE
20 + #define REMSH           "remsh"
21 + #else
22 + #define REMSH           "rsh"
23 + #endif
24                                  /* input variables */
25   #define HOST            0               /* rendering host machine */
26   #define RENDER          1               /* rendering options */
# Line 38 | Line 44 | static char SCCSid[] = "$SunId$ LBL";
44   #define DISKSPACE       19              /* how much disk space to use */
45   #define RESOLUTION      20              /* desired final resolution */
46   #define EXPOSURE        21              /* how to compute exposure */
47 + #define RSH             22              /* remote shell script or program */
48  
49 < int     NVARS = 22;             /* total number of variables */
49 > int     NVARS = 23;             /* total number of variables */
50  
51   VARIABLE        vv[] = {                /* variable-value pairs */
52          {"host",        4,      0,      NULL,   NULL},
# Line 64 | Line 71 | VARIABLE       vv[] = {                /* variable-value pairs */
71          {"DISKSPACE",   3,      0,      NULL,   fltvalue},
72          {"RESOLUTION",  3,      0,      NULL,   onevalue},
73          {"EXPOSURE",    3,      0,      NULL,   onevalue},
74 +        {"RSH",         3,      0,      NULL,   onevalue},
75   };
76  
77   #define SFNAME  "STATUS"                /* status file name */
# Line 84 | Line 92 | int    nowarn = 0;             /* turn warnings off? */
92   int     silent = 0;             /* silent mode? */
93   int     noaction = 0;           /* take no action? */
94  
95 + char    *remsh;                 /* remote shell program/script */
96   char    rendopt[2048] = "";     /* rendering options */
97   char    rresopt[32];            /* rendering resolution options */
98   char    fresopt[32];            /* filter resolution options */
# Line 109 | Line 118 | struct pslot   *findpslot();
118   VIEW    *getview();
119   char    *getexp();
120  
121 + extern time_t   fdate(), time();
122  
123 +
124   main(argc, argv)
125   int     argc;
126   char    *argv[];
# Line 166 | Line 177 | char   *argv[];
177                  argv[i] = vval(NEXTANIM);       /* just change input file */
178                  if (!silent)
179                          printargs(argc, argv, stdout);
180 <                execvp(progname, argv);         /* pass to next */
181 <                quit(1);                        /* shouldn't return */
180 >                if ((argv[0] = getpath(progname,getenv("PATH"),X_OK)) == NULL)
181 >                        fprintf(stderr, "%s: command not found\n", progname);
182 >                else
183 >                        execv(progname, argv);
184 >                quit(1);
185          }
186          quit(0);
187   userr:
# Line 178 | Line 192 | userr:
192  
193   getastat()                      /* check/set animation status */
194   {
195 <        char    buf[256];
195 >        char    sfname[256];
196          FILE    *fp;
197  
198 <        sprintf(buf, "%s/%s", vval(DIRECTORY), SFNAME);
199 <        if ((fp = fopen(buf, "r")) == NULL) {
198 >        sprintf(sfname, "%s/%s", vval(DIRECTORY), SFNAME);
199 >        if ((fp = fopen(sfname, "r")) == NULL) {
200                  if (errno != ENOENT) {
201 <                        perror(buf);
201 >                        perror(sfname);
202                          return(-1);
203                  }
204                  astat.rnext = astat.fnext = astat.tnext = 0;
# Line 204 | Line 218 | getastat()                     /* check/set animation status */
218                  goto fmterr;
219          fclose(fp);
220          if (astat.pid != 0) {                   /* thinks it's still running */
221 <                gethostname(buf, sizeof(buf));
208 <                if (strcmp(buf, astat.host)) {
221 >                if (strcmp(myhostname(), astat.host)) {
222                          fprintf(stderr,
223                          "%s: process %d may still be running on host %s\n",
224                                          progname, astat.pid, astat.host);
# Line 223 | Line 236 | getastat()                     /* check/set animation status */
236                                  progname, astat.cfname);
237                  return(-1);
238          }
239 +                                                /* check control file mods. */
240 +        if (!nowarn && fdate(cfname) > fdate(sfname))
241 +                fprintf(stderr,
242 +                        "%s: warning - control file modified since last run\n",
243 +                                progname);
244   setours:                                        /* set our values */
245 <        gethostname(astat.host, sizeof(astat.host));
245 >        strcpy(astat.host, myhostname());
246          astat.pid = getpid();
247          strcpy(astat.cfname, cfname);
248          return(0);
249   fmterr:
250          fprintf(stderr, "%s: format error in status file \"%s\"\n",
251 <                        progname, buf);
251 >                        progname, sfname);
252          fclose(fp);
253          return(-1);
254   }
# Line 282 | Line 300 | checkdir()                     /* make sure we have our directory */
300  
301   setdefaults()                   /* set default values */
302   {
303 +        extern char     *atos();
304          char    buf[256];
305  
306          if (vdef(ANIMATE)) {
# Line 347 | Line 366 | setdefaults()                  /* set default values */
366                  vval(DISKSPACE) = "100";
367                  vdef(DISKSPACE)++;
368          }
369 +        if (!vdef(RSH)) {
370 +                vval(RSH) = REMSH;
371 +                vdef(RSH)++;
372 +        }
373 +                                /* locate remote shell program */
374 +        atos(buf, sizeof(buf), vval(RSH));
375 +        if ((remsh = getpath(buf, getenv("PATH"), X_OK)) != NULL)
376 +                remsh = savqstr(remsh);
377 +        else
378 +                remsh = vval(RSH);      /* will generate error if used */
379 +
380                                  /* append rendering options */
381          if (vdef(RENDER))
382                  sprintf(rendopt+strlen(rendopt), " %s", vval(RENDER));

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines