diff --git a/libguestfs-inspect.h b/libguestfs-inspect.h index c7a3a9e..38d97db 100644 --- a/libguestfs-inspect.h +++ b/libguestfs-inspect.h @@ -11,7 +11,10 @@ struct guestfs_ls_args { size_t paths_length; char **paths; }; -struct guestfs_cat_args {}; +struct guestfs_cat_args { + size_t paths_length; + char **paths; +}; struct guestfs_inpsect_command { char *name; @@ -44,6 +47,13 @@ static zmsg_t *command_to_zmsg(struct guestfs_inpsect_command *command) { zmsg_addstr(res, command->args.ls.paths[i]); } break; + case GUESTFS_COMMAND_CAT: + zmsg_addmem(res, &(command->args.cat.paths_length), sizeof(command->args.cat.paths_length)); + + for (size_t i = 0; i < (command->args.cat.paths_length); i++) { + zmsg_addstr(res, command->args.cat.paths[i]); + } + break; } return res; @@ -69,6 +79,17 @@ static struct guestfs_inpsect_command *zmsg_to_command(zmsg_t *msg) { res->args.ls.paths[i] = zmsg_popstr(msg); } break; + case GUESTFS_COMMAND_CAT: + next = zmsg_pop(msg); + res->args.cat.paths_length = *(zframe_data(next)); + free(next); + + res->args.cat.paths = calloc(res->args.cat.paths_length, sizeof(char *)); + + for (size_t i = 0; i < res->args.cat.paths_length; i++) { + res->args.cat.paths[i] = zmsg_popstr(msg); + } + break; } return res; } @@ -82,6 +103,12 @@ static void command_destroy(struct guestfs_inpsect_command **c) { } free((*c)->args.ls.paths); break; + case GUESTFS_COMMAND_CAT: + for (size_t i = 0; i < (*c)->args.cat.paths_length; i++) { + free((*c)->args.cat.paths[i]); + } + free((*c)->args.cat.paths); + break; } free(*c);