sbase

suckless unix tools
git clone git://git.2f30.org/sbase
Log | Files | Refs | README | LICENSE

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:
Mxinstall.c | 11++++++-----
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); }