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

Comparing ray/src/rt/editline.c (file contents):
Revision 1.3 by greg, Mon Jan 8 13:53:55 1990 UTC vs.
Revision 2.7 by schorsch, Sun Jul 27 22:12:03 2003 UTC

# Line 1 | Line 1
1 /* Copyright (c) 1987 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   *  editline.c - routine for editing raw input for rview.
6   *
7 < *      10/5/88
7 > *  External symbols declared in driver.h
8   */
9  
10 + #include "copyright.h"
11 +
12 + #include <stdio.h>
13 +
14 + #include "color.h"
15 +
16 + #include "driver.h"
17 +
18   #define iscntrl(c)      ((c) < ' ')
19   #define isblank(c)      ((c) == ' ')
20   #define iserase(c)      ((c) == '\b' || (c) == 127)
# Line 17 | Line 22 | static char SCCSid[] = "$SunId$ LBL";
22   #define iskill(c)       ((c) == 'U'-'@' || (c) == 'X'-'@')
23  
24  
25 + void
26   editline(buf, c_get, s_put)     /* edit input line */
27   char  *buf;
28 < int  (*c_get)(), (*s_put)();
28 > int  (*c_get)();
29 > void  (*s_put)();
30   {
31          static char  erases[] = "\b \b";
32          static char  obuf[4];
# Line 63 | Line 70 | int  (*c_get)(), (*s_put)();
70   }
71  
72  
66 #include  "driver.h"
67
73   static char  mybuf[512];
74  
75  
76 < char *
77 < getcombuf(d)                            /* return buffer for my command */
78 < struct driver  *d;
76 > void
77 > tocombuf(b, d)                          /* add command(s) to my buffer */
78 > register char  *b;
79 > register struct driver  *d;
80   {
81 <        d->inpready++;
82 <        return(mybuf+strlen(mybuf));
81 >        register char  *cp;
82 >        char  *comstart;
83 >
84 >        for (cp = mybuf; *cp; cp++)
85 >                ;
86 >        comstart = cp;
87 >        while ( (*cp++ = *b) )
88 >                if (cp >= mybuf+sizeof(mybuf)) {
89 >                        *comstart = '\0';
90 >                        return;         /* what should I do about this? */
91 >                } else if (*b++ == '\n') {
92 >                        d->inpready++;
93 >                        comstart = cp;
94 >                }
95   }
96  
97  
98 + int
99   fromcombuf(b, d)                        /* get command from my buffer */
100   char  *b;
101   struct driver  *d;
# Line 87 | Line 106 | struct driver  *d;
106                  if (!*cp)
107                          return(0);
108          *cp++ = '\0';
109 + #ifdef DEBUG
110          (*d->comout)(mybuf);                    /* echo my command */
111          (*d->comout)("\n");
112 + #endif
113                                                  /* send it as reply */
114          strcpy(b, mybuf);
115          d->inpready--;
116 <                                                /* get next command */
116 >                                                /* advance commands */
117          strcpy(mybuf, cp);
118          return(1);
119   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines