ncurses 5.7 - patch 20090728
[ncurses.git] / ncurses / tinfo / parse_entry.c
index 45f9c64c26ab1b99f5f63e33baa93d9bb3f5ffc5..6e59775b7bd70831fc54271e8d89670402127057 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2008,2009 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            *
@@ -48,7 +48,7 @@
 #include <tic.h>
 #include <term_entry.h>
 
-MODULE_ID("$Id: parse_entry.c,v 1.67 2008/08/03 20:10:45 tom Exp $")
+MODULE_ID("$Id: parse_entry.c,v 1.71 2009/07/11 18:14:21 tom Exp $")
 
 #ifdef LINT
 static short const parametrized[] =
@@ -84,13 +84,13 @@ _nc_extend_names(ENTRY * entryp, char *name, int token_type)
     case NUMBER:
        first = tp->ext_Booleans;
        last = tp->ext_Numbers + first;
-       offset = tp->ext_Booleans + tp->ext_Numbers;
+       offset = (unsigned) (tp->ext_Booleans + tp->ext_Numbers);
        tindex = tp->num_Numbers;
        break;
     case STRING:
-       first = tp->ext_Booleans + tp->ext_Numbers;
+       first = (unsigned) (tp->ext_Booleans + tp->ext_Numbers);
        last = tp->ext_Strings + first;
-       offset = tp->ext_Booleans + tp->ext_Numbers + tp->ext_Strings;
+       offset = (unsigned) (tp->ext_Booleans + tp->ext_Numbers + tp->ext_Strings);
        tindex = tp->num_Strings;
        break;
     case CANCEL:
@@ -137,27 +137,31 @@ _nc_extend_names(ENTRY * entryp, char *name, int token_type)
            break;
        }
     }
+
+#define for_each_value(max) \
+       for (last = (unsigned) (max - 1); last > tindex; last--)
+
     if (!found) {
        switch (token_type) {
        case BOOLEAN:
-           tp->ext_Booleans += 1;
-           tp->num_Booleans += 1;
+           tp->ext_Booleans++;
+           tp->num_Booleans++;
            tp->Booleans = typeRealloc(NCURSES_SBOOL, tp->num_Booleans, tp->Booleans);
-           for (last = tp->num_Booleans - 1; last > tindex; last--)
+           for_each_value(tp->num_Booleans)
                tp->Booleans[last] = tp->Booleans[last - 1];
            break;
        case NUMBER:
-           tp->ext_Numbers += 1;
-           tp->num_Numbers += 1;
+           tp->ext_Numbers++;
+           tp->num_Numbers++;
            tp->Numbers = typeRealloc(short, tp->num_Numbers, tp->Numbers);
-           for (last = tp->num_Numbers - 1; last > tindex; last--)
+           for_each_value(tp->num_Numbers)
                tp->Numbers[last] = tp->Numbers[last - 1];
            break;
        case STRING:
-           tp->ext_Strings += 1;
-           tp->num_Strings += 1;
+           tp->ext_Strings++;
+           tp->num_Strings++;
            tp->Strings = typeRealloc(char *, tp->num_Strings, tp->Strings);
-           for (last = tp->num_Strings - 1; last > tindex; last--)
+           for_each_value(tp->num_Strings)
                tp->Strings[last] = tp->Strings[last - 1];
            break;
        }
@@ -170,7 +174,7 @@ _nc_extend_names(ENTRY * entryp, char *name, int token_type)
 
     temp.nte_name = tp->ext_Names[offset];
     temp.nte_type = token_type;
-    temp.nte_index = tindex;
+    temp.nte_index = (short) tindex;
     temp.nte_link = -1;
 
     return &temp;
@@ -379,16 +383,14 @@ _nc_parse_entry(struct entry *entryp, int literal, bool silent)
                    && !strcmp("ma", _nc_curr_token.tk_name)) {
                    /* tell max_attributes from arrow_key_map */
                    entry_ptr = _nc_find_type_entry("ma", NUMBER,
-                                                   _nc_get_table(_nc_syntax
-                                                                 != 0));
+                                                   _nc_syntax != 0);
                    assert(entry_ptr != 0);
 
                } else if (token_type == STRING
                           && !strcmp("MT", _nc_curr_token.tk_name)) {
                    /* map terminfo's string MT to MT */
                    entry_ptr = _nc_find_type_entry("MT", STRING,
-                                                   _nc_get_table(_nc_syntax
-                                                                 != 0));
+                                                   _nc_syntax != 0);
                    assert(entry_ptr != 0);
 
                } else if (token_type == BOOLEAN
@@ -444,7 +446,7 @@ _nc_parse_entry(struct entry *entryp, int literal, bool silent)
 
            case NUMBER:
                entryp->tterm.Numbers[entry_ptr->nte_index] =
-                   _nc_curr_token.tk_valnumber;
+                   (short) _nc_curr_token.tk_valnumber;
                break;
 
            case STRING:
@@ -459,7 +461,7 @@ _nc_parse_entry(struct entry *entryp, int literal, bool silent)
            default:
                if (!silent)
                    _nc_warning("unknown token type");
-               _nc_panic_mode((_nc_syntax == SYN_TERMCAP) ? ':' : ',');
+               _nc_panic_mode((char) ((_nc_syntax == SYN_TERMCAP) ? ':' : ','));
                continue;
            }
        }                       /* end else cur_token.name != "use" */
@@ -479,7 +481,7 @@ _nc_parse_entry(struct entry *entryp, int literal, bool silent)
     if (!literal) {
        if (_nc_syntax == SYN_TERMCAP) {
            bool has_base_entry = FALSE;
-           int i;
+           unsigned i;
 
            /*
             * Don't insert defaults if this is a `+' entry meant only
@@ -554,8 +556,8 @@ append_acs0(string_desc * dst, int code, int src)
 {
     if (src != 0) {
        char temp[3];
-       temp[0] = code;
-       temp[1] = src;
+       temp[0] = (char) code;
+       temp[1] = (char) src;
        temp[2] = 0;
        _nc_safe_strcat(dst, temp);
     }
@@ -788,7 +790,7 @@ postprocess_termcap(TERMTYPE *tp, bool has_base)
        for (base = other_non_function_keys;
             (cp = strchr(base, ',')) != 0;
             base = cp + 1) {
-           size_t len = cp - base;
+           size_t len = (unsigned) (cp - base);
 
            for (ap = ko_xlate; ap->from; ap++) {
                if (len == strlen(ap->from)