aboutsummaryrefslogtreecommitdiff
path: root/coreutils
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2010-02-21 16:55:29 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2010-02-21 16:55:29 +0100
commit43d9747f6e3c46fd230fe89344a9ebe4afd8eff5 (patch)
tree636ca45766acf200f8519c74587aa6825380f3d3 /coreutils
parent8ce1dc03c1b2b61e51527b987579c09c991cc4b2 (diff)
downloadbusybox-w32-43d9747f6e3c46fd230fe89344a9ebe4afd8eff5.tar.gz
busybox-w32-43d9747f6e3c46fd230fe89344a9ebe4afd8eff5.tar.bz2
busybox-w32-43d9747f6e3c46fd230fe89344a9ebe4afd8eff5.zip
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>
Diffstat (limited to 'coreutils')
-rw-r--r--coreutils/install.c25
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)
167 free(ddir); 167 free(ddir);
168 } 168 }
169 if (isdir) 169 if (isdir)
170 dest = concat_path_file(last, basename(arg)); 170 dest = concat_path_file(last, bb_basename(arg));
171 if (copy_file(arg, dest, copy_flags)) { 171 if (copy_file(arg, dest, copy_flags) != 0) {
172 /* copy is not made */ 172 /* copy is not made */
173 ret = EXIT_FAILURE; 173 ret = EXIT_FAILURE;
174 goto next; 174 goto next;
175 } 175 }
176 if (opts & OPT_STRIP) {
177 char *args[4];
178 args[0] = (char*)"strip";
179 args[1] = (char*)"-p"; /* -p --preserve-dates */
180 args[2] = dest;
181 args[3] = NULL;
182 if (spawn_and_wait(args)) {
183 bb_perror_msg("strip");
184 ret = EXIT_FAILURE;
185 }
186 }
176 } 187 }
177 188
178 /* Set the file mode (always, not only with -m). 189 /* Set the file mode (always, not only with -m).
@@ -192,16 +203,6 @@ int install_main(int argc, char **argv)
192 bb_perror_msg("can't change %s of %s", "ownership", dest); 203 bb_perror_msg("can't change %s of %s", "ownership", dest);
193 ret = EXIT_FAILURE; 204 ret = EXIT_FAILURE;
194 } 205 }
195 if (opts & OPT_STRIP) {
196 char *args[3];
197 args[0] = (char*)"strip";
198 args[1] = dest;
199 args[2] = NULL;
200 if (spawn_and_wait(args)) {
201 bb_perror_msg("strip");
202 ret = EXIT_FAILURE;
203 }
204 }
205 next: 206 next:
206 if (ENABLE_FEATURE_CLEAN_UP && isdir) 207 if (ENABLE_FEATURE_CLEAN_UP && isdir)
207 free(dest); 208 free(dest);