From: Paul Eggert Date: Wed, 9 Mar 2011 02:12:00 +0000 (-0800) Subject: * cm.c (calccost, cmgoto): Use const pointers where appropriate. X-Git-Tag: emacs-pretest-24.0.90~104^2~275^2~605^2^2~40 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=fbceeba21b3b5aeb2a0f98d4ca937cabbe07fab0;p=emacs.git * cm.c (calccost, cmgoto): Use const pointers where appropriate. * cm.h (struct cm): Likewise. * dispextern.h (do_line_insertion_deletion_costs): Likewise. * scroll.c (ins_del_costs, do_line_insertion_deletion_costs): Likewise. * term.c (tty_ins_del_lines, calculate_costs, struct fkey_table): (term_get_fkeys_1, append_glyphless_glyph, produce_glyphless_glyph): (turn_on_face, init_tty): Likewise. * termchar.h (struct tty_display_info): Likewise. * term.c (tgetflag, tgetnum, tgetstr): Redefine to use const pointers. --- diff --git a/src/ChangeLog b/src/ChangeLog index 350f01953d4..a8594fb3fc6 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -98,6 +98,16 @@ * tparam.c (tparam1, tparam, tgoto): Use const pointers where appropriate. + * cm.c (calccost, cmgoto): Use const pointers where appropriate. + * cm.h (struct cm): Likewise. + * dispextern.h (do_line_insertion_deletion_costs): Likewise. + * scroll.c (ins_del_costs, do_line_insertion_deletion_costs): Likewise. + * term.c (tty_ins_del_lines, calculate_costs, struct fkey_table): + (term_get_fkeys_1, append_glyphless_glyph, produce_glyphless_glyph): + (turn_on_face, init_tty): Likewise. + * termchar.h (struct tty_display_info): Likewise. + * term.c (tgetflag, tgetnum, tgetstr): Redefine to use const pointers. + 2011-03-06 Chong Yidong * xdisp.c (redisplay_window): Revert incorrect logic in 2011-03-06 diff --git a/src/cm.c b/src/cm.c index af4116f3fec..108ee5720f3 100644 --- a/src/cm.c +++ b/src/cm.c @@ -199,7 +199,7 @@ calccost (struct tty_display_info *tty, tabx, tab2x, tabcost; - register char *p; + register const char *p; /* If have just wrapped on a terminal with xn, don't believe the cursor position: give up here @@ -331,8 +331,8 @@ cmgoto (struct tty_display_info *tty, int row, int col) relcost, directcost; int use IF_LINT (= 0); - char *p, - *dcm; + char *p; + const char *dcm; /* First the degenerate case */ if (row == curY (tty) && col == curX (tty)) /* already there */ diff --git a/src/cm.h b/src/cm.h index 7b4bedd4e88..5d430598f0c 100644 --- a/src/cm.h +++ b/src/cm.h @@ -35,25 +35,25 @@ struct cm int cm_curX; /* Current column */ /* Capabilities from termcap */ - char *cm_up; /* up (up) */ - char *cm_down; /* down (do) */ - char *cm_left; /* left (le) */ - char *cm_right; /* right (nd) */ - char *cm_home; /* home (ho) */ - char *cm_cr; /* carriage return (cr) */ - char *cm_ll; /* last line (ll) */ - char *cm_tab; /* tab (ta) */ - char *cm_backtab; /* backtab (bt) */ + const char *cm_up; /* up (up) */ + const char *cm_down; /* down (do) */ + const char *cm_left; /* left (le) */ + const char *cm_right; /* right (nd) */ + const char *cm_home; /* home (ho) */ + const char *cm_cr; /* carriage return (cr) */ + const char *cm_ll; /* last line (ll) */ + const char *cm_tab; /* tab (ta) */ + const char *cm_backtab; /* backtab (bt) */ char *cm_abs; /* absolute (cm) */ - char *cm_habs; /* horizontal absolute (ch) */ - char *cm_vabs; /* vertical absolute (cv) */ + const char *cm_habs; /* horizontal absolute (ch) */ + const char *cm_vabs; /* vertical absolute (cv) */ #if 0 - char *cm_ds; /* "don't send" string (ds) */ + const char *cm_ds; /* "don't send" string (ds) */ #endif - char *cm_multiup; /* multiple up (UP) */ - char *cm_multidown; /* multiple down (DO) */ - char *cm_multileft; /* multiple left (LE) */ - char *cm_multiright; /* multiple right (RI) */ + const char *cm_multiup; /* multiple up (UP) */ + const char *cm_multidown; /* multiple down (DO) */ + const char *cm_multileft; /* multiple left (LE) */ + const char *cm_multiright; /* multiple right (RI) */ int cm_cols; /* number of cols on screen (co) */ int cm_rows; /* number of rows on screen (li) */ int cm_tabwidth; /* tab width (it) */ @@ -168,4 +168,3 @@ extern void cmcostinit (struct tty_display_info *); extern void cmgoto (struct tty_display_info *, int, int); extern void Wcm_clear (struct tty_display_info *); extern int Wcm_init (struct tty_display_info *); - diff --git a/src/dispextern.h b/src/dispextern.h index 30979d487ff..9843dfd1fcd 100644 --- a/src/dispextern.h +++ b/src/dispextern.h @@ -3326,9 +3326,10 @@ extern struct terminal *init_tty (const char *, const char *, int); extern int scrolling_max_lines_saved (int, int, int *, int *, int *); extern int scroll_cost (struct frame *, int, int, int); -extern void do_line_insertion_deletion_costs (struct frame *, char *, - char *, char *, char *, - char *, char *, int); +extern void do_line_insertion_deletion_costs (struct frame *, const char *, + const char *, const char *, + const char *, const char *, + const char *, int); void scrolling_1 (struct frame *, int, int, int, int *, int *, int *, int *, int); diff --git a/src/scroll.c b/src/scroll.c index 1343b89c41e..33af18d2090 100644 --- a/src/scroll.c +++ b/src/scroll.c @@ -938,8 +938,8 @@ line_ins_del (FRAME_PTR frame, int ov1, int pf1, int ovn, int pfn, register int static void ins_del_costs (FRAME_PTR frame, - char *one_line_string, char *multi_string, - char *setup_string, char *cleanup_string, + const char *one_line_string, const char *multi_string, + const char *setup_string, const char *cleanup_string, int *costvec, int *ncostvec, int coefficient) { @@ -994,9 +994,12 @@ ins_del_costs (FRAME_PTR frame, void do_line_insertion_deletion_costs (FRAME_PTR frame, - char *ins_line_string, char *multi_ins_string, - char *del_line_string, char *multi_del_string, - char *setup_string, char *cleanup_string, + const char *ins_line_string, + const char *multi_ins_string, + const char *del_line_string, + const char *multi_del_string, + const char *setup_string, + const char *cleanup_string, int coefficient) { if (FRAME_INSERT_COST (frame) != 0) diff --git a/src/term.c b/src/term.c index 19d7d893069..6986cfb9e03 100644 --- a/src/term.c +++ b/src/term.c @@ -961,9 +961,10 @@ static void tty_ins_del_lines (struct frame *f, int vpos, int n) { struct tty_display_info *tty = FRAME_TTY (f); - char *multi = n > 0 ? tty->TS_ins_multi_lines : tty->TS_del_multi_lines; - char *single = n > 0 ? tty->TS_ins_line : tty->TS_del_line; - char *scroll = n > 0 ? tty->TS_rev_scroll : tty->TS_fwd_scroll; + const char *multi = + n > 0 ? tty->TS_ins_multi_lines : tty->TS_del_multi_lines; + const char *single = n > 0 ? tty->TS_ins_line : tty->TS_del_line; + const char *scroll = n > 0 ? tty->TS_rev_scroll : tty->TS_fwd_scroll; register int i = n > 0 ? n : -n; register char *buf; @@ -1138,9 +1139,9 @@ calculate_costs (struct frame *frame) if (FRAME_TERMCAP_P (frame)) { struct tty_display_info *tty = FRAME_TTY (frame); - register char *f = (tty->TS_set_scroll_region - ? tty->TS_set_scroll_region - : tty->TS_set_scroll_region_1); + register const char *f = (tty->TS_set_scroll_region + ? tty->TS_set_scroll_region + : tty->TS_set_scroll_region_1); FRAME_SCROLL_REGION_COST (frame) = string_cost (f); @@ -1194,7 +1195,7 @@ calculate_costs (struct frame *frame) } struct fkey_table { - char *cap, *name; + const char *cap, *name; }; /* Termcap capability names that correspond directly to X keysyms. @@ -1305,6 +1306,18 @@ static char **term_get_fkeys_address; static KBOARD *term_get_fkeys_kboard; static Lisp_Object term_get_fkeys_1 (void); +/* Rework termcap API to accept const pointer args. */ +static inline int my_tgetflag (const char *x) { return tgetflag ((char *) x); } +static inline int my_tgetnum (const char *x) { return tgetnum ((char *) x); } +static inline char *my_tgetstr (const char *x, char **a) +{ return tgetstr ((char *) x, a); } +#undef tgetflag +#undef tgetnum +#undef tgetstr +#define tgetflag my_tgetflag +#define tgetnum my_tgetnum +#define tgetstr my_tgetstr + /* Find the escape codes sent by the function keys for Vinput_decode_map. This function scans the termcap function key sequence entries, and adds entries to Vinput_decode_map for each function key it finds. */ @@ -1352,9 +1365,9 @@ term_get_fkeys_1 (void) "k;", and if it is present, assuming that "k0" denotes F0, otherwise F10. */ { - char *k_semi = tgetstr ("k;", address); - char *k0 = tgetstr ("k0", address); - char *k0_name = "f10"; + const char *k_semi = tgetstr ("k;", address); + const char *k0 = tgetstr ("k0", address); + const char *k0_name = "f10"; if (k_semi) { @@ -1447,7 +1460,7 @@ static void append_glyph (struct it *); static void produce_stretch_glyph (struct it *); static void append_composite_glyph (struct it *); static void produce_composite_glyph (struct it *); -static void append_glyphless_glyph (struct it *, int, char *); +static void append_glyphless_glyph (struct it *, int, const char *); static void produce_glyphless_glyph (struct it *, int, Lisp_Object); /* Append glyphs to IT's glyph_row. Called from produce_glyphs for @@ -1815,7 +1828,7 @@ produce_composite_glyph (struct it *it) comes from it->nglyphs bytes). */ static void -append_glyphless_glyph (struct it *it, int face_id, char *str) +append_glyphless_glyph (struct it *it, int face_id, const char *str) { struct glyph *glyph, *end; int i; @@ -1890,7 +1903,8 @@ produce_glyphless_glyph (struct it *it, int for_no_font, Lisp_Object acronym) { int face_id; int len; - char buf[9], *str = " "; + char buf[9]; + char const *str = " "; /* Get a face ID for the glyph by utilizing a cache (the same way as done for `escape-glyph' in get_next_display_element). */ @@ -2109,7 +2123,8 @@ turn_on_face (struct frame *f, int face_id) if (tty->TN_max_colors > 0) { - char *ts, *p; + const char *ts; + char *p; ts = tty->standout_mode ? tty->TS_set_background : tty->TS_set_foreground; if (fg >= 0 && ts) @@ -3519,10 +3534,10 @@ use the Bourne shell command `TERM=... export TERM' (C-shell:\n\ If it were in the termcap entry, it would confuse other programs. */ if (!tty->TS_set_window) { - p = tty->TS_termcap_modes; - while (*p && strcmp (p, "\033v ")) - p++; - if (*p) + const char *m = tty->TS_termcap_modes; + while (*m && strcmp (m, "\033v ")) + m++; + if (*m) tty->TS_set_window = "\033v%C %C %C %C "; } /* Termcap entry often fails to have :in: flag */ diff --git a/src/termchar.h b/src/termchar.h index 277a96932b4..035974a8ce6 100644 --- a/src/termchar.h +++ b/src/termchar.h @@ -84,58 +84,58 @@ struct tty_display_info /* Strings, numbers and flags taken from the termcap entry. */ - char *TS_ins_line; /* "al" */ - char *TS_ins_multi_lines; /* "AL" (one parameter, # lines to insert) */ - char *TS_bell; /* "bl" */ - char *TS_clr_to_bottom; /* "cd" */ - char *TS_clr_line; /* "ce", clear to end of line */ - char *TS_clr_frame; /* "cl" */ - char *TS_set_scroll_region; /* "cs" (2 params, first line and last line) */ - char *TS_set_scroll_region_1; /* "cS" (4 params: total lines, + const char *TS_ins_line; /* "al" */ + const char *TS_ins_multi_lines; /* "AL" (one parameter, # lines to insert) */ + const char *TS_bell; /* "bl" */ + const char *TS_clr_to_bottom; /* "cd" */ + const char *TS_clr_line; /* "ce", clear to end of line */ + const char *TS_clr_frame; /* "cl" */ + const char *TS_set_scroll_region; /* "cs" (2 params, first line and last line) */ + const char *TS_set_scroll_region_1; /* "cS" (4 params: total lines, lines above scroll region, lines below it, total lines again) */ - char *TS_del_char; /* "dc" */ - char *TS_del_multi_chars; /* "DC" (one parameter, # chars to delete) */ - char *TS_del_line; /* "dl" */ - char *TS_del_multi_lines; /* "DL" (one parameter, # lines to delete) */ - char *TS_delete_mode; /* "dm", enter character-delete mode */ - char *TS_end_delete_mode; /* "ed", leave character-delete mode */ - char *TS_end_insert_mode; /* "ei", leave character-insert mode */ - char *TS_ins_char; /* "ic" */ - char *TS_ins_multi_chars; /* "IC" (one parameter, # chars to insert) */ - char *TS_insert_mode; /* "im", enter character-insert mode */ - char *TS_pad_inserted_char; /* "ip". Just padding, no commands. */ - char *TS_end_keypad_mode; /* "ke" */ - char *TS_keypad_mode; /* "ks" */ - char *TS_pad_char; /* "pc", char to use as padding */ - char *TS_repeat; /* "rp" (2 params, # times to repeat + const char *TS_del_char; /* "dc" */ + const char *TS_del_multi_chars; /* "DC" (one parameter, # chars to delete) */ + const char *TS_del_line; /* "dl" */ + const char *TS_del_multi_lines; /* "DL" (one parameter, # lines to delete) */ + const char *TS_delete_mode; /* "dm", enter character-delete mode */ + const char *TS_end_delete_mode; /* "ed", leave character-delete mode */ + const char *TS_end_insert_mode; /* "ei", leave character-insert mode */ + const char *TS_ins_char; /* "ic" */ + const char *TS_ins_multi_chars; /* "IC" (one parameter, # chars to insert) */ + const char *TS_insert_mode; /* "im", enter character-insert mode */ + const char *TS_pad_inserted_char; /* "ip". Just padding, no commands. */ + const char *TS_end_keypad_mode; /* "ke" */ + const char *TS_keypad_mode; /* "ks" */ + const char *TS_pad_char; /* "pc", char to use as padding */ + const char *TS_repeat; /* "rp" (2 params, # times to repeat and character to be repeated) */ - char *TS_end_standout_mode; /* "se" */ - char *TS_fwd_scroll; /* "sf" */ - char *TS_standout_mode; /* "so" */ - char *TS_rev_scroll; /* "sr" */ - char *TS_end_termcap_modes; /* "te" */ - char *TS_termcap_modes; /* "ti" */ - char *TS_visible_bell; /* "vb" */ - char *TS_cursor_normal; /* "ve" */ - char *TS_cursor_visible; /* "vs" */ - char *TS_cursor_invisible; /* "vi" */ - char *TS_set_window; /* "wi" (4 params, start and end of window, + const char *TS_end_standout_mode; /* "se" */ + const char *TS_fwd_scroll; /* "sf" */ + const char *TS_standout_mode; /* "so" */ + const char *TS_rev_scroll; /* "sr" */ + const char *TS_end_termcap_modes; /* "te" */ + const char *TS_termcap_modes; /* "ti" */ + const char *TS_visible_bell; /* "vb" */ + const char *TS_cursor_normal; /* "ve" */ + const char *TS_cursor_visible; /* "vs" */ + const char *TS_cursor_invisible; /* "vi" */ + const char *TS_set_window; /* "wi" (4 params, start and end of window, each as vpos and hpos) */ - char *TS_enter_bold_mode; /* "md" -- turn on bold (extra bright mode). */ - char *TS_enter_dim_mode; /* "mh" -- turn on half-bright mode. */ - char *TS_enter_blink_mode; /* "mb" -- enter blinking mode. */ - char *TS_enter_reverse_mode; /* "mr" -- enter reverse video mode. */ - char *TS_exit_underline_mode; /* "us" -- start underlining. */ - char *TS_enter_underline_mode; /* "ue" -- end underlining. */ + const char *TS_enter_bold_mode; /* "md" -- turn on bold (extra bright mode). */ + const char *TS_enter_dim_mode; /* "mh" -- turn on half-bright mode. */ + const char *TS_enter_blink_mode; /* "mb" -- enter blinking mode. */ + const char *TS_enter_reverse_mode; /* "mr" -- enter reverse video mode. */ + const char *TS_exit_underline_mode; /* "us" -- start underlining. */ + const char *TS_enter_underline_mode; /* "ue" -- end underlining. */ /* "as"/"ae" -- start/end alternate character set. Not really supported, yet. */ - char *TS_enter_alt_charset_mode; - char *TS_exit_alt_charset_mode; + const char *TS_enter_alt_charset_mode; + const char *TS_exit_alt_charset_mode; - char *TS_exit_attribute_mode; /* "me" -- switch appearances off. */ + const char *TS_exit_attribute_mode; /* "me" -- switch appearances off. */ /* Value of the "NC" (no_color_video) capability, or 0 if not present. */ int TN_no_color_video; @@ -147,12 +147,12 @@ struct tty_display_info int TN_max_pairs; /* "op" -- SVr4 set default pair to its original value. */ - char *TS_orig_pair; + const char *TS_orig_pair; /* "AF"/"AB" or "Sf"/"Sb"-- set ANSI or SVr4 foreground/background color. 1 param, the color index. */ - char *TS_set_foreground; - char *TS_set_background; + const char *TS_set_foreground; + const char *TS_set_background; int TF_hazeltine; /* termcap hz flag. */ int TF_insmode_motion; /* termcap mi flag: can move while in insert mode. */ @@ -210,4 +210,3 @@ extern struct tty_display_info *tty_list; : (abort(), (struct tty_display_info *) 0)) #define CURTTY() FRAME_TTY (SELECTED_FRAME()) -