X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Ftinfo%2Fcomp_parse.c;h=649731346395cb7a0b6346f141bc195c33c51e25;hp=a00eea0d99d797023dbd5bd4997d9ffe5c0887bf;hb=d4d1d81ab6fc1ad681ff120d925099f947fefcf3;hpb=dfaa1a3001fd447819f5edc2e523acc1a04f1440 diff --git a/ncurses/tinfo/comp_parse.c b/ncurses/tinfo/comp_parse.c index a00eea0d..64973134 100644 --- a/ncurses/tinfo/comp_parse.c +++ b/ncurses/tinfo/comp_parse.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. * + * Copyright (c) 1998-2010,2011 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 * @@ -35,15 +35,10 @@ /* * comp_parse.c -- parser driver loop and use handling. * - * _nc_read_entry_source(FILE *, literal, bool, bool (*hook)()) - * _nc_resolve_uses2(void) - * _nc_free_entries(void) - * * Use this code by calling _nc_read_entry_source() on as many source * files as you like (either terminfo or termcap syntax). If you * want use-resolution, call _nc_resolve_uses2(). To free the list * storage, do _nc_free_entries(). - * */ #include @@ -51,9 +46,8 @@ #include #include -#include -MODULE_ID("$Id: comp_parse.c,v 1.70 2009/07/18 20:38:52 tom Exp $") +MODULE_ID("$Id: comp_parse.c,v 1.74 2011/07/25 22:46:47 tom Exp $") static void sanity_check2(TERMTYPE *, bool); NCURSES_IMPEXP void NCURSES_API(*_nc_check_termtype2) (TERMTYPE *, bool) = sanity_check2; @@ -62,6 +56,8 @@ NCURSES_IMPEXP void NCURSES_API(*_nc_check_termtype2) (TERMTYPE *, bool) = sanit static void sanity_check(TERMTYPE *); NCURSES_IMPEXP void NCURSES_API(*_nc_check_termtype) (TERMTYPE *) = sanity_check; +static void fixup_acsc(TERMTYPE *, bool); + static void enqueue(ENTRY * ep) /* add an entry to the in-core list */ @@ -275,7 +271,7 @@ _nc_resolve_uses2(bool fullresolve, bool literal) unresolved++; total_unresolved++; - _nc_curr_line = lookline; + _nc_curr_line = (int) lookline; _nc_warning("resolution of use=%s failed", lookfor); qp->uses[i].link = 0; } @@ -377,9 +373,9 @@ _nc_resolve_uses2(bool fullresolve, bool literal) if (_nc_check_termtype != 0) { _nc_curr_col = -1; for_entry_list(qp) { - _nc_curr_line = qp->startline; + _nc_curr_line = (int) qp->startline; _nc_set_type(_nc_first_name(qp->tterm.term_names)); - _nc_check_termtype2(&qp->tterm, literal); + fixup_acsc(&qp->tterm, literal); } DEBUG(2, ("SANITY CHECK FINISHED")); } @@ -403,6 +399,17 @@ _nc_resolve_uses(bool fullresolve) #undef CUR #define CUR tp-> +static void +fixup_acsc(TERMTYPE *tp, bool literal) +{ + if (!literal) { + if (acs_chars == 0 + && enter_alt_charset_mode != 0 + && exit_alt_charset_mode != 0) + acs_chars = strdup(VT_ACSC); + } +} + static void sanity_check2(TERMTYPE *tp, bool literal) { @@ -429,10 +436,7 @@ sanity_check2(TERMTYPE *tp, bool literal) * prefer to bypass it... */ if (!literal) { - if (acs_chars == 0 - && enter_alt_charset_mode != 0 - && exit_alt_charset_mode != 0) - acs_chars = strdup(VT_ACSC); + fixup_acsc(tp, literal); ANDMISSING(enter_alt_charset_mode, acs_chars); ANDMISSING(exit_alt_charset_mode, acs_chars); } @@ -475,7 +479,6 @@ _nc_leaks_tic(void) { _nc_alloc_entry_leaks(); _nc_captoinfo_leaks(); - _nc_comp_captab_leaks(); _nc_comp_scan_leaks(); #if BROKEN_LINKER || USE_REENTRANT _nc_names_leaks();