summaryrefslogtreecommitdiff
path: root/hlink.c
diff options
context:
space:
mode:
authorWayne Davison <wayned@samba.org>2008-08-14 07:40:56 -0700
committerWayne Davison <wayned@samba.org>2008-08-14 07:40:56 -0700
commite982d591465013c547ab2371d4818345dac819ff (patch)
tree137f33b8408a02057ac7516a003eebce277ed739 /hlink.c
parentc78e4ea905bb31d965c9a2b2336bb0f9695ff0f2 (diff)
downloadrsync-e982d591465013c547ab2371d4818345dac819ff.tar.gz
Changed flist_for_ndx() to optionally die with an error
if the index isn't found.
Diffstat (limited to 'hlink.c')
-rw-r--r--hlink.c17
1 files changed, 4 insertions, 13 deletions
diff --git a/hlink.c b/hlink.c
index fede1537..cdafa9fa 100644
--- a/hlink.c
+++ b/hlink.c
@@ -36,7 +36,7 @@ extern int stdout_format_has_i;
extern int maybe_ATTRS_REPORT;
extern int unsort_ndx;
extern char *basis_dir[MAX_BASIS_DIRS+1];
-extern struct file_list *cur_flist, *first_flist;
+extern struct file_list *cur_flist;
#ifdef SUPPORT_HARD_LINKS
@@ -132,7 +132,7 @@ static void match_gnums(int32 *ndx_list, int ndx_count)
} else if (CVAL(node->data, 0) == 0) {
struct file_list *flist;
prev = IVAL(node->data, 1);
- flist = flist_for_ndx(prev);
+ flist = flist_for_ndx(prev, NULL);
if (flist)
flist->files[prev - flist->ndx_start]->flags &= ~FLAG_HLINK_LAST;
else {
@@ -261,7 +261,7 @@ static char *check_prior(struct file_struct *file, int gnum,
while (1) {
struct file_list *flist;
if (prev_ndx < 0
- || (flist = flist_for_ndx(prev_ndx)) == NULL)
+ || (flist = flist_for_ndx(prev_ndx, NULL)) == NULL)
break;
fp = flist->files[prev_ndx - flist->ndx_start];
if (!(fp->flags & FLAG_SKIP_HLINK)) {
@@ -504,16 +504,7 @@ void finish_hard_link(struct file_struct *file, const char *fname, int fin_ndx,
while ((ndx = prev_ndx) >= 0) {
int val;
- flist = flist_for_ndx(ndx);
- if (flist == NULL) {
- int start1 = first_flist ? first_flist->ndx_start : 0;
- int start2 = first_flist ? first_flist->prev->ndx_start : 0;
- int used = first_flist ? first_flist->prev->used : 0;
- rprintf(FERROR,
- "File index not found: %d (%d - %d)\n",
- ndx, start1 - 1, start2 + used - 1);
- exit_cleanup(RERR_PROTOCOL);
- }
+ flist = flist_for_ndx(ndx, "finish_hard_link");
file = flist->files[ndx - flist->ndx_start];
file->flags = (file->flags & ~FLAG_HLINK_FIRST) | FLAG_HLINK_DONE;
prev_ndx = F_HL_PREV(file);