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

Comparing ray/src/rt/devmain.c (file contents):
Revision 1.10 by greg, Tue Mar 6 17:44:44 1990 UTC vs.
Revision 2.4 by greg, Tue Feb 25 02:47:22 2003 UTC

# Line 1 | Line 1
1 /* Copyright (c) 1989 Regents of the University of California */
2
1   #ifndef lint
2 < static char SCCSid[] = "$SunId$ LBL";
2 > static const char       RCSid[] = "$Id$";
3   #endif
6
4   /*
5   *  devmain.c - main for independent drivers.
6   *
7   *      Redefine your initialization routine to dinit.
11 *
12 *      10/25/89
8   */
9  
10 < #include <stdio.h>
10 > #include "copyright.h"
11  
12 + #include "standard.h"
13 +
14   #include "color.h"
15  
16   #include "driver.h"
17  
21 int     (*wrnvec)(), (*errvec)(), (*cmdvec)();  /* error vectors, unused */
22
18   struct driver   *dev = NULL;                    /* output device */
19  
20   FILE    *devin, *devout;                        /* communications channels */
# Line 44 | Line 39 | char   *argv[];
39                                                  /* set up I/O */
40          progname = argv[0];
41          if (argc < 3) {
42 <                stderr_v("arg count\n");
42 >                eputs("arg count\n");
43                  quit(1);
44          }
45          devin = fdopen(atoi(argv[1]), "r");
46          devout = fdopen(atoi(argv[2]), "w");
47          if (devin == NULL || devout == NULL || getw(devin) != COM_SENDM) {
48 <                stderr_v("connection failure\n");
48 >                eputs("connection failure\n");
49                  quit(1);
50          }
51                                                  /* open device */
52          if ((dev = dinit(argv[0], argv[3])) == NULL)
53                  quit(1);
54          putw(COM_RECVM, devout);                /* verify initialization */
55 +        sendstate();
56          fflush(devout);
57                                                  /* loop on requests */
58          while ((com = getc(devin)) != EOF) {
59                  if (com >= NREQUESTS || dev_func[com] == NULL) {
60 <                        stderr_v("invalid request\n");
60 >                        eputs("invalid request\n");
61                          quit(1);
62                  }
63                  (*dev_func[com])();             /* process request */
# Line 70 | Line 66 | char   *argv[];
66   }
67  
68  
69 + void
70   quit(code)                              /* close device and exit */
71   int     code;
72   {
# Line 106 | Line 103 | r_flush()                              /* flush output */
103          if (dev->flush != NULL)
104                  (*dev->flush)();
105          putc(COM_FLUSH, devout);
106 <        fwrite((char *)&dev->pixaspect, sizeof(dev->pixaspect), 1, devout);
110 <        putw(dev->xsiz, devout);
111 <        putw(dev->ysiz, devout);
112 <        putw(dev->inpready, devout);
106 >        sendstate();
107          fflush(devout);
108   }
109  
# Line 156 | Line 150 | r_comin()                              /* read string from command line */
150                                          /* reply */
151          putc(COM_COMIN, devout);
152          myputs(buf, devout);
153 <        putw(dev->inpready, devout);
153 >        sendstate();
154          fflush(devout);
155   }
156  
# Line 184 | Line 178 | register FILE  *fp;
178   }
179  
180  
181 < stderr_v(s)                             /* put string to stderr */
181 > void
182 > eputs(s)                                /* put string to stderr */
183   register char  *s;
184   {
185 <        static int  inline = 0;
185 >        static int  midline = 0;
186  
187 <        if (!inline++) {
187 >        if (!*s)
188 >                return;
189 >        if (!midline++) {
190                  fputs(progname, stderr);
191                  fputs(": ", stderr);
192          }
193          fputs(s, stderr);
194 <        if (*s && s[strlen(s)-1] == '\n') {
194 >        if (s[strlen(s)-1] == '\n') {
195                  fflush(stderr);
196 <                inline = 0;
196 >                midline = 0;
197          }
198 + }
199 +
200 +
201 + sendstate()                             /* send driver state variables */
202 + {
203 +        fwrite((char *)&dev->pixaspect, sizeof(dev->pixaspect), 1, devout);
204 +        putw(dev->xsiz, devout);
205 +        putw(dev->ysiz, devout);
206 +        putw(dev->inpready, devout);
207   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines