#include <stdio.h>
#include <stdlib.h>
#include "vmette.h"
int main(int argc, char **argv) {
if (argc < 4) {
fprintf(stderr, "usage: %s KERNEL INITRAMFS ROOTFS [CMD]\n", argv[0]);
return 2;
}
const char *cmd = (argc >= 5) ? argv[4] : "uname -a; cat /etc/alpine-release; exit 0";
fprintf(stderr, "vmette version: %s\n", vmette_version());
vmette_config_t *cfg = vmette_config_new(argv[1], argv[2]);
if (!cfg) {
fprintf(stderr, "error: vmette_config_new failed\n");
return 1;
}
vmette_config_set_rootfs_share(cfg, argv[3], false);
vmette_config_set_exec(cfg, cmd);
vmette_config_set_vsock_port(cfg, 0);
vmette_run_output_t *out = NULL;
VmetteStatus rc = vmette_run(cfg, &out);
if (rc != Ok) {
fprintf(stderr, "vmette_run returned status %d\n", (int)rc);
vmette_config_free(cfg);
return 1;
}
int code = vmette_run_output_exit_code(out);
vmette_run_output_free(out);
vmette_config_free(cfg);
return code;
}