static gboolean read_full_item_info (EggBuffer *buffer, gsize *offset, ItemInfo *items, guint n_items) { gchar *reserved; guint32 tmp; gint i, j; g_assert (buffer); g_assert (offset); g_assert (items); for (i = 0; i < n_items; i++) { /* The display name */ if (!buffer_get_utf8_string (buffer, *offset, offset, &items[i].display_name)) return FALSE; /* The secret */ if (!egg_buffer_get_byte_array (buffer, *offset, offset, &items[i].ptr_secret, &items[i].n_secret)) return FALSE; /* The item times */ if (!buffer_get_time (buffer, *offset, offset, &items[i].ctime) || !buffer_get_time (buffer, *offset, offset, &items[i].mtime)) return FALSE; /* Reserved data */ reserved = NULL; if (!buffer_get_utf8_string (buffer, *offset, offset, &reserved)) return FALSE; g_free (reserved); for (j = 0; j < 4; j++) { if (!egg_buffer_get_uint32 (buffer, *offset, offset, &tmp)) return FALSE; } /* The attributes */ if (items[i].attributes) g_hash_table_unref (items[i].attributes); if (!buffer_get_attributes (buffer, *offset, offset, &items[i].attributes, FALSE)) return FALSE; /* The ACLs */ if (!decode_acl (buffer, *offset, offset, &items[i].acl)) return FALSE; } return TRUE; }
static int read_hashed_item_info(FILE * fp, int *next_offset, uint32_t n_items) { int i; uint32_t id; uint32_t type; for (i = 0; i < n_items; i++) { get_uint32(fp, next_offset, &id); get_uint32(fp, next_offset, &type); buffer_get_attributes(fp, next_offset); } return 1; }
static gboolean read_hashed_item_info (EggBuffer *buffer, gsize *offset, ItemInfo *items, guint n_items) { gint i; g_assert (buffer); g_assert (offset); g_assert (items); for (i = 0; i < n_items; i++) { if (!egg_buffer_get_uint32 (buffer, *offset, offset, &items[i].id) || !egg_buffer_get_uint32 (buffer, *offset, offset, &items[i].type) || !buffer_get_attributes (buffer, *offset, offset, &items[i].attributes, TRUE)) return FALSE; items[i].identifier = g_strdup_printf ("%u", items[i].id); } return TRUE; }