diff options
author | Koen Kooi <koen@openembedded.org> | 2007-08-12 08:40:57 +0000 |
---|---|---|
committer | Koen Kooi <koen@openembedded.org> | 2007-08-12 08:40:57 +0000 |
commit | 87de1e8d939bda416ebed28c492fd5515d6581a1 (patch) | |
tree | 0940553b47b553b2ff90d7c84c4d8cce42806dbe /packages/busybox/busybox-1.2.1/install-should-unlink-dest-if-it-exists.patch | |
parent | 865f9b1ff4f04bf80a9adab5a0a179e53fdd93e9 (diff) | |
parent | 2a515b9b1760e1474d2b257e68c00998297f422c (diff) |
propagate from branch 'org.openembedded.dev' (head 0f0f223484d369b6dd3347b0af81e9043083a3a6)
to branch 'org.openembedded.dev.avr32' (head 979e73021b273ae65b6f3b1f59da5efb6f436a3d)
Diffstat (limited to 'packages/busybox/busybox-1.2.1/install-should-unlink-dest-if-it-exists.patch')
-rw-r--r-- | packages/busybox/busybox-1.2.1/install-should-unlink-dest-if-it-exists.patch | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/packages/busybox/busybox-1.2.1/install-should-unlink-dest-if-it-exists.patch b/packages/busybox/busybox-1.2.1/install-should-unlink-dest-if-it-exists.patch new file mode 100644 index 0000000000..4bec313f0e --- /dev/null +++ b/packages/busybox/busybox-1.2.1/install-should-unlink-dest-if-it-exists.patch @@ -0,0 +1,53 @@ +--- + coreutils/install.c | 2 +- + include/libbb.h | 3 ++- + libbb/copy_file.c | 9 +++++++++ + 3 files changed, 12 insertions(+), 2 deletions(-) + +Index: busybox-1.2.1/coreutils/install.c +=================================================================== +--- busybox-1.2.1.orig/coreutils/install.c 2006-10-19 16:33:48.000000000 +0200 ++++ busybox-1.2.1/coreutils/install.c 2006-10-19 16:35:58.000000000 +0200 +@@ -59,7 +59,7 @@ int install_main(int argc, char **argv) + char *gid_str = "-1"; + char *uid_str = "-1"; + char *mode_str = "0755"; +- int copy_flags = FILEUTILS_DEREFERENCE | FILEUTILS_FORCE; ++ int copy_flags = FILEUTILS_DEREFERENCE | FILEUTILS_FORCE | FILEUTILS_NO_TRUNC; + int ret = EXIT_SUCCESS, flags, i, isdir; + + #if ENABLE_FEATURE_INSTALL_LONG_OPTIONS +Index: busybox-1.2.1/include/libbb.h +=================================================================== +--- busybox-1.2.1.orig/include/libbb.h 2006-10-19 16:24:50.000000000 +0200 ++++ busybox-1.2.1/include/libbb.h 2006-10-19 16:32:40.000000000 +0200 +@@ -345,7 +345,8 @@ enum { /* DO NOT CHANGE THESE VALUES! c + FILEUTILS_DEREFERENCE = 2, + FILEUTILS_RECUR = 4, + FILEUTILS_FORCE = 8, +- FILEUTILS_INTERACTIVE = 16 ++ FILEUTILS_INTERACTIVE = 16, ++ FILEUTILS_NO_TRUNC = 32 + }; + + extern const char *bb_applet_name; +Index: busybox-1.2.1/libbb/copy_file.c +=================================================================== +--- busybox-1.2.1.orig/libbb/copy_file.c 2006-10-19 16:26:53.000000000 +0200 ++++ busybox-1.2.1/libbb/copy_file.c 2006-10-19 16:32:28.000000000 +0200 +@@ -136,6 +136,15 @@ int copy_file(const char *source, const + } + } + ++ if (flags & FILEUTILS_NO_TRUNC) { ++ if (unlink(dest) < 0) { ++ bb_perror_msg("unable to remove `%s'", dest); ++ close(src_fd); ++ return -1; ++ } ++ goto dest_removed; ++ } ++ + dst_fd = open(dest, O_WRONLY|O_TRUNC); + if (dst_fd == -1) { + if (!(flags & FILEUTILS_FORCE)) { |