Commit 0cc5ae33b5319a3ce2759ec9ea65c6c05fda4fb3

Ran Benita 2012-08-10T13:30:44

Remove xkbcomp/misc.c The KeyName functions are more appropriate in keycodes.c. The ProcessIncludeFile can go to path.c along with the other functions dealing with includes. Signed-off-by: Ran Benita <ran234@gmail.com>

diff --git a/Makefile.am b/Makefile.am
index 1235510..48bccca 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -46,7 +46,6 @@ libxkbcommon_la_SOURCES = \
 	src/xkbcomp/expr.h \
 	src/xkbcomp/keycodes.c \
 	src/xkbcomp/keytypes.c \
-	src/xkbcomp/misc.c \
 	src/xkbcomp/parser.y \
 	src/xkbcomp/parseutils.c \
 	src/xkbcomp/parseutils.h \
diff --git a/src/xkbcomp/keycodes.c b/src/xkbcomp/keycodes.c
index 59cc444..208764a 100644
--- a/src/xkbcomp/keycodes.c
+++ b/src/xkbcomp/keycodes.c
@@ -1004,3 +1004,55 @@ err_info:
     ClearKeyNamesInfo(&info);
     return false;
 }
+
+/**
+ * Find the key with the given name.
+ *
+ * @param keymap The keymap to search in.
+ * @param name The 4-letter name of the key as a long.
+ * @param use_aliases true if the key aliases should be searched too.
+ * @param start_from Keycode to start searching from.
+ *
+ * @return the key if it is found, NULL otherwise.
+ */
+struct xkb_key *
+FindNamedKey(struct xkb_keymap *keymap, unsigned long name,
+             bool use_aliases, xkb_keycode_t start_from)
+{
+    struct xkb_key *key;
+
+    if (start_from < keymap->min_key_code)
+        start_from = keymap->min_key_code;
+    else if (start_from > keymap->max_key_code)
+        return NULL;
+
+    xkb_foreach_key_from(key, keymap, start_from)
+        if (KeyNameToLong(key->name) == name)
+            return key;
+
+    if (use_aliases) {
+        unsigned long new_name;
+        if (FindKeyNameForAlias(keymap, name, &new_name))
+            return FindNamedKey(keymap, new_name, false, 0);
+    }
+
+    return NULL;
+}
+
+bool
+FindKeyNameForAlias(struct xkb_keymap *keymap, unsigned long lname,
+                    unsigned long *real_name)
+{
+    char name[XkbKeyNameLength];
+    struct xkb_key_alias *a;
+
+    LongToKeyName(lname, name);
+    darray_foreach(a, keymap->key_aliases) {
+        if (strncmp(name, a->alias, XkbKeyNameLength) == 0) {
+            *real_name = KeyNameToLong(a->real);
+            return true;
+        }
+    }
+
+    return false;
+}
diff --git a/src/xkbcomp/misc.c b/src/xkbcomp/misc.c
deleted file mode 100644
index 011a2be..0000000
--- a/src/xkbcomp/misc.c
+++ /dev/null
@@ -1,160 +0,0 @@
-/************************************************************
- * Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of Silicon Graphics not be
- * used in advertising or publicity pertaining to distribution
- * of the software without specific prior written permission.
- * Silicon Graphics makes no representation about the suitability
- * of this software for any purpose. It is provided "as is"
- * without any express or implied warranty.
- *
- * SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- * GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
- * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION  WITH
- * THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- ********************************************************/
-
-#include "xkbcomp-priv.h"
-#include "path.h"
-#include "parseutils.h"
-
-/**
- * Open the file given in the include statement and parse it's content.
- * If the statement defines a specific map to use, this map is returned in
- * file_rtrn. Otherwise, the default map is returned.
- *
- * @param ctx The ctx containing include paths
- * @param stmt The include statement, specifying the file name to look for.
- * @param file_type Type of file (FILE_TYPE_KEYCODES, etc.)
- * @param file_rtrn Returns the key map to be used.
- * @param merge_rtrn Always returns stmt->merge.
- *
- * @return true on success or false otherwise.
- */
-bool
-ProcessIncludeFile(struct xkb_context *ctx,
-                   IncludeStmt * stmt,
-                   enum xkb_file_type file_type,
-                   XkbFile ** file_rtrn, enum merge_mode *merge_rtrn)
-{
-    FILE *file;
-    XkbFile *rtrn, *mapToUse, *next;
-
-    file = XkbFindFileInPath(ctx, stmt->file, file_type, NULL);
-    if (file == NULL) {
-        log_err(ctx, "Can't find file \"%s\" for %s include\n", stmt->file,
-                XkbDirectoryForInclude(file_type));
-        return false;
-    }
-
-    if (!XKBParseFile(ctx, file, stmt->file, &rtrn)) {
-        log_err(ctx, "Error interpreting include file \"%s\"\n", stmt->file);
-        fclose(file);
-        return false;
-    }
-    fclose(file);
-
-    mapToUse = rtrn;
-    if (stmt->map != NULL) {
-        while (mapToUse)
-        {
-            next = (XkbFile *) mapToUse->common.next;
-            mapToUse->common.next = NULL;
-            if (streq(mapToUse->name, stmt->map) &&
-                mapToUse->file_type == file_type) {
-                FreeXKBFile(next);
-                break;
-            }
-            else {
-                FreeXKBFile(mapToUse);
-            }
-            mapToUse = next;
-        }
-        if (!mapToUse) {
-            log_err(ctx, "No %s named \"%s\" in the include file \"%s\"\n",
-                    FileTypeText(file_type), stmt->map, stmt->file);
-            return false;
-        }
-    }
-    else if (rtrn->common.next) {
-        log_lvl(ctx, 5,
-                "No map in include statement, but \"%s\" contains several; "
-                "Using first defined map, \"%s\"\n",
-                stmt->file, rtrn->name);
-    }
-    if (mapToUse->file_type != file_type) {
-        log_err(ctx,
-                "Include file wrong type (expected %s, got %s); "
-                "Include file \"%s\" ignored\n",
-                FileTypeText(file_type), FileTypeText(mapToUse->file_type),
-                stmt->file);
-        return false;
-    }
-    /* FIXME: we have to check recursive includes here (or somewhere) */
-
-    *file_rtrn = mapToUse;
-    *merge_rtrn = stmt->merge;
-    return true;
-}
-
-/**
- * Find the key with the given name.
- *
- * @param keymap The keymap to search in.
- * @param name The 4-letter name of the key as a long.
- * @param use_aliases true if the key aliases should be searched too.
- * @param start_from Keycode to start searching from.
- *
- * @return the key if it is found, NULL otherwise.
- */
-struct xkb_key *
-FindNamedKey(struct xkb_keymap *keymap, unsigned long name,
-             bool use_aliases, xkb_keycode_t start_from)
-{
-    struct xkb_key *key;
-
-    if (start_from < keymap->min_key_code)
-        start_from = keymap->min_key_code;
-    else if (start_from > keymap->max_key_code)
-        return NULL;
-
-    xkb_foreach_key_from(key, keymap, start_from)
-        if (KeyNameToLong(key->name) == name)
-            return key;
-
-    if (use_aliases) {
-        unsigned long new_name;
-        if (FindKeyNameForAlias(keymap, name, &new_name))
-            return FindNamedKey(keymap, new_name, false, 0);
-    }
-
-    return NULL;
-}
-
-bool
-FindKeyNameForAlias(struct xkb_keymap *keymap, unsigned long lname,
-                    unsigned long *real_name)
-{
-    char name[XkbKeyNameLength];
-    struct xkb_key_alias *a;
-
-    LongToKeyName(lname, name);
-    darray_foreach(a, keymap->key_aliases) {
-        if (strncmp(name, a->alias, XkbKeyNameLength) == 0) {
-            *real_name = KeyNameToLong(a->real);
-            return true;
-        }
-    }
-
-    return false;
-}
diff --git a/src/xkbcomp/path.c b/src/xkbcomp/path.c
index 0ecdd7f..5089f2c 100644
--- a/src/xkbcomp/path.c
+++ b/src/xkbcomp/path.c
@@ -28,6 +28,7 @@
 #include <limits.h>
 
 #include "path.h"
+#include "parseutils.h"
 
 /**
  * Extract the first token from an include statement.
@@ -199,3 +200,82 @@ XkbFindFileInPath(struct xkb_context *ctx, const char *name,
         *pathRtrn = strdup(buf);
     return file;
 }
+
+/**
+ * Open the file given in the include statement and parse it's content.
+ * If the statement defines a specific map to use, this map is returned in
+ * file_rtrn. Otherwise, the default map is returned.
+ *
+ * @param ctx The ctx containing include paths
+ * @param stmt The include statement, specifying the file name to look for.
+ * @param file_type Type of file (FILE_TYPE_KEYCODES, etc.)
+ * @param file_rtrn Returns the key map to be used.
+ * @param merge_rtrn Always returns stmt->merge.
+ *
+ * @return true on success or false otherwise.
+ */
+bool
+ProcessIncludeFile(struct xkb_context *ctx,
+                   IncludeStmt * stmt,
+                   enum xkb_file_type file_type,
+                   XkbFile ** file_rtrn, enum merge_mode *merge_rtrn)
+{
+    FILE *file;
+    XkbFile *rtrn, *mapToUse, *next;
+
+    file = XkbFindFileInPath(ctx, stmt->file, file_type, NULL);
+    if (file == NULL) {
+        log_err(ctx, "Can't find file \"%s\" for %s include\n", stmt->file,
+                XkbDirectoryForInclude(file_type));
+        return false;
+    }
+
+    if (!XKBParseFile(ctx, file, stmt->file, &rtrn)) {
+        log_err(ctx, "Error interpreting include file \"%s\"\n", stmt->file);
+        fclose(file);
+        return false;
+    }
+    fclose(file);
+
+    mapToUse = rtrn;
+    if (stmt->map != NULL) {
+        while (mapToUse)
+        {
+            next = (XkbFile *) mapToUse->common.next;
+            mapToUse->common.next = NULL;
+            if (streq(mapToUse->name, stmt->map) &&
+                mapToUse->file_type == file_type) {
+                FreeXKBFile(next);
+                break;
+            }
+            else {
+                FreeXKBFile(mapToUse);
+            }
+            mapToUse = next;
+        }
+        if (!mapToUse) {
+            log_err(ctx, "No %s named \"%s\" in the include file \"%s\"\n",
+                    FileTypeText(file_type), stmt->map, stmt->file);
+            return false;
+        }
+    }
+    else if (rtrn->common.next) {
+        log_lvl(ctx, 5,
+                "No map in include statement, but \"%s\" contains several; "
+                "Using first defined map, \"%s\"\n",
+                stmt->file, rtrn->name);
+    }
+    if (mapToUse->file_type != file_type) {
+        log_err(ctx,
+                "Include file wrong type (expected %s, got %s); "
+                "Include file \"%s\" ignored\n",
+                FileTypeText(file_type), FileTypeText(mapToUse->file_type),
+                stmt->file);
+        return false;
+    }
+    /* FIXME: we have to check recursive includes here (or somewhere) */
+
+    *file_rtrn = mapToUse;
+    *merge_rtrn = stmt->merge;
+    return true;
+}