input-eventd: handle new version for input-tables.h
authorSimon Guinot <simon@sequanux.org>
Mon, 13 Jun 2011 13:42:35 +0000 (15:42 +0200)
committerSimon Guinot <simon@sequanux.org>
Mon, 13 Jun 2011 13:42:35 +0000 (15:42 +0200)
Use count information from table_index.

input-eventd/config.c

index 8a097e8..56c7efa 100644 (file)
@@ -163,7 +163,7 @@ static int string_to_type(const char *str, uint16_t *type)
                        return 0;
 
 err:
-       fprintf(stderr, "invalid type: %s\n", str);
+       fprintf(stderr, "invalid event type: %s\n", str);
 
        return -1;
 }
@@ -176,23 +176,25 @@ err:
  */
 static int string_to_code(const char *str, uint16_t type, uint16_t *code)
 {
-       struct input_entry *event_codes = NULL;
+       struct input_entry *ev_codes = NULL;
+       uint16_t ev_codes_count = 0;
        char *end;
        int i;
 
        /* Get event codes table from type */
-       for (i = 0; table_index[i].codes; i++)
+       for (i = 0; ARRAY_SIZE(table_index); i++)
                if (table_index[i].type == type) {
-                       event_codes = table_index[i].codes;
+                       ev_codes = table_index[i].codes;
+                       ev_codes_count = table_index[i].count;
                        break;
                }
-       if (!event_codes)
+       if (!ev_codes)
                goto err;
 
        /* Get event code from linux/input.h definition */
-       for (i = 0; event_codes[i].string[0] != '\0'; i++)
-               if (strcmp(str, event_codes[i].string) == 0) {
-                       *code = event_codes[i].value;
+       for (i = 0; i < ev_codes_count; i++)
+               if (strcmp(str, ev_codes[i].string) == 0) {
+                       *code = ev_codes[i].value;
                        return 0;
                }
 
@@ -204,12 +206,12 @@ static int string_to_code(const char *str, uint16_t type, uint16_t *code)
                goto err;
 
        /* Check converted event code number */
-       for (i = 0; event_codes[i].string[0] != '\0'; i++)
-               if (event_codes[i].value == *code)
+       for (i = 0; i < ev_codes_count; i++)
+               if (ev_codes[i].value == *code)
                        return 0;
 
 err:
-       fprintf(stderr, "invalid code: type=%d code=%s\n", type, str);
+       fprintf(stderr, "invalid event code: type=%d code=%s\n", type, str);
 
        return -1;
 }