sbase

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

commit d24584466c9ea27451bd9c56804e935247807085
parent 4c1f9ecdd24cfc6e58cc718831c529b2f01151f7
Author: sin <sin@2f30.org>
Date:   Fri, 13 Nov 2015 14:29:23 +0000

Revert "enmasse: For the special case of 2 args, do not distinguish between dirs and files"

This reverts commit a564a67c4ea70e90a4dc543814458e4903869d3e.

Not as trivial as I thought.  This breaks cp when used as:
cp -r /foo/bar /baz

The old code expands this to:
cp -r /foo/bar /baz/bar

Diffstat:
Mlibutil/enmasse.c | 4+++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/libutil/enmasse.c b/libutil/enmasse.c @@ -3,6 +3,7 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> +#include <sys/stat.h> #include <unistd.h> #include "../util.h" @@ -10,11 +11,12 @@ void enmasse(int argc, char *argv[], int (*fn)(const char *, const char *, int)) { + struct stat st; char buf[PATH_MAX], *dir; int i, len; size_t dlen; - if (argc == 2) { + if (argc == 2 && !(stat(argv[1], &st) == 0 && S_ISDIR(st.st_mode))) { fnck(argv[0], argv[1], fn, 0); return; } else {