commit b97839751bad4a2b38ed38359ad82153e3e3b9cc
parent 4f701bcd8a8beeba5e0b56f819481d3782746281
Author: Eivind Uggedal <eivind@uggedal.com>
Date: Tue, 16 Feb 2016 22:05:49 +0000
install: only create parent dirs to dest given -D
Given the following commands:
touch 1.txt; install -D 1.txt d/2.txt
find d
The result without this fix:
d
d/2.txt
d/2.txt/1.txt
The result with this patch applied:
d
d/2.txt
Diffstat:
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/xinstall.c b/xinstall.c
@@ -241,11 +241,12 @@ main(int argc, char *argv[])
if (stat(argv[argc - 1], &st) < 0) {
if (errno != ENOENT)
eprintf("stat %s:", argv[argc - 1]);
- if (tflag || argc > 2) {
- p = strrchr(argv[argc - 1], '/');
- *p = '\0';
- make_dirs(argv[argc - 1], 1);
- *p = '/';
+ if (tflag || Dflag || argc > 2) {
+ if ((p = strrchr(argv[argc - 1], '/')) != NULL) {
+ *p = '\0';
+ make_dirs(argv[argc - 1], 1);
+ *p = '/';
+ }
} else {
make_dirs(argv[argc - 1], 1);
}