diff --git a/util/cp.c b/util/cp.c index 33853ad..4e06ddc 100644 --- a/util/cp.c +++ b/util/cp.c @@ -28,36 +28,37 @@ cp(const char *s1, const char *s2) if (stat(s1, &st) == 0 && S_ISDIR(st.st_mode)) { if (!cp_rflag) { eprintf("%s: is a directory\n", s1); - } else { - if(!(dp = opendir(s1))) - eprintf("opendir %s:", s1); - - if (mkdir(s2, st.st_mode) == -1 && errno != EEXIST) - eprintf("mkdir %s:", s2); - - apathmax(&ns1, &size1); - apathmax(&ns2, &size2); - while((d = readdir(dp))) { - if(strcmp(d->d_name, ".") - && strcmp(d->d_name, "..")) { - if(snprintf(ns1, size1, "%s/%s", s1, - d->d_name) >= size1) { - eprintf("%s/%s: filename too long\n", - s1, d->d_name); - } - - if(snprintf(ns2, size2, "%s/%s", s2, - d->d_name) >= size2) { - eprintf("%s/%s: filename too long\n", - s2, d->d_name); - } - fnck(ns1, ns2, cp); - } - } - closedir(dp); - free(ns1); - free(ns2); } + + if(!(dp = opendir(s1))) + eprintf("opendir %s:", s1); + + if (mkdir(s2, st.st_mode) == -1 && errno != EEXIST) + eprintf("mkdir %s:", s2); + + apathmax(&ns1, &size1); + apathmax(&ns2, &size2); + while((d = readdir(dp))) { + if(strcmp(d->d_name, ".") + && strcmp(d->d_name, "..")) { + if(snprintf(ns1, size1, "%s/%s", s1, + d->d_name) >= size1) { + eprintf("%s/%s: filename too long\n", + s1, d->d_name); + } + + if(snprintf(ns2, size2, "%s/%s", s2, + d->d_name) >= size2) { + eprintf("%s/%s: filename too long\n", + s2, d->d_name); + } + fnck(ns1, ns2, cp); + } + } + + closedir(dp); + free(ns1); + free(ns2); return 0; } if(!(f1 = fopen(s1, "r")))