Fixed the device/special discarding in get_xattr().
[rsync-patches.git] / soften-links.diff
1 Marco d'Itri wrote:
2
3 I run one of the debian mirrors, and I had to write this patch because
4 my archive is split between more than one disk. Would you accept a more
5 polished version of this patch for inclusion in rsync?
6
7 To use this patch, run these commands for a successful build:
8
9     patch -p1 <patches/soften-links.diff
10     ./configure                           (optional if already run)
11     make
12
13 diff --git a/syscall.c b/syscall.c
14 --- a/syscall.c
15 +++ b/syscall.c
16 @@ -63,9 +63,14 @@ int do_symlink(const char *fname1, const char *fname2)
17  #ifdef HAVE_LINK
18  int do_link(const char *fname1, const char *fname2)
19  {
20 +       int st;
21 +
22         if (dry_run) return 0;
23         RETURN_ERROR_IF_RO_OR_LO;
24 -       return link(fname1, fname2);
25 +       st = link(fname1, fname2);
26 +       if (/*soften_links &&*/ st != 0 && errno == EXDEV)
27 +               st = symlink(fname1, fname2);
28 +       return st;
29  }
30  #endif
31