Add common support for cat command.
This commit is contained in:
@@ -11,7 +11,10 @@ struct guestfs_ls_args {
|
|||||||
size_t paths_length;
|
size_t paths_length;
|
||||||
char **paths;
|
char **paths;
|
||||||
};
|
};
|
||||||
struct guestfs_cat_args {};
|
struct guestfs_cat_args {
|
||||||
|
size_t paths_length;
|
||||||
|
char **paths;
|
||||||
|
};
|
||||||
|
|
||||||
struct guestfs_inpsect_command {
|
struct guestfs_inpsect_command {
|
||||||
char *name;
|
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]);
|
zmsg_addstr(res, command->args.ls.paths[i]);
|
||||||
}
|
}
|
||||||
break;
|
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;
|
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);
|
res->args.ls.paths[i] = zmsg_popstr(msg);
|
||||||
}
|
}
|
||||||
break;
|
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;
|
return res;
|
||||||
}
|
}
|
||||||
@@ -82,6 +103,12 @@ static void command_destroy(struct guestfs_inpsect_command **c) {
|
|||||||
}
|
}
|
||||||
free((*c)->args.ls.paths);
|
free((*c)->args.ls.paths);
|
||||||
break;
|
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);
|
free(*c);
|
||||||
|
|||||||
Reference in New Issue
Block a user