X-Git-Url: https://git.draconx.ca/gitweb/upkg.git/blobdiff_plain/aa3d8014ba02b49656689d1b4951ea79de76a414..HEAD:/src/uobject/package.c
diff --git a/src/uobject/package.c b/src/uobject/package.c
index 2da23b3..30a42cc 100644
--- a/src/uobject/package.c
+++ b/src/uobject/package.c
@@ -1,21 +1,22 @@
/*
- * upkg: tool for manipulating Unreal Tournament packages.
- * Copyright (C) 2009 Nick Bowler
+ * upkg: tool for manipulating Unreal Tournament packages.
+ * Copyright © 2009-2011, 2022 Nick Bowler
*
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
*
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
*
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
*/
+#include
#include
#include
#include
@@ -37,13 +38,6 @@ struct upkg_priv {
G_DEFINE_TYPE(UPkg, u_pkg, G_TYPE_TYPE_MODULE);
-/* Package search path. */
-static char *search_path;
-static size_t search_path_sz;
-
-/* List of package file extensions, in descending order of precedence. */
-static const char u_pkg_exts[][5] = { ".u", ".utx", ".umx", ".uax", ".unr" };
-
static char *str_cpy_lower(char *dst, const char *src)
{
size_t i;
@@ -55,25 +49,6 @@ static char *str_cpy_lower(char *dst, const char *src)
return dst;
}
-static int str_cmp_lower(const char *s1, const char *s2)
-{
- size_t i;
-
- for (i = 0; s1[i] && s2[i]; i++) {
- int c1 = tolower(s1[i]), c2 = tolower(s2[i]);
- if (c1 < c2)
- return -1;
- if (c1 > c2)
- return 1;
- }
-
- if (s1[i])
- return 1;
- if (s2[i])
- return -1;
- return 0;
-}
-
static void dl_print_errors(const char *prefix)
{
const char *err;
@@ -165,55 +140,6 @@ static void u_pkg_class_init(UPkgClass *class)
objclass->finalize = u_pkg_finalize;
}
-static int expand_search_path(size_t need)
-{
- size_t want = search_path_sz;
- if (want == 0) want = 1;
-
- while (want < need)
- want *= 2;
-
- if (want > search_path_sz) {
- char *new = realloc(search_path, want);
- if (!new) {
- return -1;
- }
-
- search_path = new;
- search_path_sz = want;
- }
-
- return 0;
-}
-
-const char *u_pkg_get_search_path(void)
-{
- return search_path ? search_path : "";
-}
-
-int u_pkg_set_search_path(const char *path)
-{
- if (expand_search_path(strlen(path)+1) != 0)
- return -1;
- strcpy(search_path, path);
- return 0;
-}
-
-int u_pkg_add_search_dir(const char *path)
-{
- size_t end = search_path ? strlen(search_path) : 0;
-
- if (end == 0) {
- return u_pkg_set_search_path(path);
- }
-
- if (expand_search_path(end + strlen(path) + 2) != 0)
- return -1;
- search_path[end] = LT_PATHSEP_CHAR;
- strcpy(search_path+end+1, path);
- return 0;
-}
-
GTypeModule *u_pkg_open(const char *name)
{
g_return_val_if_fail(name != NULL, NULL);
@@ -232,3 +158,10 @@ GTypeModule *u_pkg_open(const char *name)
mod->name = str_cpy_lower(pkgname, name);
return mod;
}
+
+int u_pkg_is_native(GTypeModule *m)
+{
+ struct upkg_priv *priv = U_PKG_GET_PRIV(m);
+
+ return !!priv->native;
+}