]> git.draconx.ca Git - upkg.git/blobdiff - src/uobject.c
build: Add uobject/package.h to Makefile.am
[upkg.git] / src / uobject.c
index 175a6243dc202d1c5ee84a7b3af25cfe20c7b49b..64e7c4c396c8474cff1913b72bb939a61c5d8ccd 100644 (file)
 #include <assert.h>
 #include <glib-object.h>
 
-#include "uobject.h"
+#include <uobject/uobject.h>
 #include "upkg.h"
 #include "pack.h"
 
 #define U_OBJECT_GET_PRIV(o) \
-       G_TYPE_INSTANCE_GET_PRIVATE(o, U_OBJECT_TYPE, struct uobject_priv)
+       G_TYPE_INSTANCE_GET_PRIVATE(o, U_OBJECT_TYPE, struct u_object_priv)
 
 enum {
        PROPERTY_BYTE = 1,
@@ -48,12 +48,7 @@ enum {
        PROPERTY_FIXEDARRAY,
 };
 
-struct uobject_property {
-       const char *name;
-       GValue val;
-};
-
-struct uobject_priv {
+struct u_object_priv {
        struct upkg_file *f;
        size_t base, len;
 
@@ -95,7 +90,7 @@ get_real_size(unsigned long *real, unsigned size, unsigned char *buf, size_t n)
 static unsigned long
 decode_property(UObject *o, const char *name, struct upkg_file *f, unsigned long len)
 {
-       struct uobject_priv *priv = U_OBJECT_GET_PRIV(o);
+       struct u_object_priv *priv = U_OBJECT_GET_PRIV(o);
        unsigned long real_size, rc;
        int type, size, top;
        GValue val = {0};
@@ -149,7 +144,7 @@ decode_property(UObject *o, const char *name, struct upkg_file *f, unsigned long
 /* Deserialize properties from an Unreal package. */
 static int deserialize(UObject *o, struct upkg_file *f)
 {
-       struct uobject_priv *priv = U_OBJECT_GET_PRIV(o);
+       struct u_object_priv *priv = U_OBJECT_GET_PRIV(o);
        unsigned long rc, tot_len = 0;
 
        while (1) {
@@ -162,7 +157,7 @@ static int deserialize(UObject *o, struct upkg_file *f)
                        void  *buf = priv->buf + priv->nbuf;
                        size_t amt = sizeof priv->buf - priv->nbuf;
                        rc = upkg_export_read(f, buf, amt);
-                       if (rc == 0)
+                       if (rc == 0 && priv->nbuf == 0)
                                return -1;
                        priv->nbuf += rc;
                }
@@ -241,7 +236,7 @@ static void u_object_finalize(GObject *o)
 
 static void u_object_class_init(UObjectClass *class)
 {
-       g_type_class_add_private(class, sizeof (struct uobject_priv));
+       g_type_class_add_private(class, sizeof (struct u_object_priv));
        GObjectClass *go = G_OBJECT_CLASS(class);
 
        class->deserialize = deserialize;