Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
liblongpath-rsync
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
liblongpath
liblongpath-rsync
Commits
4844449a
Commit
4844449a
authored
Jan 27, 2004
by
Wayne Davison
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Optimized the -x option by removing the skip_filesystem() call and using the
new FLAG_MOUNT_POINT flag.
parent
ae289aec
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
8 additions
and
28 deletions
+8
-28
flist.c
flist.c
+8
-28
No files found.
flist.c
View file @
4844449a
...
...
@@ -697,32 +697,6 @@ void receive_file_entry(struct file_struct **fptr, unsigned short flags, int f)
}
/* determine if a file in a different filesystem should be skipped
when one_file_system is set. We bascally only want to include
the mount points - but they can be hard to find! */
static
int
skip_filesystem
(
char
*
fname
,
STRUCT_STAT
*
st
)
{
STRUCT_STAT
st2
;
char
*
p
=
strrchr
(
fname
,
'/'
);
/* skip all but directories */
if
(
!
S_ISDIR
(
st
->
st_mode
))
return
1
;
/* if its not a subdirectory then allow */
if
(
!
p
)
return
0
;
*
p
=
0
;
if
(
link_stat
(
fname
,
&
st2
))
{
*
p
=
'/'
;
return
0
;
}
*
p
=
'/'
;
return
(
st2
.
st_dev
!=
filesystem_dev
);
}
#define STRDUP(ap, p) (ap ? string_area_strdup(ap, p) : strdup(p))
/* IRIX cc cares that the operands to the ternary have the same type. */
#define MALLOC(ap, i) (ap ? (void*) string_area_malloc(ap, i) : malloc(i))
...
...
@@ -751,6 +725,7 @@ struct file_struct *make_file(char *fname, struct string_area **ap,
char
*
p
;
char
cleaned_name
[
MAXPATHLEN
];
char
linkbuf
[
MAXPATHLEN
];
unsigned
short
flags
=
0
;
if
(
strlcpy
(
cleaned_name
,
fname
,
sizeof
cleaned_name
)
>=
sizeof
cleaned_name
-
flist_dir_len
)
{
...
...
@@ -791,8 +766,11 @@ struct file_struct *make_file(char *fname, struct string_area **ap,
}
if
(
one_file_system
&&
st
.
st_dev
!=
filesystem_dev
)
{
if
(
skip_filesystem
(
fname
,
&
st
))
/* We allow a directory though to preserve the mount point.
* However, flag it so that we don't recurse. */
if
(
!
S_ISDIR
(
st
.
st_mode
))
return
NULL
;
flags
|=
FLAG_MOUNT_POINT
;
}
if
(
check_exclude_file
(
fname
,
S_ISDIR
(
st
.
st_mode
)
!=
0
,
exclude_level
))
...
...
@@ -810,6 +788,7 @@ struct file_struct *make_file(char *fname, struct string_area **ap,
if
(
!
file
)
out_of_memory
(
"make_file"
);
memset
((
char
*
)
file
,
0
,
sizeof
(
*
file
));
file
->
flags
=
flags
;
if
((
p
=
strrchr
(
fname
,
'/'
)))
{
static
char
*
lastdir
;
...
...
@@ -893,7 +872,8 @@ void send_file_name(int f, struct file_list *flist, char *fname,
send_file_entry
(
file
,
f
,
base_flags
);
}
if
(
S_ISDIR
(
file
->
mode
)
&&
recursive
)
{
if
(
recursive
&&
S_ISDIR
(
file
->
mode
)
&&
!
(
file
->
flags
&
FLAG_MOUNT_POINT
))
{
struct
exclude_struct
**
last_exclude_list
=
local_exclude_list
;
send_directory
(
f
,
flist
,
f_name_to
(
file
,
fbuf
));
local_exclude_list
=
last_exclude_list
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment