diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2010-02-21 16:55:29 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2010-02-21 16:55:29 +0100 |
commit | 43d9747f6e3c46fd230fe89344a9ebe4afd8eff5 (patch) | |
tree | 636ca45766acf200f8519c74587aa6825380f3d3 | |
parent | 8ce1dc03c1b2b61e51527b987579c09c991cc4b2 (diff) | |
download | busybox-43d9747f6e3c46fd230fe89344a9ebe4afd8eff5.tar.gz |
install: strip before mode/uid/gid is set, not after.
function old new delta
install_main 694 716 +22
basename 21 - -21
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | coreutils/install.c | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/coreutils/install.c b/coreutils/install.c index e9682990d..803afe617 100644 --- a/coreutils/install.c +++ b/coreutils/install.c @@ -167,12 +167,23 @@ int install_main(int argc, char **argv) free(ddir); } if (isdir) - dest = concat_path_file(last, basename(arg)); - if (copy_file(arg, dest, copy_flags)) { + dest = concat_path_file(last, bb_basename(arg)); + if (copy_file(arg, dest, copy_flags) != 0) { /* copy is not made */ ret = EXIT_FAILURE; goto next; } + if (opts & OPT_STRIP) { + char *args[4]; + args[0] = (char*)"strip"; + args[1] = (char*)"-p"; /* -p --preserve-dates */ + args[2] = dest; + args[3] = NULL; + if (spawn_and_wait(args)) { + bb_perror_msg("strip"); + ret = EXIT_FAILURE; + } + } } /* Set the file mode (always, not only with -m). @@ -192,16 +203,6 @@ int install_main(int argc, char **argv) bb_perror_msg("can't change %s of %s", "ownership", dest); ret = EXIT_FAILURE; } - if (opts & OPT_STRIP) { - char *args[3]; - args[0] = (char*)"strip"; - args[1] = dest; - args[2] = NULL; - if (spawn_and_wait(args)) { - bb_perror_msg("strip"); - ret = EXIT_FAILURE; - } - } next: if (ENABLE_FEATURE_CLEAN_UP && isdir) free(dest); |