projects
/
ncurses.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ncurses 5.9 - patch 20130713
[ncurses.git]
/
ncurses
/
tinfo
/
parse_entry.c
diff --git
a/ncurses/tinfo/parse_entry.c
b/ncurses/tinfo/parse_entry.c
index ddbc25204fec882b0bde07bc38c6181d6d3b540a..2936a64369a884dfc8abf8777ef3454856cacf36 100644
(file)
--- a/
ncurses/tinfo/parse_entry.c
+++ b/
ncurses/tinfo/parse_entry.c
@@
-1,5
+1,5
@@
/****************************************************************************
/****************************************************************************
- * Copyright (c) 1998-20
09,2010
Free Software Foundation, Inc. *
+ * Copyright (c) 1998-20
11,2012
Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@
-47,7
+47,7
@@
#include <ctype.h>
#include <tic.h>
#include <ctype.h>
#include <tic.h>
-MODULE_ID("$Id: parse_entry.c,v 1.7
5 2010/05/01 19:35:09
tom Exp $")
+MODULE_ID("$Id: parse_entry.c,v 1.7
9 2012/10/27 21:43:45
tom Exp $")
#ifdef LINT
static short const parametrized[] =
#ifdef LINT
static short const parametrized[] =
@@
-145,27
+145,27
@@
_nc_extend_names(ENTRY * entryp, char *name, int token_type)
case BOOLEAN:
tp->ext_Booleans++;
tp->num_Booleans++;
case BOOLEAN:
tp->ext_Booleans++;
tp->num_Booleans++;
-
tp->Booleans = typeRealloc
(NCURSES_SBOOL, tp->num_Booleans, tp->Booleans);
+
TYPE_REALLOC
(NCURSES_SBOOL, tp->num_Booleans, tp->Booleans);
for_each_value(tp->num_Booleans)
tp->Booleans[last] = tp->Booleans[last - 1];
break;
case NUMBER:
tp->ext_Numbers++;
tp->num_Numbers++;
for_each_value(tp->num_Booleans)
tp->Booleans[last] = tp->Booleans[last - 1];
break;
case NUMBER:
tp->ext_Numbers++;
tp->num_Numbers++;
-
tp->Numbers = typeRealloc
(short, tp->num_Numbers, tp->Numbers);
+
TYPE_REALLOC
(short, tp->num_Numbers, tp->Numbers);
for_each_value(tp->num_Numbers)
tp->Numbers[last] = tp->Numbers[last - 1];
break;
case STRING:
tp->ext_Strings++;
tp->num_Strings++;
for_each_value(tp->num_Numbers)
tp->Numbers[last] = tp->Numbers[last - 1];
break;
case STRING:
tp->ext_Strings++;
tp->num_Strings++;
-
tp->Strings = typeRealloc
(char *, tp->num_Strings, tp->Strings);
+
TYPE_REALLOC
(char *, tp->num_Strings, tp->Strings);
for_each_value(tp->num_Strings)
tp->Strings[last] = tp->Strings[last - 1];
break;
}
actual = NUM_EXT_NAMES(tp);
for_each_value(tp->num_Strings)
tp->Strings[last] = tp->Strings[last - 1];
break;
}
actual = NUM_EXT_NAMES(tp);
-
tp->ext_Names = typeRealloc
(char *, actual, tp->ext_Names);
+
TYPE_REALLOC
(char *, actual, tp->ext_Names);
while (--actual > offset)
tp->ext_Names[actual] = tp->ext_Names[actual - 1];
tp->ext_Names[offset] = _nc_save_str(name);
while (--actual > offset)
tp->ext_Names[actual] = tp->ext_Names[actual - 1];
tp->ext_Names[offset] = _nc_save_str(name);
@@
-203,6
+203,8
@@
_nc_extend_names(ENTRY * entryp, char *name, int token_type)
{ bad_tc_usage = TRUE; \
_nc_warning("Legacy termcap allows only a trailing tc= clause"); }
{ bad_tc_usage = TRUE; \
_nc_warning("Legacy termcap allows only a trailing tc= clause"); }
+#define MAX_NUMBER 0x7fff /* positive shorts only */
+
NCURSES_EXPORT(int)
_nc_parse_entry(struct entry *entryp, int literal, bool silent)
{
NCURSES_EXPORT(int)
_nc_parse_entry(struct entry *entryp, int literal, bool silent)
{
@@
-444,8
+446,12
@@
_nc_parse_entry(struct entry *entryp, int literal, bool silent)
break;
case NUMBER:
break;
case NUMBER:
- entryp->tterm.Numbers[entry_ptr->nte_index] =
- (short) _nc_curr_token.tk_valnumber;
+ if (_nc_curr_token.tk_valnumber > MAX_NUMBER) {
+ entryp->tterm.Numbers[entry_ptr->nte_index] = MAX_NUMBER;
+ } else {
+ entryp->tterm.Numbers[entry_ptr->nte_index] =
+ (short) _nc_curr_token.tk_valnumber;
+ }
break;
case STRING:
break;
case STRING:
@@
-654,14
+660,16
@@
postprocess_termcap(TERMTYPE *tp, bool has_base)
if (WANTED(carriage_return)) {
if (carriage_return_delay > 0) {
if (WANTED(carriage_return)) {
if (carriage_return_delay > 0) {
- sprintf(buf, "%s$<%d>", C_CR, carriage_return_delay);
+ _nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf))
+ "%s$<%d>", C_CR, carriage_return_delay);
carriage_return = _nc_save_str(buf);
} else
carriage_return = _nc_save_str(C_CR);
}
if (WANTED(cursor_left)) {
if (backspace_delay > 0) {
carriage_return = _nc_save_str(buf);
} else
carriage_return = _nc_save_str(C_CR);
}
if (WANTED(cursor_left)) {
if (backspace_delay > 0) {
- sprintf(buf, "%s$<%d>", C_BS, backspace_delay);
+ _nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf))
+ "%s$<%d>", C_BS, backspace_delay);
cursor_left = _nc_save_str(buf);
} else if (backspaces_with_bs == 1)
cursor_left = _nc_save_str(C_BS);
cursor_left = _nc_save_str(buf);
} else if (backspaces_with_bs == 1)
cursor_left = _nc_save_str(C_BS);
@@
-674,7
+682,8
@@
postprocess_termcap(TERMTYPE *tp, bool has_base)
cursor_down = linefeed_if_not_lf;
else if (linefeed_is_newline != 1) {
if (new_line_delay > 0) {
cursor_down = linefeed_if_not_lf;
else if (linefeed_is_newline != 1) {
if (new_line_delay > 0) {
- sprintf(buf, "%s$<%d>", C_LF, new_line_delay);
+ _nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf))
+ "%s$<%d>", C_LF, new_line_delay);
cursor_down = _nc_save_str(buf);
} else
cursor_down = _nc_save_str(C_LF);
cursor_down = _nc_save_str(buf);
} else
cursor_down = _nc_save_str(C_LF);
@@
-685,7
+694,8
@@
postprocess_termcap(TERMTYPE *tp, bool has_base)
cursor_down = linefeed_if_not_lf;
else if (linefeed_is_newline != 1) {
if (new_line_delay > 0) {
cursor_down = linefeed_if_not_lf;
else if (linefeed_is_newline != 1) {
if (new_line_delay > 0) {
- sprintf(buf, "%s$<%d>", C_LF, new_line_delay);
+ _nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf))
+ "%s$<%d>", C_LF, new_line_delay);
scroll_forward = _nc_save_str(buf);
} else
scroll_forward = _nc_save_str(C_LF);
scroll_forward = _nc_save_str(buf);
} else
scroll_forward = _nc_save_str(C_LF);
@@
-694,7
+704,8
@@
postprocess_termcap(TERMTYPE *tp, bool has_base)
if (WANTED(newline)) {
if (linefeed_is_newline == 1) {
if (new_line_delay > 0) {
if (WANTED(newline)) {
if (linefeed_is_newline == 1) {
if (new_line_delay > 0) {
- sprintf(buf, "%s$<%d>", C_LF, new_line_delay);
+ _nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf))
+ "%s$<%d>", C_LF, new_line_delay);
newline = _nc_save_str(buf);
} else
newline = _nc_save_str(C_LF);
newline = _nc_save_str(buf);
} else
newline = _nc_save_str(C_LF);
@@
-736,7
+747,8
@@
postprocess_termcap(TERMTYPE *tp, bool has_base)
*/
if (WANTED(tab)) {
if (horizontal_tab_delay > 0) {
*/
if (WANTED(tab)) {
if (horizontal_tab_delay > 0) {
- sprintf(buf, "%s$<%d>", C_HT, horizontal_tab_delay);
+ _nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf))
+ "%s$<%d>", C_HT, horizontal_tab_delay);
tab = _nc_save_str(buf);
} else
tab = _nc_save_str(C_HT);
tab = _nc_save_str(buf);
} else
tab = _nc_save_str(C_HT);