]> git.ozlabs.org Git - petitboot/blobdiff - lib/system/system.c
lib/pb-config/powerpc-nvram: Use talloc_zero for interface configs
[petitboot] / lib / system / system.c
index 1b506d2edaf6b5e84f9ea4211e0cac1b189f3d31..0253ac8778e32242bf055d2a3eadbcede4ba1920 100644 (file)
 #include "system.h"
 
 const struct pb_system_apps pb_system_apps = {
-       .prefix = PREFIX,
-       .cp = "/bin/cp",
-       .kexec = "/sbin/kexec",
-       .mount = "/bin/mount",
-       .shutdown = "/sbin/shutdown",
-       .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,
 };
 
+#ifndef TFTP_TYPE
+#define TFTP_TYPE TFTP_TYPE_UNKNOWN
+#endif
+
+enum tftp_type tftp_type = TFTP_TYPE;
+
 int pb_mkdir_recursive(const char *dir)
 {
        struct stat statbuf;
@@ -83,12 +91,12 @@ int pb_rmdir_recursive(const char *base, const char *dir)
 
        cur = talloc_strdup(NULL, dir);
 
-       while (strcmp(base, dir)) {
+       while (strcmp(base, cur)) {
 
-               rmdir(dir);
+               rmdir(cur);
 
                /* null-terminate at the last slash */
-               pos = strrchr(dir, '/');
+               pos = strrchr(cur, '/');
                if (!pos)
                        break;
 
@@ -99,76 +107,3 @@ int pb_rmdir_recursive(const char *base, 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 wait)
-{
-#if defined(DEBUG)
-       enum {do_debug = 1};
-#else
-       enum {do_debug = 0};
-#endif
-       int status;
-       pid_t pid;
-
-       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) {
-               int log = fileno(pb_log_get_stream());
-
-               /* Redirect child output to log. */
-
-               status = dup2(log, STDOUT_FILENO);
-               assert(status != -1);
-
-               status = dup2(log, STDERR_FILENO);
-               assert(status != -1);
-
-               execvp(cmd_argv[0], (char *const *)cmd_argv);
-               pb_log("%s: exec failed: %s\n", __func__, strerror(errno));
-               exit(EXIT_FAILURE);
-       }
-
-       if (!wait && !waitpid(pid, &status, WNOHANG))
-               return 0;
-
-       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);
-}