Add common support for cat command.
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user