- fixed bug in hard link handling that could lead to spurious hard
links.
- fixed bug in the string handling in flist.c
if (strncmp(p=name,"./",2) == 0) {
modified = 1;
if (strncmp(p=name,"./",2) == 0) {
modified = 1;
{
#if SUPPORT_HARD_LINKS
int low=0,high=hlink_count-1;
{
#if SUPPORT_HARD_LINKS
int low=0,high=hlink_count-1;
if (!hlink_list || !S_ISREG(file->mode)) return 0;
while (low != high) {
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) break;
if (ret > 0)
ret = hlink_compare(&hlink_list[mid],file);
if (ret == 0) break;
if (ret > 0)
- if (hlink_compare(&hlink_list[mid],file) != 0) return 0;
+ if (hlink_compare(&hlink_list[low],file) != 0) return 0;
- if (mid > 0 &&
- S_ISREG(hlink_list[mid-1].mode) &&
- file->dev == hlink_list[mid-1].dev &&
- file->inode == hlink_list[mid-1].inode)
+ if (low > 0 &&
+ S_ISREG(hlink_list[low-1].mode) &&
+ file->dev == hlink_list[low-1].dev &&
+ file->inode == hlink_list[low-1].inode)
-int do_cmd(char *cmd,char *machine,char *user,char *path,int *f_in,int *f_out)
+static int do_cmd(char *cmd,char *machine,char *user,char *path,int *f_in,int *f_out)
{
char *args[100];
int i,argc=0, ret;
{
char *args[100];
int i,argc=0, ret;