]> git.draconx.ca Git - upkg.git/commitdiff
upkg: Print export flags.
authorNick Bowler <nbowler@draconx.ca>
Sat, 8 Aug 2009 16:02:46 +0000 (12:02 -0400)
committerNick Bowler <nbowler@draconx.ca>
Sat, 8 Aug 2009 16:02:46 +0000 (12:02 -0400)
src/libupkg.c
src/upkg.c
src/upkg.h

index 6ee7ffa9c4f32909b3aff4824351d6a9dd92e1d1..45fda93c8cd7399d9ec5e67555242881bf22b799 100644 (file)
@@ -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)
index a8c7c7e560ca02bb61bd66d3e36e352d4bcd2b80..8b1493e33846a390645144f4e0ab5ec74fabbbb8 100644 (file)
@@ -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) {
index 775f918c8087e8b128562b78aeec95991a2c9316..31615ff2b43ef2c84a4eca82b9fbf2184c76976b 100644 (file)
 #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);