* Copyright (C) 2003 by Glenn McGrath
* SELinux support: by Yuichi Nakamura <ynakam@hitachisoft.jp>
*
- * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
+ * Licensed under GPLv2 or later, see file LICENSE in this source tree.
*/
+/* -v, -b, -c are ignored */
+//usage:#define install_trivial_usage
+//usage: "[-cdDsp] [-o USER] [-g GRP] [-m MODE] [SOURCE]... DEST"
+//usage:#define install_full_usage "\n\n"
+//usage: "Copy files and set attributes\n"
+//usage: "\n -c Just copy (default)"
+//usage: "\n -d Create directories"
+//usage: "\n -D Create leading target directories"
+//usage: "\n -s Strip symbol table"
+//usage: "\n -p Preserve date"
+//usage: "\n -o USER Set ownership"
+//usage: "\n -g GRP Set group ownership"
+//usage: "\n -m MODE Set permissions"
+//usage: IF_SELINUX(
+//usage: "\n -Z Set security context"
+//usage: )
+
#include "libbb.h"
#include "libcoreutils/coreutils.h"
if (lsetfilecon(path, scontext) < 0) {
if (errno != ENOTSUP) {
- bb_perror_msg("warning: failed to change context"
+ bb_perror_msg("warning: can't change context"
" of %s to %s", path, scontext);
}
}
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).
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);