From c7949f41d0002e833f2977e66785795d6c6c1829 Mon Sep 17 00:00:00 2001 From: Nick Bowler Date: Sat, 8 Aug 2009 12:02:46 -0400 Subject: [PATCH] upkg: Print export flags. --- src/libupkg.c | 7 ++++++ src/upkg.c | 70 +++++++++++++++++++++++++++++++++++++++++++++++++-- src/upkg.h | 41 +++++++++++++++++++++++------- 3 files changed, 107 insertions(+), 11 deletions(-) diff --git a/src/libupkg.c b/src/libupkg.c index 6ee7ffa..45fda93 100644 --- a/src/libupkg.c +++ b/src/libupkg.c @@ -436,6 +436,13 @@ long upkg_export_find(struct upkg *pkg, const char *name) return -1; } +unsigned long upkg_export_flags(struct upkg *pkg, unsigned long idx) +{ + if (idx < pkg->export_count) + return pkg->priv->exports[idx].flags; + return 0; +} + const char *upkg_export_name(struct upkg *pkg, unsigned long idx) { if (idx < pkg->export_count) diff --git a/src/upkg.c b/src/upkg.c index a8c7c7e..8b1493e 100644 --- a/src/upkg.c +++ b/src/upkg.c @@ -82,7 +82,7 @@ void print_help(void) } } -void print_upkg_flags(const char *prefix, unsigned long flags) +static void print_upkg_flags(const char *prefix, unsigned long flags) { if (flags & UPKG_FLAG_ALLOW_DOWNLOAD) printf("%sAllowDownload\n", prefix); @@ -98,6 +98,70 @@ void print_upkg_flags(const char *prefix, unsigned long flags) printf("%sRequired\n", prefix); } +static void print_upkg_object_flags(const char *prefix, unsigned long flags) +{ + if (flags & UPKG_OBJ_FLAG_TRANSACTIONAL) + printf("%sTransactional\n", prefix); + if (flags & UPKG_OBJ_FLAG_UNREACHABLE) + printf("%sUnreachable\n", prefix); + if (flags & UPKG_OBJ_FLAG_PUBLIC) + printf("%sPublic\n", prefix); + if (flags & UPKG_OBJ_FLAG_TAG_IMPORT) + printf("%sImport\n", prefix); + if (flags & UPKG_OBJ_FLAG_TAG_EXPORT) + printf("%sTagExport\n", prefix); + if (flags & UPKG_OBJ_FLAG_SOURCE_MODIFIED) + printf("%sSourceModified\n", prefix); + if (flags & UPKG_OBJ_FLAG_TAG_GARBAGE) + printf("%sTagGarbage\n", prefix); + if (flags & UPKG_OBJ_FLAG_NEED_LOAD) + printf("%sNeedLoad\n", prefix); + if (flags & UPKG_OBJ_FLAG_HIGHLIGHT_NAME) + printf("%sHighlightName\n", prefix); + if (flags & UPKG_OBJ_FLAG_IN_SINGULAR_FUNC) + printf("%sInSingularFunc\n", prefix); + if (flags & UPKG_OBJ_FLAG_SUPPRESSED) + printf("%sSuppressed\n", prefix); + if (flags & UPKG_OBJ_FLAG_IN_END_STATE) + printf("%sInEndState\n", prefix); + if (flags & UPKG_OBJ_FLAG_TRANSIENT) + printf("%sTransient\n", prefix); + if (flags & UPKG_OBJ_FLAG_PRELOADING) + printf("%sPreloading\n", prefix); + if (flags & UPKG_OBJ_FLAG_LOAD_FOR_CLIENT) + printf("%sLoadForClient\n", prefix); + if (flags & UPKG_OBJ_FLAG_LOAD_FOR_SERVER) + printf("%sLoadForServer\n", prefix); + if (flags & UPKG_OBJ_FLAG_LOAD_FOR_EDIT) + printf("%sLoadForEdit\n", prefix); + if (flags & UPKG_OBJ_FLAG_STANDALONE) + printf("%sStandalone\n", prefix); + if (flags & UPKG_OBJ_FLAG_NOT_FOR_CLIENT) + printf("%sNotForClient\n", prefix); + if (flags & UPKG_OBJ_FLAG_NOT_FOR_SERVER) + printf("%sNotForServer\n", prefix); + if (flags & UPKG_OBJ_FLAG_NOT_FOR_EDIT) + printf("%sNotForEdit\n", prefix); + if (flags & UPKG_OBJ_FLAG_DESTROYED) + printf("%sDestroyed\n", prefix); + if (flags & UPKG_OBJ_FLAG_NEED_POST_LOAD) + printf("%sNeedPostLoad\n", prefix); + if (flags & UPKG_OBJ_FLAG_HAS_STACK) + printf("%sHasStack\n", prefix); + if (flags & UPKG_OBJ_FLAG_NATIVE) + printf("%sNative\n", prefix); + if (flags & UPKG_OBJ_FLAG_MARKED) + printf("%sMarked\n", prefix); + if (flags & UPKG_OBJ_FLAG_ERROR_SHUTDOWN) + printf("%sErrorShutdown\n", prefix); + if (flags & UPKG_OBJ_FLAG_DEBUG_POST_LOAD) + printf("%sDebugPostLoad\n", prefix); + if (flags & UPKG_OBJ_FLAG_DEBUG_SERIALIZE) + printf("%sDebugSerialize\n", prefix); + if (flags & UPKG_OBJ_FLAG_DEBUG_DESTROY) + printf("%sDebugDestroy\n", prefix); +} + void print_guid(unsigned char guid[static 16]) { for (unsigned i = 0; i < 16; i++) { @@ -121,6 +185,8 @@ void print_upkg_exports(struct upkg *pkg) continue; printf("%u - %s (%s.%s)\n", i+1, name, package, class); + printf(" Flags: %lx\n", upkg_export_flags(pkg, i)); + print_upkg_object_flags(" ", upkg_export_flags(pkg, i)); } } @@ -133,7 +199,7 @@ int package_info(struct upkg *pkg) printf("Flags: %lx\n", pkg->flags); if (verbose >= 1) { - print_upkg_flags("\t", pkg->flags); + print_upkg_flags(" ", pkg->flags); } if (verbose >= 1) { diff --git a/src/upkg.h b/src/upkg.h index 775f918..31615ff 100644 --- a/src/upkg.h +++ b/src/upkg.h @@ -29,15 +29,36 @@ #define UPKG_FLAG_INSECURE 0x0010 #define UPKG_FLAG_REQUIRED 0x8000 -#define UPKG_OBJ_FLAG_TRANSACTIONAL 0x00000001 -#define UPKG_OBJ_FLAG_UNREACHABLE 0x00000002 -#define UPKG_OBJ_FLAG_PUBLIC 0x00000004 -#define UPKG_OBJ_FLAG_TAG_IMPORT 0x00000008 -#define UPKG_OBJ_FLAG_TAG_EXPORT 0x00000010 -#define UPKG_OBJ_FLAG_SOURCE_MODIFIED 0x00000020 -#define UPKG_OBJ_FLAG_TAG_GARBAGE 0x00000040 -#define UPKG_OBJ_FLAG_NEED_LOAD 0x00000200 -#define UPKG_OBJ_FLAG_HIGHLIGHT_NAME 0x00000400 +#define UPKG_OBJ_FLAG_TRANSACTIONAL 0x00000001 +#define UPKG_OBJ_FLAG_UNREACHABLE 0x00000002 +#define UPKG_OBJ_FLAG_PUBLIC 0x00000004 +#define UPKG_OBJ_FLAG_TAG_IMPORT 0x00000008 +#define UPKG_OBJ_FLAG_TAG_EXPORT 0x00000010 +#define UPKG_OBJ_FLAG_SOURCE_MODIFIED 0x00000020 +#define UPKG_OBJ_FLAG_TAG_GARBAGE 0x00000040 +#define UPKG_OBJ_FLAG_NEED_LOAD 0x00000200 +#define UPKG_OBJ_FLAG_HIGHLIGHT_NAME 0x00000400 +#define UPKG_OBJ_FLAG_IN_SINGULAR_FUNC 0x00000800 +#define UPKG_OBJ_FLAG_SUPPRESSED 0x00001000 +#define UPKG_OBJ_FLAG_IN_END_STATE 0x00002000 +#define UPKG_OBJ_FLAG_TRANSIENT 0x00004000 +#define UPKG_OBJ_FLAG_PRELOADING 0x00008000 +#define UPKG_OBJ_FLAG_LOAD_FOR_CLIENT 0x00010000 +#define UPKG_OBJ_FLAG_LOAD_FOR_SERVER 0x00020000 +#define UPKG_OBJ_FLAG_LOAD_FOR_EDIT 0x00040000 +#define UPKG_OBJ_FLAG_STANDALONE 0x00080000 +#define UPKG_OBJ_FLAG_NOT_FOR_CLIENT 0x00100000 +#define UPKG_OBJ_FLAG_NOT_FOR_SERVER 0x00200000 +#define UPKG_OBJ_FLAG_NOT_FOR_EDIT 0x00400000 +#define UPKG_OBJ_FLAG_DESTROYED 0x00800000 +#define UPKG_OBJ_FLAG_NEED_POST_LOAD 0x01000000 +#define UPKG_OBJ_FLAG_HAS_STACK 0x02000000 +#define UPKG_OBJ_FLAG_NATIVE 0x04000000 +#define UPKG_OBJ_FLAG_MARKED 0x08000000 +#define UPKG_OBJ_FLAG_ERROR_SHUTDOWN 0x10000000 +#define UPKG_OBJ_FLAG_DEBUG_POST_LOAD 0x20000000 +#define UPKG_OBJ_FLAG_DEBUG_SERIALIZE 0x40000000 +#define UPKG_OBJ_FLAG_DEBUG_DESTROY 0x80000000 #define UPKG_HDR_MAGIC 0x9e2a83c1 #define UPKG_HDR_SIZE 36 @@ -67,6 +88,8 @@ int upkg_close(struct upkg *pkg); const char *upkg_get_name(struct upkg *pkg, unsigned long idx); long upkg_export_find(struct upkg *pkg, const char *name); + +unsigned long upkg_export_flags(struct upkg *pkg, unsigned long idx); const char *upkg_export_name(struct upkg *pkg, unsigned long idx); const char *upkg_export_class(struct upkg *pkg, unsigned long idx, const char **package); -- 2.43.0