term.c (167457) | term.c (170511) |
---|---|
1/*- 2 * Copyright (c) 1992, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * This code is derived from software contributed to Berkeley by 6 * Christos Zoulas of Cornell University. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 15 unchanged lines hidden (view full) --- 24 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 26 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 27 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 28 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 29 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 30 * SUCH DAMAGE. 31 * | 1/*- 2 * Copyright (c) 1992, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * This code is derived from software contributed to Berkeley by 6 * Christos Zoulas of Cornell University. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 15 unchanged lines hidden (view full) --- 24 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 26 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 27 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 28 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 29 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 30 * SUCH DAMAGE. 31 * |
32 * $NetBSD: term.c,v 1.45 2006/03/18 19:23:14 christos Exp $ | 32 * $NetBSD: term.c,v 1.46 2006/11/24 00:01:17 christos Exp $ |
33 */ 34 35#if !defined(lint) && !defined(SCCSID) 36static char sccsid[] = "@(#)term.c 8.2 (Berkeley) 4/30/95"; 37#endif /* not lint && not SCCSID */ 38#include <sys/cdefs.h> | 33 */ 34 35#if !defined(lint) && !defined(SCCSID) 36static char sccsid[] = "@(#)term.c 8.2 (Berkeley) 4/30/95"; 37#endif /* not lint && not SCCSID */ 38#include <sys/cdefs.h> |
39__FBSDID("$FreeBSD: head/lib/libedit/term.c 167457 2007-03-11 18:30:22Z stefanf $"); | 39__FBSDID("$FreeBSD: head/lib/libedit/term.c 170511 2007-06-10 19:06:09Z stefanf $"); |
40 41/* 42 * term.c: Editor/termcap-curses interface 43 * We have to declare a static variable here, since the 44 * termcap putchar routine does not take an argument! 45 */ 46#include <stdio.h> 47#include <signal.h> --- 1269 unchanged lines hidden (view full) --- 1317term_settc(EditLine *el, int argc __unused, 1318 const char **argv) 1319{ 1320 const struct termcapstr *ts; 1321 const struct termcapval *tv; 1322 const char *what, *how; 1323 1324 if (argv == NULL || argv[1] == NULL || argv[2] == NULL) | 40 41/* 42 * term.c: Editor/termcap-curses interface 43 * We have to declare a static variable here, since the 44 * termcap putchar routine does not take an argument! 45 */ 46#include <stdio.h> 47#include <signal.h> --- 1269 unchanged lines hidden (view full) --- 1317term_settc(EditLine *el, int argc __unused, 1318 const char **argv) 1319{ 1320 const struct termcapstr *ts; 1321 const struct termcapval *tv; 1322 const char *what, *how; 1323 1324 if (argv == NULL || argv[1] == NULL || argv[2] == NULL) |
1325 return (-1); | 1325 return -1; |
1326 1327 what = argv[1]; 1328 how = argv[2]; 1329 1330 /* 1331 * Do the strings first 1332 */ 1333 for (ts = tstr; ts->name != NULL; ts++) 1334 if (strcmp(ts->name, what) == 0) 1335 break; 1336 1337 if (ts->name != NULL) { 1338 term_alloc(el, ts, how); 1339 term_setflags(el); | 1326 1327 what = argv[1]; 1328 how = argv[2]; 1329 1330 /* 1331 * Do the strings first 1332 */ 1333 for (ts = tstr; ts->name != NULL; ts++) 1334 if (strcmp(ts->name, what) == 0) 1335 break; 1336 1337 if (ts->name != NULL) { 1338 term_alloc(el, ts, how); 1339 term_setflags(el); |
1340 return (0); | 1340 return 0; |
1341 } 1342 /* 1343 * Do the numeric ones second 1344 */ 1345 for (tv = tval; tv->name != NULL; tv++) 1346 if (strcmp(tv->name, what) == 0) 1347 break; 1348 | 1341 } 1342 /* 1343 * Do the numeric ones second 1344 */ 1345 for (tv = tval; tv->name != NULL; tv++) 1346 if (strcmp(tv->name, what) == 0) 1347 break; 1348 |
1349 if (tv->name != NULL) { 1350 if (tv == &tval[T_pt] || tv == &tval[T_km] || 1351 tv == &tval[T_am] || tv == &tval[T_xn]) { 1352 if (strcmp(how, "yes") == 0) 1353 el->el_term.t_val[tv - tval] = 1; 1354 else if (strcmp(how, "no") == 0) 1355 el->el_term.t_val[tv - tval] = 0; 1356 else { 1357 (void) fprintf(el->el_errfile, 1358 "settc: Bad value `%s'.\n", how); 1359 return (-1); 1360 } 1361 term_setflags(el); 1362 if (term_change_size(el, Val(T_li), Val(T_co)) == -1) 1363 return (-1); 1364 return (0); 1365 } else { 1366 long i; 1367 char *ep; | 1349 if (tv->name != NULL) 1350 return -1; |
1368 | 1351 |
1369 i = strtol(how, &ep, 10); 1370 if (*ep != '\0') { 1371 (void) fprintf(el->el_errfile, 1372 "settc: Bad value `%s'.\n", how); 1373 return (-1); 1374 } 1375 el->el_term.t_val[tv - tval] = (int) i; 1376 el->el_term.t_size.v = Val(T_co); 1377 el->el_term.t_size.h = Val(T_li); 1378 if (tv == &tval[T_co] || tv == &tval[T_li]) 1379 if (term_change_size(el, Val(T_li), Val(T_co)) 1380 == -1) 1381 return (-1); 1382 return (0); | 1352 if (tv == &tval[T_pt] || tv == &tval[T_km] || 1353 tv == &tval[T_am] || tv == &tval[T_xn]) { 1354 if (strcmp(how, "yes") == 0) 1355 el->el_term.t_val[tv - tval] = 1; 1356 else if (strcmp(how, "no") == 0) 1357 el->el_term.t_val[tv - tval] = 0; 1358 else { 1359 (void) fprintf(el->el_errfile, 1360 "%s: Bad value `%s'.\n", argv[0], how); 1361 return -1; |
1383 } | 1362 } |
1363 term_setflags(el); 1364 if (term_change_size(el, Val(T_li), Val(T_co)) == -1) 1365 return -1; 1366 return 0; 1367 } else { 1368 long i; 1369 char *ep; 1370 1371 i = strtol(how, &ep, 10); 1372 if (*ep != '\0') { 1373 (void) fprintf(el->el_errfile, 1374 "%s: Bad value `%s'.\n", argv[0], how); 1375 return -1; 1376 } 1377 el->el_term.t_val[tv - tval] = (int) i; 1378 el->el_term.t_size.v = Val(T_co); 1379 el->el_term.t_size.h = Val(T_li); 1380 if (tv == &tval[T_co] || tv == &tval[T_li]) 1381 if (term_change_size(el, Val(T_li), Val(T_co)) 1382 == -1) 1383 return -1; 1384 return 0; |
|
1384 } | 1385 } |
1385 return (-1); | |
1386} 1387 1388 | 1386} 1387 1388 |
1389/* term_gettc(): 1390 * Get the current terminal characteristics 1391 */ 1392protected int 1393/*ARGSUSED*/ 1394term_gettc(EditLine *el, int argc __unused, char **argv) 1395{ 1396 const struct termcapstr *ts; 1397 const struct termcapval *tv; 1398 char *what; 1399 void *how; 1400 1401 if (argv == NULL || argv[1] == NULL || argv[2] == NULL) 1402 return (-1); 1403 1404 what = argv[1]; 1405 how = argv[2]; 1406 1407 /* 1408 * Do the strings first 1409 */ 1410 for (ts = tstr; ts->name != NULL; ts++) 1411 if (strcmp(ts->name, what) == 0) 1412 break; 1413 1414 if (ts->name != NULL) { 1415 *(char **)how = el->el_term.t_str[ts - tstr]; 1416 return 0; 1417 } 1418 /* 1419 * Do the numeric ones second 1420 */ 1421 for (tv = tval; tv->name != NULL; tv++) 1422 if (strcmp(tv->name, what) == 0) 1423 break; 1424 1425 if (tv->name == NULL) 1426 return -1; 1427 1428 if (tv == &tval[T_pt] || tv == &tval[T_km] || 1429 tv == &tval[T_am] || tv == &tval[T_xn]) { 1430 static char yes[] = "yes"; 1431 static char no[] = "no"; 1432 if (el->el_term.t_val[tv - tval]) 1433 *(char **)how = yes; 1434 else 1435 *(char **)how = no; 1436 return 0; 1437 } else { 1438 *(int *)how = el->el_term.t_val[tv - tval]; 1439 return 0; 1440 } 1441} 1442 |
|
1389/* term_echotc(): 1390 * Print the termcap string out with variable substitution 1391 */ 1392protected int 1393/*ARGSUSED*/ 1394term_echotc(EditLine *el, int argc __unused, 1395 const char **argv) 1396{ --- 220 unchanged lines hidden --- | 1443/* term_echotc(): 1444 * Print the termcap string out with variable substitution 1445 */ 1446protected int 1447/*ARGSUSED*/ 1448term_echotc(EditLine *el, int argc __unused, 1449 const char **argv) 1450{ --- 220 unchanged lines hidden --- |