term.c (1591) | term.c (28370) |
---|---|
1/*- 2 * Copyright (c) 1991, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 18 unchanged lines hidden (view full) --- 27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31 * SUCH DAMAGE. 32 */ 33 34#ifndef lint | 1/*- 2 * Copyright (c) 1991, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 18 unchanged lines hidden (view full) --- 27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31 * SUCH DAMAGE. 32 */ 33 34#ifndef lint |
35#if 0 |
|
35static char sccsid[] = "@(#)term.c 8.1 (Berkeley) 6/9/93"; | 36static char sccsid[] = "@(#)term.c 8.1 (Berkeley) 6/9/93"; |
37#endif 38static const char rcsid[] = 39 "$Id$"; |
|
36#endif /* not lint */ 37 38#include <sys/types.h> | 40#endif /* not lint */ 41 42#include <sys/types.h> |
43#include <err.h> |
|
39#include <errno.h> | 44#include <errno.h> |
40#include <ttyent.h> 41#include <unistd.h> | |
42#include <stdio.h> 43#include <stdlib.h> 44#include <string.h> | 45#include <stdio.h> 46#include <stdlib.h> 47#include <string.h> |
48#include <unistd.h> 49#include <ttyent.h> |
|
45#include "extern.h" 46 47char tbuf[1024]; /* Termcap entry. */ 48 49char *askuser __P((char *)); 50char *ttys __P((char *)); 51 52/* --- 9 unchanged lines hidden (view full) --- 62 char *p, *ttype, *ttypath; 63 64 if (userarg) { 65 ttype = userarg; 66 goto found; 67 } 68 69 /* Try the environment. */ | 50#include "extern.h" 51 52char tbuf[1024]; /* Termcap entry. */ 53 54char *askuser __P((char *)); 55char *ttys __P((char *)); 56 57/* --- 9 unchanged lines hidden (view full) --- 67 char *p, *ttype, *ttypath; 68 69 if (userarg) { 70 ttype = userarg; 71 goto found; 72 } 73 74 /* Try the environment. */ |
70 if (ttype = getenv("TERM")) | 75 if ((ttype = getenv("TERM"))) |
71 goto map; 72 73 /* Try ttyname(3); check for dialup or other mapping. */ | 76 goto map; 77 78 /* Try ttyname(3); check for dialup or other mapping. */ |
74 if (ttypath = ttyname(STDERR_FILENO)) { 75 if (p = rindex(ttypath, '/')) | 79 if ((ttypath = ttyname(STDERR_FILENO))) { 80 if ((p = rindex(ttypath, '/'))) |
76 ++p; 77 else 78 p = ttypath; 79 if ((t = getttynam(p))) { 80 ttype = t->ty_type; 81 goto map; 82 } 83 } --- 18 unchanged lines hidden (view full) --- 102 if (ttype[0] == '?') 103 if (ttype[1] != '\0') 104 ttype = askuser(ttype + 1); 105 else 106 ttype = askuser(NULL); 107 108 /* Find the termcap entry. If it doesn't exist, ask the user. */ 109 while ((rval = tgetent(tbuf, ttype)) == 0) { | 81 ++p; 82 else 83 p = ttypath; 84 if ((t = getttynam(p))) { 85 ttype = t->ty_type; 86 goto map; 87 } 88 } --- 18 unchanged lines hidden (view full) --- 107 if (ttype[0] == '?') 108 if (ttype[1] != '\0') 109 ttype = askuser(ttype + 1); 110 else 111 ttype = askuser(NULL); 112 113 /* Find the termcap entry. If it doesn't exist, ask the user. */ 114 while ((rval = tgetent(tbuf, ttype)) == 0) { |
110 (void)fprintf(stderr, 111 "tset: terminal type %s is unknown\n", ttype); | 115 warnx("terminal type %s is unknown", ttype); |
112 ttype = askuser(NULL); 113 } 114 if (rval == -1) | 116 ttype = askuser(NULL); 117 } 118 if (rval == -1) |
115 err("termcap: %s", strerror(errno ? errno : ENOENT)); | 119 errx(1, "termcap: %s", strerror(errno ? errno : ENOENT)); |
116 *tcapbufp = tbuf; 117 return (ttype); 118} 119 120/* Prompt the user for a terminal type. */ 121char * 122askuser(dflt) 123 char *dflt; --- 16 unchanged lines hidden (view full) --- 140 if (fgets(answer, sizeof(answer), stdin) == NULL) { 141 if (dflt == NULL) { 142 (void)fprintf(stderr, "\n"); 143 exit(1); 144 } 145 return (dflt); 146 } 147 | 120 *tcapbufp = tbuf; 121 return (ttype); 122} 123 124/* Prompt the user for a terminal type. */ 125char * 126askuser(dflt) 127 char *dflt; --- 16 unchanged lines hidden (view full) --- 144 if (fgets(answer, sizeof(answer), stdin) == NULL) { 145 if (dflt == NULL) { 146 (void)fprintf(stderr, "\n"); 147 exit(1); 148 } 149 return (dflt); 150 } 151 |
148 if (p = index(answer, '\n')) | 152 if ((p = index(answer, '\n'))) |
149 *p = '\0'; 150 if (answer[0]) 151 return (answer); 152 if (dflt != NULL) 153 return (dflt); 154 } 155} | 153 *p = '\0'; 154 if (answer[0]) 155 return (answer); 156 if (dflt != NULL) 157 return (dflt); 158 } 159} |