Deleted Added
full compact
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 ---