X-Git-Url: http://git.vrable.net/?a=blobdiff_plain;f=bluesky%2Fserialize.c;h=d0273cc61160a4e860896e2357c667696e10bc66;hb=6357b9d1de3bfb09811297406688810b4900df7b;hp=7cb16a5304eb3098cd494a95c7b643d25cd1f798;hpb=da3686c428dbcfdc010f88001325668f0e09bd8b;p=bluesky.git diff --git a/bluesky/serialize.c b/bluesky/serialize.c index 7cb16a5..d0273cc 100644 --- a/bluesky/serialize.c +++ b/bluesky/serialize.c @@ -62,6 +62,31 @@ void bluesky_serialize_inode(GString *out, BlueSkyInode *inode) g_string_append_c(out, '\0'); } break; + + case BLUESKY_DIRECTORY: + { + uint32_t seq; + uint64_t inum; + GSequenceIter *i = g_sequence_get_begin_iter(inode->dirents); + + while (!g_sequence_iter_is_end(i)) { + BlueSkyDirent *d = g_sequence_get(i); + + seq = GUINT32_TO_LE(d->cookie); + inum = GUINT64_TO_LE(d->inum); + g_string_append_len(out, (gchar *)&seq, sizeof(uint32_t)); + g_string_append_len(out, (gchar *)&inum, sizeof(uint64_t)); + g_string_append(out, d->name); + g_string_append_c(out, '\0'); + + i = g_sequence_iter_next(i); + } + + seq = GUINT32_TO_LE(0); + g_string_append_len(out, (gchar *)&seq, sizeof(uint32_t)); + + break; + } default: g_warning("Serialization for inode type %d not implemented!\n", inode->type);