aboutsummaryrefslogtreecommitdiffstats
path: root/hlink.c
diff options
context:
space:
mode:
authorMartin Pool <mbp@samba.org>2002-01-11 07:11:43 +0000
committerMartin Pool <mbp@samba.org>2002-01-11 07:11:43 +0000
commit6e69cff118cf6533854052d90295fdc7d117511d (patch)
tree6bdf1cd8cfc7332dc06bed4efca398b92b7f9c48 /hlink.c
parentcf72f20426c4b6c9c2467185f85e09e0028d39b6 (diff)
downloadandroid_external_rsync-6e69cff118cf6533854052d90295fdc7d117511d.tar.gz
android_external_rsync-6e69cff118cf6533854052d90295fdc7d117511d.tar.bz2
android_external_rsync-6e69cff118cf6533854052d90295fdc7d117511d.zip
Autoindent
Add copyright
Diffstat (limited to 'hlink.c')
-rw-r--r--hlink.c150
1 files changed, 84 insertions, 66 deletions
diff --git a/hlink.c b/hlink.c
index 561ea736..45366366 100644
--- a/hlink.c
+++ b/hlink.c
@@ -1,6 +1,7 @@
/*
Copyright (C) Andrew Tridgell 1996
Copyright (C) Paul Mackerras 1996
+ Copyright (C) 2002 by Martin Pool <mbp@samba.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -23,19 +24,22 @@ extern int dry_run;
extern int verbose;
#if SUPPORT_HARD_LINKS
-static int hlink_compare(struct file_struct *f1,struct file_struct *f2)
+static int hlink_compare(struct file_struct *f1, struct file_struct *f2)
{
- if (!S_ISREG(f1->mode) && !S_ISREG(f2->mode)) return 0;
- if (!S_ISREG(f1->mode)) return -1;
- if (!S_ISREG(f2->mode)) return 1;
+ if (!S_ISREG(f1->mode) && !S_ISREG(f2->mode))
+ return 0;
+ if (!S_ISREG(f1->mode))
+ return -1;
+ if (!S_ISREG(f2->mode))
+ return 1;
- if (f1->dev != f2->dev)
- return (int)(f1->dev>f2->dev?1:-1);
+ if (f1->dev != f2->dev)
+ return (int) (f1->dev > f2->dev ? 1 : -1);
- if (f1->inode != f2->inode)
- return (int)(f1->inode>f2->inode?1:-1);
+ if (f1->inode != f2->inode)
+ return (int) (f1->inode > f2->inode ? 1 : -1);
- return file_compare(&f1,&f2);
+ return file_compare(&f1, &f2);
}
@@ -47,22 +51,25 @@ void init_hard_links(struct file_list *flist)
{
#if SUPPORT_HARD_LINKS
int i;
- if (flist->count < 2) return;
+ if (flist->count < 2)
+ return;
- if (hlink_list) free(hlink_list);
-
- if (!(hlink_list =
- (struct file_struct *)malloc(sizeof(hlink_list[0])*flist->count)))
+ if (hlink_list)
+ free(hlink_list);
+
+ if (!(hlink_list =
+ (struct file_struct *) malloc(sizeof(hlink_list[0]) *
+ flist->count)))
out_of_memory("init_hard_links");
for (i = 0; i < flist->count; i++)
- memcpy(&hlink_list[i], flist->files[i], sizeof(hlink_list[0]));
+ memcpy(&hlink_list[i], flist->files[i],
+ sizeof(hlink_list[0]));
- qsort(hlink_list,flist->count,
- sizeof(hlink_list[0]),
- (int (*)())hlink_compare);
+ qsort(hlink_list, flist->count,
+ sizeof(hlink_list[0]), (int (*)()) hlink_compare);
- hlink_count=flist->count;
+ hlink_count = flist->count;
#endif
}
@@ -71,67 +78,77 @@ void init_hard_links(struct file_list *flist)
int check_hard_link(struct file_struct *file)
{
#if SUPPORT_HARD_LINKS
- int low=0,high=hlink_count-1;
- int ret=0;
-
- if (!hlink_list || !S_ISREG(file->mode)) return 0;
-
- while (low != high) {
- int mid = (low+high)/2;
- ret = hlink_compare(&hlink_list[mid],file);
- if (ret == 0) {
- low = mid;
- break;
- }
- if (ret > 0)
- high=mid;
- else
- low=mid+1;
- }
-
- if (hlink_compare(&hlink_list[low],file) != 0) return 0;
-
- if (low > 0 &&
- S_ISREG(hlink_list[low-1].mode) &&
- file->dev == hlink_list[low-1].dev &&
- file->inode == hlink_list[low-1].inode)
- return 1;
+ int low = 0, high = hlink_count - 1;
+ int ret = 0;
+
+ if (!hlink_list || !S_ISREG(file->mode))
+ return 0;
+
+ while (low != high) {
+ int mid = (low + high) / 2;
+ ret = hlink_compare(&hlink_list[mid], file);
+ if (ret == 0) {
+ low = mid;
+ break;
+ }
+ if (ret > 0)
+ high = mid;
+ else
+ low = mid + 1;
+ }
+
+ if (hlink_compare(&hlink_list[low], file) != 0)
+ return 0;
+
+ if (low > 0 &&
+ S_ISREG(hlink_list[low - 1].mode) &&
+ file->dev == hlink_list[low - 1].dev &&
+ file->inode == hlink_list[low - 1].inode)
+ return 1;
#endif
- return 0;
+ return 0;
}
#if SUPPORT_HARD_LINKS
static void hard_link_one(int i)
{
- STRUCT_STAT st1,st2;
+ STRUCT_STAT st1, st2;
- if (link_stat(f_name(&hlink_list[i-1]),&st1) != 0) return;
+ if (link_stat(f_name(&hlink_list[i - 1]), &st1) != 0)
+ return;
- if (link_stat(f_name(&hlink_list[i]),&st2) != 0) {
- if (do_link(f_name(&hlink_list[i-1]),f_name(&hlink_list[i])) != 0) {
+ if (link_stat(f_name(&hlink_list[i]), &st2) != 0) {
+ if (do_link
+ (f_name(&hlink_list[i - 1]),
+ f_name(&hlink_list[i])) != 0) {
if (verbose > 0)
- rprintf(FINFO,"link %s => %s : %s\n",
+ rprintf(FINFO, "link %s => %s : %s\n",
f_name(&hlink_list[i]),
- f_name(&hlink_list[i-1]),strerror(errno));
+ f_name(&hlink_list[i - 1]),
+ strerror(errno));
return;
}
} else {
- if (st2.st_dev == st1.st_dev && st2.st_ino == st1.st_ino) return;
-
+ if (st2.st_dev == st1.st_dev && st2.st_ino == st1.st_ino)
+ return;
+
if (robust_unlink(f_name(&hlink_list[i])) != 0 ||
- do_link(f_name(&hlink_list[i-1]),f_name(&hlink_list[i])) != 0) {
+ do_link(f_name(&hlink_list[i - 1]),
+ f_name(&hlink_list[i])) != 0) {
if (verbose > 0)
- rprintf(FINFO,"link %s => %s : %s\n",
+ rprintf(FINFO, "link %s => %s : %s\n",
f_name(&hlink_list[i]),
- f_name(&hlink_list[i-1]),strerror(errno));
+ f_name(&hlink_list[i - 1]),
+ strerror(errno));
return;
}
}
if (verbose > 0)
- rprintf(FINFO,"%s => %s\n",
- f_name(&hlink_list[i]),f_name(&hlink_list[i-1]));
+ rprintf(FINFO, "%s => %s\n",
+ f_name(&hlink_list[i]),
+ f_name(&hlink_list[i - 1]));
}
#endif
@@ -140,17 +157,18 @@ void do_hard_links(struct file_list *flist)
{
#if SUPPORT_HARD_LINKS
int i;
-
- if (!hlink_list) return;
- for (i=1;i<hlink_count;i++) {
+ if (!hlink_list)
+ return;
+
+ for (i = 1; i < hlink_count; i++) {
if (S_ISREG(hlink_list[i].mode) &&
- S_ISREG(hlink_list[i-1].mode) &&
- hlink_list[i].basename && hlink_list[i-1].basename &&
- hlink_list[i].dev == hlink_list[i-1].dev &&
- hlink_list[i].inode == hlink_list[i-1].inode) {
+ S_ISREG(hlink_list[i - 1].mode) &&
+ hlink_list[i].basename && hlink_list[i - 1].basename &&
+ hlink_list[i].dev == hlink_list[i - 1].dev &&
+ hlink_list[i].inode == hlink_list[i - 1].inode) {
hard_link_one(i);
- }
+ }
}
#endif
}