#include #include #include #include #include void *worker_task; char *endpoint(void); int main(int argc, char **argv) { if (argc < 2) { printf("Usage: %s ...\n", argv[0]); return EXIT_FAILURE; } const int worker_count = argc - 1; // One worker per disk image. struct { char *name; zactor_t *worker; } worker_map[worker_count]; for (int i = 0; i < worker_count; i++) { char *path = strtok(argv[i+1], ":"); worker_map[i].name = strtok(NULL, ":"); zactor_new(worker_map[i].worker, (void *) &((struct { char* path; char *name; }) {.path = path, .name = name})); } char *ep = endpoint(); zsock_t *frontend = zsock_new_router(ep); free(ep); return EXIT_SUCCESS; } char *endpoint() { // TODO: This should be based on GUESTFS_INSPECT_ENDPOINT, or XDG_RUNTIME_DIR if the former is not set, and default to a sensible path if neither are set. const char* ep = "ipc:///tmp/guestfs-inspect.sock"; char *res = malloc(strlen(ep) + 1); strcpy(res, ep); return res; }