extern int verbose;
extern int make_backups;
-#if SUPPORT_HARD_LINKS
+#ifdef SUPPORT_HARD_LINKS
static int hlink_compare(struct file_struct **file1, struct file_struct **file2)
{
struct file_struct *f1 = *file1;
if (f1->F_INODE != f2->F_INODE)
return (int) (f1->F_INODE > f2->F_INODE ? 1 : -1);
- return file_compare(file1, file2);
+ return f_name_cmp(f1, f2);
}
static struct file_struct **hlink_list;
void init_hard_links(struct file_list *flist)
{
-#if SUPPORT_HARD_LINKS
+#ifdef SUPPORT_HARD_LINKS
int i;
if (flist->count < 2)
int hard_link_check(struct file_struct *file, int skip)
{
+#ifdef SUPPORT_HARD_LINKS
if (!hlink_list || !file->link_u.links)
return 0;
if (skip && !(file->flags & FLAG_HLINK_EOL))
if (hlink_list[file->F_HLINDEX] != file) {
if (verbose > 1) {
rprintf(FINFO, "\"%s\" is a hard link\n",
- f_name(file));
+ safe_fname(f_name(file)));
}
return 1;
}
+#endif
return 0;
}
-#if SUPPORT_HARD_LINKS
+#ifdef SUPPORT_HARD_LINKS
static void hard_link_one(char *hlink1, char *hlink2)
{
if (do_link(hlink1, hlink2)) {
if (verbose) {
rsyserr(FINFO, errno, "link %s => %s failed",
- hlink2, hlink1);
+ full_fname(hlink2), safe_fname(hlink1));
}
}
else if (verbose)
- rprintf(FINFO, "%s => %s\n", hlink2, hlink1);
+ rprintf(FINFO, "%s => %s\n", safe_fname(hlink2), safe_fname(hlink1));
}
#endif
* Create any hard links in the global hlink_list. They were put
* there by running init_hard_links on the filelist.
**/
-void do_hard_links(void)
+void do_hard_links(int allowed_lull, int flist_count)
{
-#if SUPPORT_HARD_LINKS
+#ifdef SUPPORT_HARD_LINKS
struct file_struct *file, *first;
char hlink1[MAXPATHLEN];
char *hlink2;
}
hard_link_one(hlink1, hlink2);
}
+ if (allowed_lull)
+ maybe_send_keepalive(allowed_lull, flist_count);
}
#endif
}