From b97839751bad4a2b38ed38359ad82153e3e3b9cc Mon Sep 17 00:00:00 2001 From: Eivind Uggedal Date: Tue, 16 Feb 2016 22:05:49 +0000 Subject: [PATCH] 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 --- xinstall.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/xinstall.c b/xinstall.c index ec96c05..1a6be47 100644 --- 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); }