mirror of
https://github.com/amadvance/snapraid.git
synced 2026-10-26 02:49:02 -04:00
Adds support for hardlinks.
This commit is contained in:
parent
a5aa964f8f
commit
501e8e7ec3
2 changed files with 11 additions and 3 deletions
|
|
@ -132,6 +132,7 @@ struct windows_stat {
|
|||
int64_t st_size;
|
||||
int64_t st_mtime;
|
||||
uint32_t st_mode;
|
||||
uint32_t st_nlink;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -167,6 +168,8 @@ static inline void windows_info2stat(const BY_HANDLE_FILE_INFORMATION* info, str
|
|||
st->st_ino = info->nFileIndexHigh;
|
||||
st->st_ino <<= 32;
|
||||
st->st_ino |= info->nFileIndexLow;
|
||||
|
||||
st->st_nlink = info->nNumberOfLinks;
|
||||
}
|
||||
|
||||
static inline int windows_fstat(int fd, struct windows_stat* st)
|
||||
|
|
|
|||
11
scan.c
11
scan.c
|
|
@ -124,8 +124,13 @@ static void scan_file(struct snapraid_scan* scan, struct snapraid_state* state,
|
|||
if (file) {
|
||||
/* check if multiple files have the same inode */
|
||||
if (file->is_present) {
|
||||
fprintf(stderr, "Internal inode '%llu' inconsistency for file '%s'\n", inode, sub);
|
||||
exit(EXIT_FAILURE);
|
||||
if (st->st_nlink > 1) {
|
||||
printf("warning: Ignored hardlink '/%s'\n", sub);
|
||||
return;
|
||||
} else {
|
||||
fprintf(stderr, "Internal inode '%llu' inconsistency for file '%s'\n", inode, sub);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
|
||||
/* check if the file is not changed */
|
||||
|
|
@ -255,7 +260,7 @@ static void scan_dir(struct snapraid_scan* scan, struct snapraid_state* state, s
|
|||
}
|
||||
} else {
|
||||
if (state->verbose) {
|
||||
printf("warning: Ignored file '/%s'\n", sub_next);
|
||||
printf("warning: Ignored special file '/%s'\n", sub_next);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue