X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Ftinfo%2Fread_termcap.c;h=28512c252e2a4161a129df7d9efe99e1b2aca0df;hp=ba6e87dd745b105ef094dd81eea838d1332289e4;hb=7af63696972b12659832a1c3413d9ace9641c8f6;hpb=8b06e371ed1bce3dd6f37138e6becb5e1a562fe0 diff --git a/ncurses/tinfo/read_termcap.c b/ncurses/tinfo/read_termcap.c index ba6e87dd..28512c25 100644 --- a/ncurses/tinfo/read_termcap.c +++ b/ncurses/tinfo/read_termcap.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 1998-2011,2012 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 * @@ -56,7 +56,7 @@ #include #include -MODULE_ID("$Id: read_termcap.c,v 1.86 2012/02/22 22:40:24 tom Exp $") +MODULE_ID("$Id: read_termcap.c,v 1.90 2016/09/10 20:13:11 tom Exp $") #if !PURE_TERMINFO @@ -770,7 +770,7 @@ copy_tc_token(char *dst, const char *src, size_t len) dst = 0; break; } - *dst++ = ch; + *dst++ = (char) ch; } return dst; } @@ -791,13 +791,11 @@ _nc_tgetent(char *bp, char **sourcename, int *lineno, const char *name) int i; char pathbuf[PBUFSIZ]; /* holds raw path of filenames */ CGETENT_CONST char *pathvec[PVECSIZ]; /* point to names in pathbuf */ - CGETENT_CONST char **pvec; /* holds usable tail of path vector */ NCURSES_CONST char *termpath; string_desc desc; *lineno = 1; fname = pathvec; - pvec = pathvec; p = pathbuf; cp = use_terminfo_vars()? getenv("TERMCAP") : NULL; @@ -889,7 +887,7 @@ _nc_tgetent(char *bp, char **sourcename, int *lineno, const char *name) } if (ignore != TRUE) { list[count++] = tok; - pd = copy_tc_token(pd, tok, TBUFSIZ - (2 + pd - bp)); + pd = copy_tc_token(pd, tok, (size_t) (TBUFSIZ - (2 + pd - bp))); if (pd == 0) { i = -1; break; @@ -967,6 +965,7 @@ _nc_read_termcap_entry(const char *const tn, TERMTYPE *const tp) #endif #if USE_GETCAP char *p, tc[TBUFSIZ]; +#define MY_SIZE sizeof(tc) - 1 int status; static char *source; static int lineno; @@ -984,8 +983,8 @@ _nc_read_termcap_entry(const char *const tn, TERMTYPE *const tp) if (use_terminfo_vars() && (p = getenv("TERMCAP")) != 0 && !_nc_is_abs_path(p) && _nc_name_match(p, tn, "|:")) { /* TERMCAP holds a termcap entry */ - strncpy(tc, p, sizeof(tc) - 1); - tc[sizeof(tc) - 1] = '\0'; + _nc_STRNCPY(tc, p, MY_SIZE); + tc[MY_SIZE] = '\0'; _nc_set_source("TERMCAP"); } else { /* we're using getcap(3) */ @@ -1156,8 +1155,7 @@ _nc_read_termcap_entry(const char *const tn, TERMTYPE *const tp) * from the list. */ *tp = ep->tterm; - _nc_delink_entry(_nc_head, &(ep->tterm)); - free(ep); + _nc_free_entry(_nc_head, &(ep->tterm)); /* * OK, now try to write the type to user's terminfo directory.