X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Ftinfo%2Fcomp_parse.c;h=9a0ce487b167b38c6e8e31e46c5f8420bb117c23;hp=9060886b55a23d3fe543667fb615497445b7d63b;hb=5eb177874dea59107a1a2ea44f5d8f5bb99550b2;hpb=4e793faf6575b2297482f77b2bc3d18105c0fc76 diff --git a/ncurses/tinfo/comp_parse.c b/ncurses/tinfo/comp_parse.c index 9060886b..9a0ce487 100644 --- a/ncurses/tinfo/comp_parse.c +++ b/ncurses/tinfo/comp_parse.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. * + * Copyright (c) 1998-2013,2016 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 * @@ -47,7 +47,7 @@ #include -MODULE_ID("$Id: comp_parse.c,v 1.87 2013/05/25 20:20:08 tom Exp $") +MODULE_ID("$Id: comp_parse.c,v 1.92 2016/09/10 20:08:32 tom Exp $") static void sanity_check2(TERMTYPE *, bool); NCURSES_IMPEXP void NCURSES_API(*_nc_check_termtype2) (TERMTYPE *, bool) = sanity_check2; @@ -75,6 +75,8 @@ enqueue(ENTRY * ep) newp->last->next = newp; } +#define NAMEBUFFER_SIZE (MAX_NAME_SIZE + 2) + static char * force_bar(char *dst, char *src) { @@ -82,8 +84,8 @@ force_bar(char *dst, char *src) size_t len = strlen(src); if (len > MAX_NAME_SIZE) len = MAX_NAME_SIZE; - (void) strncpy(dst, src, len); - _nc_STRCPY(dst + len, "|", MAX_NAME_SIZE); + _nc_STRNCPY(dst, src, len); + _nc_STRCPY(dst + len, "|", NAMEBUFFER_SIZE - len); src = dst; } return src; @@ -107,8 +109,8 @@ static bool check_collisions(char *n1, char *n2, int counter) { char *pstart, *qstart, *pend, *qend; - char nc1[MAX_NAME_SIZE + 2]; - char nc2[MAX_NAME_SIZE + 2]; + char nc1[NAMEBUFFER_SIZE]; + char nc2[NAMEBUFFER_SIZE]; n1 = ForceBar(nc1, n1); n2 = ForceBar(nc2, n2); @@ -162,18 +164,15 @@ name_ending(char *name) static bool remove_collision(char *n1, char *n2) { - char *p1 = n1; char *p2 = n2; char *pstart, *qstart, *pend, *qend; bool removed = FALSE; #if NCURSES_USE_TERMCAP && NCURSES_XNAMES if ((_nc_syntax == SYN_TERMCAP) && _nc_user_definable) { - p1 = n1 = skip_index(n1); + n1 = skip_index(n1); p2 = n2 = skip_index(n2); } -#else - (void) p1; #endif for (pstart = n1; (pend = name_ending(pstart)); pstart = next_name(pend)) { @@ -486,12 +485,12 @@ _nc_resolve_uses2(bool fullresolve, bool literal) memset(&fake_tm, 0, sizeof(fake_tm)); fake_sp._term = &fake_tm; fake_tm.type = qp->tterm; - SP = &fake_sp; + _nc_set_screen(&fake_sp); set_curterm(&fake_tm); _nc_check_termtype2(&qp->tterm, literal); - SP = save_SP; + _nc_set_screen(save_SP); set_curterm(save_tm); } else { fixup_acsc(&qp->tterm, literal); @@ -550,6 +549,7 @@ sanity_check2(TERMTYPE *tp, bool literal) #endif /* __UNUSED__ */ PAIRED(enter_standout_mode, exit_standout_mode); PAIRED(enter_underline_mode, exit_underline_mode); + PAIRED(enter_italics_mode, exit_italics_mode); } /* we do this check/fix in postprocess_termcap(), but some packagers