#include "config.h"
#endif
+#include <assert.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include "system.h"
const struct pb_system_apps pb_system_apps = {
- .cp = "/bin/cp",
- .kexec = "/sbin/kexec",
- .mount = "/bin/mount",
- .sftp = "/usr/bin/sftp",
- .tftp = "/usr/bin/tftp",
- .umount = "/bin/umount",
- .wget = "/usr/bin/wget",
+ .prefix = PREFIX,
+ .cp = HOST_PROG_CP,
+ .kexec = HOST_PROG_KEXEC,
+ .mount = HOST_PROG_MOUNT,
+ .shutdown = HOST_PROG_SHUTDOWN,
+ .sftp = HOST_PROG_SFTP,
+ .tftp = HOST_PROG_TFTP,
+ .umount = HOST_PROG_UMOUNT,
+ .wget = HOST_PROG_WGET,
+ .ip = HOST_PROG_IP,
+ .udhcpc = HOST_PROG_UDHCPC,
};
int pb_mkdir_recursive(const char *dir)
return 0;
}
-
-/**
- * pb_run_cmd - Run the supplied command.
- * @cmd_argv: An argument list array for execv.
- */
-
-int pb_run_cmd(const char *const *cmd_argv)
-{
- int status;
- pid_t pid;
-#if defined(DEBUG)
- enum {do_debug = 1};
-#else
- enum {do_debug = 0};
-#endif
-
- if (do_debug) {
- const char *const *p = cmd_argv;
-
- pb_log("%s: ", __func__);
- while (*p) {
- pb_log("%s ", *p);
- p++;
- }
- pb_log("\n");
- } else
- pb_log("%s: %s\n", __func__, cmd_argv[0]);
-
- pid = fork();
- if (pid == -1) {
- pb_log("%s: fork failed: %s\n", __func__, strerror(errno));
- return -1;
- }
-
- if (pid == 0) {
- execvp(cmd_argv[0], (char *const *)cmd_argv);
- pb_log("%s: exec failed: %s\n", __func__, strerror(errno));
- exit(EXIT_FAILURE);
- }
-
- if (waitpid(pid, &status, 0) == -1) {
- pb_log("%s: waitpid failed: %s\n", __func__,
- strerror(errno));
- return -1;
- }
-
- if (do_debug && WIFSIGNALED(status) && WTERMSIG(status) == SIGINT)
- pb_log("%s: signaled\n", __func__);
-
- if (!WIFEXITED(status)) {
- pb_log("%s: %s failed\n", __func__, cmd_argv[0]);
- return -1;
- }
-
- if (WEXITSTATUS(status))
- pb_log("%s: WEXITSTATUS %d\n", __func__, WEXITSTATUS(status));
-
- return WEXITSTATUS(status);
-}