1 /* 2 * Copyright 2022 Garmin Ltd. or its subsidiaries 3 * 4 * SPDX-License-Identifier: GPL-2.0 5 * 6 * Attempts to find and exec the host qemu-bridge-helper program 7 */ 8 9 #include <stdio.h> 10 #include <string.h> 11 #include <unistd.h> 12 #include <stdlib.h> 13 14 void try_program(char const* path, char** args) { 15 if (access(path, X_OK) == 0) { 16 execv(path, args); 17 } 18 } 19 20 int main(int argc, char** argv) { 21 char* var; 22 23 var = getenv("QEMU_BRIDGE_HELPER"); 24 if (var && var[0] != '\0') { 25 execvp(var, argv); 26 return 1; 27 } 28 29 if (argc == 2 && strcmp(argv[1], "--help") == 0) { 30 fprintf(stderr, "Helper function to find and exec qemu-bridge-helper. Set QEMU_BRIDGE_HELPER to override default search path\n"); 31 return 0; 32 } 33 34 try_program("/usr/libexec/qemu-bridge-helper", argv); 35 try_program("/usr/lib/qemu/qemu-bridge-helper", argv); 36 37 fprintf(stderr, "No bridge helper found\n"); 38 return 1; 39 } 40 41