static int hlink_compare(struct file_struct **file1, struct file_struct **file2)
{
struct file_struct *f1 = *file1;
static int hlink_compare(struct file_struct **file1, struct file_struct **file2)
{
struct file_struct *f1 = *file1;
#define LINKED(p1,p2) ((p1)->F_DEV == (p2)->F_DEV \
&& (p1)->F_INODE == (p2)->F_INODE)
#define LINKED(p1,p2) ((p1)->F_DEV == (p2)->F_DEV \
&& (p1)->F_INODE == (p2)->F_INODE)
return 0;
if (skip && !(file->flags & FLAG_HLINK_EOL))
hlink_list[file->F_HLINDEX] = file->F_NEXT;
if (hlink_list[file->F_HLINDEX] != file) {
if (verbose > 1) {
rprintf(FINFO, "\"%s\" is a hard link\n",
return 0;
if (skip && !(file->flags & FLAG_HLINK_EOL))
hlink_list[file->F_HLINDEX] = file->F_NEXT;
if (hlink_list[file->F_HLINDEX] != file) {
if (verbose > 1) {
rprintf(FINFO, "\"%s\" is a hard link\n",
static void hard_link_one(char *hlink1, char *hlink2)
{
if (do_link(hlink1, hlink2)) {
if (verbose) {
static void hard_link_one(char *hlink1, char *hlink2)
{
if (do_link(hlink1, hlink2)) {
if (verbose) {
- rprintf(FINFO, "link %s => %s failed: %s\n",
- hlink2, hlink1, strerror(errno));
+ rsyserr(FINFO, errno, "link %s => %s failed",
+ full_fname(hlink2), safe_fname(hlink1));
- rprintf(FINFO, "%s => %s\n", hlink2, hlink1);
+ rprintf(FINFO, "%s => %s\n", safe_fname(hlink2), safe_fname(hlink1));
- if (link_stat(f_name_to(first, hlink1), &st1) != 0)
+ if (link_stat(f_name_to(first, hlink1), &st1, 0) < 0)