handle relative symlinks properly, and that has not yet been fixed
in this modified version.
---- orig/flist.c 2004-07-15 02:21:10
-+++ flist.c 2004-07-16 16:38:35
-@@ -49,6 +49,7 @@ extern int filesfrom_fd;
+--- orig/flist.c 2004-09-21 09:40:27
++++ flist.c 2004-07-16 16:58:04
+@@ -50,6 +50,7 @@ extern int filesfrom_fd;
extern int one_file_system;
extern int keep_dirlinks;
extern int preserve_links;
extern int preserve_hard_links;
extern int preserve_perms;
extern int preserve_devices;
-@@ -722,6 +723,30 @@ void receive_file_entry(struct file_stru
+@@ -726,6 +727,30 @@ void receive_file_entry(struct file_stru
}
+#if SUPPORT_LINKS
-+void links_depth(char *linkname, STRUCT_STAT *st_ptr)
++static int links_depth(char *linkname, STRUCT_STAT *st_ptr)
+{
+ char buf[MAXPATHLEN];
+ STRUCT_STAT st;
/**
* Create a file_struct for a named file by reading its stat()
* information and performing extensive checks against global
-@@ -841,7 +866,13 @@ skip_excludes:
+@@ -845,7 +870,13 @@ skip_excludes:
basename_len = strlen(basename) + 1; /* count the '\0' */
#if SUPPORT_LINKS
#else
linkname_len = 0;
#endif
---- orig/options.c 2004-07-15 19:11:33
+--- orig/options.c 2004-09-20 05:10:48
+++ options.c 2004-07-16 16:12:29
@@ -42,6 +42,7 @@ int archive_mode = 0;
int keep_dirlinks = 0;
int preserve_hard_links = 0;
int preserve_perms = 0;
int preserve_devices = 0;
-@@ -235,6 +236,7 @@ void usage(enum logcode F)
- rprintf(F," -u, --update update only (don't overwrite newer files)\n");
+@@ -244,6 +245,7 @@ void usage(enum logcode F)
+ rprintf(F," --inplace update destination files inplace (SEE MAN PAGE)\n");
rprintf(F," -K, --keep-dirlinks treat symlinked dir on receiver as dir\n");
rprintf(F," -l, --links copy symlinks as symlinks\n");
+ rprintf(F," --links-depth=NUM follow symlinks up to NUM depth\n");
rprintf(F," -L, --copy-links copy the referent of all symlinks\n");
rprintf(F," --copy-unsafe-links copy the referent of \"unsafe\" symlinks\n");
rprintf(F," --safe-links ignore \"unsafe\" symlinks\n");
-@@ -342,6 +344,7 @@ static struct poptOption long_options[]
- {"update", 'u', POPT_ARG_NONE, &update_only, 0, 0, 0 },
+@@ -353,6 +355,7 @@ static struct poptOption long_options[]
+ {"inplace", 0, POPT_ARG_NONE, &inplace, 0, 0, 0 },
{"keep-dirlinks", 'K', POPT_ARG_NONE, &keep_dirlinks, 0, 0, 0 },
{"links", 'l', POPT_ARG_NONE, &preserve_links, 0, 0, 0 },
+ {"links-depth", 0, POPT_ARG_INT, &follow_links_depth , 0, 0, 0 },