ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/rt/suncom.c
Revision: 2.2
Committed: Sat Feb 22 02:07:29 2003 UTC (22 years, 2 months ago) by greg
Content type: text/plain
Branch: MAIN
CVS Tags: HEAD
Changes since 2.1: +0 -0 lines
State: FILE REMOVED
Log Message:
Changes and check-in for 3.5 release
Includes new source files and modifications not recorded for many years
See ray/doc/notes/ReleaseNotes for notes between 3.1 and 3.5 release

File Contents

# Content
1 /* Copyright (c) 1988 Regents of the University of California */
2
3 #ifndef lint
4 static char SCCSid[] = "$SunId$ LBL";
5 #endif
6
7 /*
8 * suncom.c - program to read and edit raw tty input.
9 *
10 * 10/5/88
11 */
12
13 #include <stdio.h>
14 #include <sys/ioctl.h>
15
16 #define INITSTR "" /* TTY initialization string */
17
18 struct sgttyb ttymode;
19
20
21 main(argc, argv) /* called with pid to signal and pipe fd */
22 int argc;
23 char *argv[];
24 {
25 int outfd;
26
27 if (argc != 2)
28 exit(1);
29 outfd = atoi(argv[1]);
30
31 fputs(INITSTR, stdout);
32 fflush(stdout);
33 /* reassign stdout */
34 if (outfd != fileno(stdout)) {
35 dup2(outfd, fileno(stdout));
36 close(outfd);
37 }
38 /* set tty modes */
39 if (!isatty(0))
40 exit(1);
41 ioctl(0, TIOCGETP, &ttymode);
42 ttymode.sg_flags |= RAW; /* also turns output */
43 ttymode.sg_flags &= ~ECHO; /* processing off */
44 ioctl(0, TIOCSETP, &ttymode);
45 /* read lines from input */
46 for ( ; ; ) {
47 ungetc(getc(stdin), stdin); /* notify caller */
48 putc(' ', stdout);
49 fflush(stdout);
50 sendline();
51 }
52 }
53
54
55 int
56 getch() /* get a character in raw mode */
57 {
58 return(getc(stdin));
59 }
60
61
62 sends(s) /* send a string to stdout */
63 register char *s;
64 {
65 do
66 putc(*s, stdout);
67 while (*s++);
68 fflush(stdout);
69 }
70
71
72 sendline() /* read a line in raw mode */
73 {
74 char buf[256];
75
76 editline(buf, getch, sends);
77 putc('\0', stdout);
78 sends(buf);
79 }