From 7b7fa9198e6872739a50374aebe61b6444611438 Mon Sep 17 00:00:00 2001 From: Nick Bowler Date: Tue, 1 Mar 2011 23:55:06 -0500 Subject: [PATCH] upkg: Improve error reporting during package load. --- src/uobject/package.c | 7 +++++++ src/uobject/package.h | 3 +++ src/upkg.c | 16 ++++++++++++---- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/uobject/package.c b/src/uobject/package.c index 397d263..5b29afd 100644 --- a/src/uobject/package.c +++ b/src/uobject/package.c @@ -157,3 +157,10 @@ GTypeModule *u_pkg_open(const char *name) mod->name = str_cpy_lower(pkgname, name); return mod; } + +bool u_pkg_is_native(GTypeModule *m) +{ + struct upkg_priv *priv = U_PKG_GET_PRIV(m); + + return priv->native; +} diff --git a/src/uobject/package.h b/src/uobject/package.h index 32f76b8..47f6aa8 100644 --- a/src/uobject/package.h +++ b/src/uobject/package.h @@ -20,6 +20,7 @@ #define U_OBJECT_PACKAGE_H_ #include +#include #define U_PKG_TYPE (u_pkg_get_type()) #define U_PKG(obj) \ @@ -48,4 +49,6 @@ struct UPkgClass { GType u_pkg_get_type(void); GTypeModule *u_pkg_open(const char *name); +bool u_pkg_is_native(GTypeModule *pkg); + #endif diff --git a/src/upkg.c b/src/upkg.c index 1e2c662..19f1449 100644 --- a/src/upkg.c +++ b/src/upkg.c @@ -336,13 +336,21 @@ int main(int argc, char **argv) } pkg = u_pkg_open(pkgname); - if (!pkg) { - fprintf(stderr, "failed to open package!\n"); + if (!pkg || !g_type_module_use(pkg)) { + fprintf(stderr, "%s: %s: failed to open package.\n", + progname, pkgname); return EXIT_FAILURE; } - if (!g_type_module_use(pkg) || !U_PKG(pkg)->pkg) { - fprintf(stderr, "failed to load package: %s\n", pkg->name); + if (!U_PKG(pkg)->pkg) { + if (u_pkg_is_native(pkg)) { + fprintf(stderr, "%s: %s: not a UObject package.\n", + progname, pkgname); + } else { + fprintf(stderr, "%s: %s: package not found.\n", + progname, pkgname); + } + return EXIT_FAILURE; } -- 2.43.0