Files
guestfs-inspect/guestfs-inspect.c

65 lines
1.5 KiB
C

#include <stdio.h>
#include <stdlib.h>
#include <czmq.h>
#include <guestfs.h>
#include "libguestfs-inspect.h"
#define STREQ(a, b) (strcmp((a), (b)) == 0)
void print_help(char *);
enum guestfs_inspect_command_const parse_command(char *);
int main(int argc, char **argv) {
if (argc == 1) {
print_help(argv[0]);
return EXIT_SUCCESS;
}
char *ep = endpoint();
zsock_t *daemon = zsock_new_req(ep);
free(ep);
struct guestfs_inpsect_command *command = malloc(sizeof(struct guestfs_inpsect_command));
command->name = calloc(strlen(argv[1]) + 1, sizeof(char));
strcpy(command->name, argv[1]);
command->command = parse_command(argv[2]);
command->args.ls.paths_length = 1;
command->args.ls.paths = calloc(1, sizeof(char *));
command->args.ls.paths[0] = calloc(strlen(argv[3] + 1), sizeof(char));
strcpy(command->args.ls.paths[0], argv[3]);
zmsg_t *msg = command_to_zmsg(command);
zmsg_send(&msg, daemon);
zmsg_t *rep = zmsg_recv(daemon);
char *res = zmsg_popstr(rep);
printf("Res:\n%s\n", res);
free(res);
zmsg_destroy(&msg);
zmsg_destroy(&rep);
zsock_destroy(&daemon);
free(command->name);
free(command->args.ls.paths[0]);
free(command->args.ls.paths);
free(command);
return EXIT_SUCCESS;
}
void print_help(char *name) {
printf("Usage: %s [name] [command] <arguments>\n", name);
printf("Commands:\n");
printf(" ls <path>\n");
printf(" cat <path>\n");
}
enum guestfs_inspect_command_const parse_command(char *input) {
if (STREQ(input, "ls")) {
return GUESTFS_COMMAND_LS;
}
exit(EXIT_FAILURE);
}