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
This commit is contained in:
Eivind Uggedal 2016-02-16 22:05:49 +00:00 committed by sin
parent 4f701bcd8a
commit b97839751b
1 changed files with 6 additions and 5 deletions

View File

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