diff --git a/src/vnode.c b/src/vnode.c index 2cc22e2..cd72ddc 100644 --- a/src/vnode.c +++ b/src/vnode.c @@ -18,3 +18,25 @@ enum ec3_status ec3_vnode_from_file_info( return EC3_SUCCESS; } + +void ec3_vnode_encode(const struct ec3_vnode *in, struct ec3_bin_vnode *out) +{ + out->n_id = b_i32_htob(in->v_id); + out->n_ctime = b_i32_htob(in->v_ctime); + out->n_mtime = b_i32_htob(in->v_mtime); + out->n_mode = b_i16_htob(in->v_mode); + out->n_uid = b_i16_htob(in->v_uid); + out->n_gid = b_i16_htob(in->v_gid); + memcpy(out->n_data, in->v_data, sizeof in->v_data); +} + +void ec3_vnode_decode(const struct ec3_bin_vnode *in, struct ec3_vnode *out) +{ + out->v_id = b_i32_btoh(in->n_id); + out->v_ctime = b_i32_btoh(in->n_ctime); + out->v_mtime = b_i32_btoh(in->n_mtime); + out->v_mode = b_i16_btoh(in->n_mode); + out->v_uid = b_i16_btoh(in->n_uid); + out->v_gid = b_i16_btoh(in->n_gid); + memcpy(out->v_data, in->n_data, sizeof in->n_data); +} diff --git a/src/vnode.h b/src/vnode.h index 6c9a9ec..63f5a8e 100644 --- a/src/vnode.h +++ b/src/vnode.h @@ -18,4 +18,11 @@ extern enum ec3_status ec3_vnode_from_file_info( const struct b_file_info *file_info, struct ec3_vnode *out); +extern void ec3_vnode_encode( + const struct ec3_vnode *in, + struct ec3_bin_vnode *out); +extern void ec3_vnode_decode( + const struct ec3_bin_vnode *in, + struct ec3_vnode *out); + #endif diff --git a/src/volume.c b/src/volume.c index 246b149..7a8d3c0 100644 --- a/src/volume.c +++ b/src/volume.c @@ -359,28 +359,6 @@ static const struct b_tree_ops vnode_table_ops = { .entry_compare = entry_compare, }; -static void encode_vnode(const struct ec3_vnode *in, struct ec3_bin_vnode *out) -{ - out->n_id = b_i32_htob(in->v_id); - out->n_ctime = b_i32_htob(in->v_ctime); - out->n_mtime = b_i32_htob(in->v_mtime); - out->n_mode = b_i16_htob(in->v_mode); - out->n_uid = b_i16_htob(in->v_uid); - out->n_gid = b_i16_htob(in->v_gid); - memcpy(out->n_data, in->v_data, sizeof in->v_data); -} - -static void decode_vnode(const struct ec3_bin_vnode *in, struct ec3_vnode *out) -{ - out->v_id = b_i32_btoh(in->n_id); - out->v_ctime = b_i32_btoh(in->n_ctime); - out->v_mtime = b_i32_btoh(in->n_mtime); - out->v_mode = b_i16_btoh(in->n_mode); - out->v_uid = b_i16_btoh(in->n_uid); - out->v_gid = b_i16_btoh(in->n_gid); - memcpy(out->v_data, in->n_data, sizeof in->n_data); -} - static enum ec3_status load_vnode( struct ec3_volume *volume, size_t id, @@ -507,7 +485,7 @@ enum ec3_status ec3_volume_get_vnode( return EC3_ERR_IO_FAILURE; } - decode_vnode(&vnode, out); + ec3_vnode_decode(&vnode, out); return EC3_SUCCESS; } @@ -516,13 +494,15 @@ enum ec3_status ec3_volume_put_vnode( struct ec3_volume *volume, const struct ec3_vnode *vnode) { +#if 0 printf("put(%zu, %x%x)\n", vnode->v_id, vnode->v_data[0], vnode->v_data[1]); +#endif struct ec3_bin_vnode bin_vnode; - encode_vnode(vnode, &bin_vnode); + ec3_vnode_encode(vnode, &bin_vnode); int err = b_tree_put( &volume->v_vnode_table, (b_tree_node_entry *)&bin_vnode);