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>
This commit is contained in:
Denys Vlasenko 2010-02-21 16:55:29 +01:00
parent 8ce1dc03c1
commit 43d9747f6e

View File

@ -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);