aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2024-08-13 17:41:32 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2024-08-13 17:42:53 -0400
commit663a75eea92dceacf82635516e64d8ad341761cb (patch)
tree448cd01d092db0d3c8ecbc59729e7d76cbf06b04
parentd943633d4d925d7340708371be8abb09adf579fe (diff)
downloadstasis-remove-copytree.tar.gz
Remove unused copytree() functionremove-copytree
* Functionality was replaced by rsync long ago
-rw-r--r--include/copy.h18
-rw-r--r--src/copy.c84
2 files changed, 0 insertions, 102 deletions
diff --git a/include/copy.h b/include/copy.h
index a26ac30..0f92ddd 100644
--- a/include/copy.h
+++ b/include/copy.h
@@ -14,24 +14,6 @@
#define CT_PERM 1 << 2
/**
- * Recursively copy a directory, or a single file
- *
- * ```c
- * if (copytree("/source/path", "/destination/path", CT_PERM | CT_OWNER)) {
- * fprintf(stderr, "Unable to copy files\n");
- * exit(1);
- * }
- * ```
- *
- * @param srcdir source file or directory path
- * @param destdir destination directory
- * @param op CT_OWNER (preserve ownership)
- * @param op CT_PERM (preserve permission bits)
- * @return 0 on success, -1 on error
- */
-int copytree(const char *srcdir, const char *destdir, unsigned op);
-
-/**
* Copy a single file
*
* ```c
diff --git a/src/copy.c b/src/copy.c
index 7a397e6..f69a756 100644
--- a/src/copy.c
+++ b/src/copy.c
@@ -84,87 +84,3 @@ int copy2(const char *src, const char *dest, unsigned int op) {
}
return 0;
}
-
-int copytree(const char *srcdir, const char *destdir, unsigned int op) {
- DIR *dir;
- struct dirent *d;
- struct stat st;
- mode_t mode;
- mode_t umask_value;
- errno = 0;
-
- dir = opendir(srcdir);
- if (!dir) {
- return -1;
- }
-
- umask_value = umask(0);
- umask(umask_value);
-
- if (lstat(srcdir, &st) < 0) {
- perror(srcdir);
- closedir(dir);
- return -1;
- }
-
- if (op & CT_PERM) {
- mode = st.st_mode;
- } else {
- mode = 0777 & ~umask_value;
- }
-
- // Source directory is not writable so modify the mode for the destination
- if (mode & ~S_IWUSR) {
- mode |= S_IWUSR;
- }
-
- if (access(destdir, F_OK) < 0) {
- if (mkdirs(destdir, mode) < 0) {
- perror(destdir);
- closedir(dir);
- return -1;
- }
- }
-
- memset(&st, 0, sizeof(st));
- while ((d = readdir(dir)) != NULL) {
- char src[PATH_MAX] = {0};
- char dest[PATH_MAX] = {0};
- if (strcmp(d->d_name, ".") == 0 || strcmp(d->d_name, "..") == 0) {
- continue;
- }
- strcat(src, srcdir);
- strcat(src, "/");
- strcat(src, d->d_name);
-
- strcat(dest, destdir);
- strcat(dest, "/");
- strcat(dest, d->d_name);
-
- if (lstat(src, &st) < 0) {
- perror(srcdir);
- closedir(dir);
- return -1;
- }
-
- if (d->d_type == DT_DIR) {
- if (strncmp(src, dest, strlen(src)) == 0) {
- closedir(dir);
- return -1;
- }
-
- if (access(dest, F_OK) < 0) {
- if (mkdir(dest, mode) < 0) {
- perror(dest);
- closedir(dir);
- return -1;
- }
- }
-
- copytree(src, dest, op);
- }
- copy2(src, dest, op);
- }
- closedir(dir);
- return 0;
-}