[BACK]Return to term.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / lib / libterminfo

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/lib/libterminfo/term.c between version 1.3 and 1.6

version 1.3, 2010/02/05 12:31:56 version 1.6, 2010/02/11 09:42:03
Line 1 
Line 1 
 /* $NetBSD$ */  /* $NetBSD$ */
   
 /*  /*
  * Copyright (c) 2009 The NetBSD Foundation, Inc.   * Copyright (c) 2009, 2010 The NetBSD Foundation, Inc.
  *   *
  * This code is derived from software contributed to The NetBSD Foundation   * This code is derived from software contributed to The NetBSD Foundation
  * by Roy Marples.   * by Roy Marples.
Line 44  __RCSID("$NetBSD$");
Line 44  __RCSID("$NetBSD$");
 #include <term_private.h>  #include <term_private.h>
 #include <term.h>  #include <term.h>
   
 #define TERMINFO_DIRS "/usr/share/misc/terminfo:/etc/terminfo:/rescue/terminfo"  #define TERMINFO_DIRS           "/usr/share/misc/terminfo"
   
 static char database[PATH_MAX];  static char database[PATH_MAX];
 static char pathbuf[PATH_MAX];  static char pathbuf[PATH_MAX];
 const char *_ti_database;  const char *_ti_database;
   
   /* rescue.c is generated from /usr/src/share/terminfo/terminfo
    * at build time as an array of strings.
    * static const char *rescue_terms[] = {
    *      "ansi",
    *      "\002\005\000\141\156\163\151\000\000\000\043\000\141\156\163\151\057",
    *      NULL,
    *      NULL
    * };
    */
   
   #include "rescue.c"
   
 static int  static int
 _ti_readterm(TERMINAL *term, char *cap, size_t caplen, int flags)  _ti_readterm(TERMINAL *term, const char *cap, size_t caplen, int flags)
 {  {
         uint8_t ver;          uint8_t ver;
         uint16_t ind, num;          uint16_t ind, num;
Line 75  _ti_readterm(TERMINAL *term, char *cap, 
Line 87  _ti_readterm(TERMINAL *term, char *cap, 
         term->strs = calloc(TISTRMAX + 1, sizeof(char *));          term->strs = calloc(TISTRMAX + 1, sizeof(char *));
         if (term->strs == NULL)          if (term->strs == NULL)
                 goto err;                  goto err;
         term->_area = malloc(caplen);          term->_arealen = caplen;
           term->_area = malloc(term->_arealen);
         if (term->_area == NULL)          if (term->_area == NULL)
                 goto err;                  goto err;
         memcpy(term->_area, cap, caplen);          memcpy(term->_area, cap, term->_arealen);
   
         cap = term->_area;          cap = term->_area;
         len = le16dec(cap);          len = le16dec(cap);
Line 99  _ti_readterm(TERMINAL *term, char *cap, 
Line 112  _ti_readterm(TERMINAL *term, char *cap, 
         }          }
         len = le16dec(cap);          len = le16dec(cap);
         cap += sizeof(uint16_t);          cap += sizeof(uint16_t);
         term->desc = cap;          if (len == 0)
         cap += len;                  term->desc = NULL;
           else {
                   term->desc = cap;
                   cap += len;
           }
   
         num = le16dec(cap);          num = le16dec(cap);
         cap += sizeof(uint16_t);          cap += sizeof(uint16_t);
Line 279  _ti_getterm(TERMINAL *term, const char *
Line 296  _ti_getterm(TERMINAL *term, const char *
 {  {
         int r;          int r;
         char *e, h[PATH_MAX];          char *e, h[PATH_MAX];
           const char **p;
   
         _DIAGASSERT(term != NULL);          _DIAGASSERT(term != NULL);
         _DIAGASSERT(name != NULL);          _DIAGASSERT(name != NULL);
   
           database[0] = '\0';
         _ti_database = NULL;          _ti_database = NULL;
   
         e = getenv("TERMINFO");          e = getenv("TERMINFO");
         if (e != NULL)          if (e != NULL)
                 return _ti_dbgetterm(term, e, name, flags);                  return _ti_dbgetterm(term, e, name, flags);
Line 295  _ti_getterm(TERMINAL *term, const char *
Line 315  _ti_getterm(TERMINAL *term, const char *
                 if (r == 1)                  if (r == 1)
                         return 1;                          return 1;
         }          }
   
         return _ti_dbgettermp(term, TERMINFO_DIRS, name, flags);          r = _ti_dbgettermp(term, TERMINFO_DIRS, name, flags);
           if (r == 1)
                   return 1;
   
           for (p = rescue_terms; *p != NULL; p++, p++)
                   if (strcmp(name, *p) == 0) {
                           r = _ti_readterm(term, *(p + 1), 4096, flags);
                           break;
                   }
   
           return r;
 }  }
   
 void  void

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.6

CVSweb <webmaster@jp.NetBSD.org>