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
diff --git a/xinstall.c b/xinstall.c
index ec96c05..1a6be47 100644
--- a/xinstall.c
+++ b/xinstall.c
@@ -241,11 +241,12 @@
 		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);
 			}