Add common support for cat command.

This commit is contained in:
2024-03-03 17:15:03 -05:00
parent 75139f709d
commit ebc07d0cf7

View File

@@ -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);