- pull r15578 from busybox_scratch branch: - fix bug where it would behave wrong if ./nohup.out was not writable. - debloat and make it readable while at it. $ size coreutils/nohup.o* text data bss dec hex filename 362 0 0 362 16a coreutils/nohup.o.trunk
This commit was genuinely broken at the time (not related to our build system): scripts/config/mkconfigs.c (2005-08-01 - 2006-10-05 arasi) uretilen bbconfigopts.h icine .config satirlarini kacissiz, ham newline'larla gömüyordu - gecerli C degildi, busybox'un kendi bb_mkdep araci bile parse edemiyordu (7d219aab7 ile duzeltildi, mkconfigs shell scripte cevrildi)
No binary (build failed)
—
(log yok)
| @@ -5,53 +5,49 @@ | |
| * http://www.opengroup.org/onlinepubs/007904975/utilities/nohup.html | |
| * | |
| * Copyright 2006 Rob Landley <[email protected]> | |
| + | * Copyright 2006 Bernhard Fischer |
| * | |
| * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. | |
| */ | |
| #include "busybox.h" | |
| - | int nohup_main(int argc, char *argv[]) |
| + | int nohup_main(int argc, char **argv) |
| { | |
| int temp, nullfd; | |
| - | char *nohupout = "nohup.out", *home = NULL; |
| - | |
| - | // I have no idea why the standard cares about this. |
| + | char *nohupout, *home = NULL; |
| bb_default_error_retval = 127; | |
| if (argc<2) bb_show_usage(); | |
| nullfd = xopen(bb_dev_null, O_WRONLY|O_APPEND); | |
| - | // If stdin is a tty, detach from it. |
| - | |
| - | if (isatty(0)) dup2(nullfd, 0); |
| - | |
| - | // Redirect stdout to nohup.out, either in "." or in "$HOME". |
| + | /* If stdin is a tty, detach from it. */ |
| + | if (isatty(STDIN_FILENO)) dup2(nullfd, STDIN_FILENO); |
| - | if (isatty(1)) { |
| - | close(1); |
| + | nohupout = "nohup.out"; |
| + | /* Redirect stdout to nohup.out, either in "." or in "$HOME". */ |
| + | if (isatty(STDOUT_FILENO)) { |
| + | close(STDOUT_FILENO); |
| if (open(nohupout, O_CREAT|O_WRONLY|O_APPEND, S_IRUSR|S_IWUSR) < 0) { | |
| home = getenv("HOME"); | |
| if (home) { | |
| - | home = concat_path_file(home, nohupout); |
| + | nohupout = concat_path_file(home, nohupout); |
| xopen3(nohupout, O_CREAT|O_WRONLY|O_APPEND, S_IRUSR|S_IWUSR); | |
| } | |
| } | |
| - | } else dup2(nullfd, 1); |
| - | |
| - | // If we have a tty on strderr, announce filename and redirect to stdout. |
| - | // Else redirect to /dev/null. |
| - | |
| - | temp = isatty(2); |
| - | if (temp) fdprintf(2,"Writing to %s\n", home ? home : nohupout); |
| - | dup2(temp ? 1 : nullfd, 2); |
| + | } else dup2(nullfd, STDOUT_FILENO); |
| + | |
| + | /* If we have a tty on strderr, announce filename and redirect to stdout. |
| + | * Else redirect to /dev/null. |
| + | */ |
| + | temp = isatty(STDERR_FILENO); |
| + | if (temp) bb_error_msg("Appending to %s", nohupout); |
| + | dup2(temp ? STDOUT_FILENO : nullfd, STDERR_FILENO); |
| close(nullfd); | |
| - | signal(SIGHUP, SIG_IGN); |
| - | |
| - | // Exec our new program. |
| + | signal (SIGHUP, SIG_IGN); |
| execvp(argv[1],argv+1); | |
| - | if (ENABLE_FEATURE_CLEAN_UP) free(home); |
| - | bb_error_msg_and_die("exec %s",argv[1]); |
| + | if (00 && ENABLE_FEATURE_CLEAN_UP && home) free(nohupout); |
| + | bb_perror_msg_and_die("%s",argv[1]); |
| } | |