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
5a788ade
Commit
5a788ade
authored
Nov 15, 1998
by
Andrew Tridgell
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
use native strlcat() and strlcpy() if available
parent
50abd20b
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
53 additions
and
38 deletions
+53
-38
configure.in
configure.in
+1
-0
compat.c
lib/compat.c
+40
-5
rsync.h
rsync.h
+10
-0
util.c
util.c
+2
-33
No files found.
configure.in
View file @
5a788ade
...
...
@@ -52,6 +52,7 @@ AC_FUNC_UTIME_NULL
AC_CHECK_FUNCS(mmap munmap waitpid getcwd strdup strerror chown chmod mknod)
AC_CHECK_FUNCS(fchmod fstat strchr readlink link utime utimes strftime)
AC_CHECK_FUNCS(memmove getopt_long lchown vsnprintf snprintf setsid glob strpbrk)
AC_CHECK_FUNCS(strlcat strlcpy)
echo $ac_n "checking for working fnmatch... $ac_c"
AC_TRY_RUN([#include <fnmatch.h>
...
...
lib/compat.c
View file @
5a788ade
...
...
@@ -36,7 +36,7 @@
#endif
#ifndef HAVE_GETCWD
char
*
getcwd
(
char
*
buf
,
int
size
)
char
*
getcwd
(
char
*
buf
,
int
size
)
{
return
getwd
(
buf
);
}
...
...
@@ -44,7 +44,7 @@ char *getcwd(char *buf, int size)
#ifndef HAVE_WAITPID
pid_t
waitpid
(
pid_t
pid
,
int
*
statptr
,
int
options
)
pid_t
waitpid
(
pid_t
pid
,
int
*
statptr
,
int
options
)
{
return
wait4
(
pid
,
statptr
,
options
,
NULL
);
}
...
...
@@ -52,7 +52,7 @@ pid_t waitpid(pid_t pid, int *statptr, int options)
#ifndef HAVE_MEMMOVE
void
*
memmove
(
void
*
dest
,
const
void
*
src
,
size_t
n
)
void
*
memmove
(
void
*
dest
,
const
void
*
src
,
size_t
n
)
{
memcpy
(
dest
,
src
,
n
);
return
dest
;
...
...
@@ -63,7 +63,7 @@ void *memmove(void *dest, const void *src, size_t n)
/* Find the first ocurrence in S of any character in ACCEPT.
derived from glibc
*/
char
*
strpbrk
(
const
char
*
s
,
const
char
*
accept
)
char
*
strpbrk
(
const
char
*
s
,
const
char
*
accept
)
{
while
(
*
s
!=
'\0'
)
{
const
char
*
a
=
accept
;
...
...
@@ -78,7 +78,7 @@ char *strpbrk(const char *s, const char *accept)
#endif
#ifdef REPLACE_INET_NTOA
char
*
rep_inet_ntoa
(
struct
in_addr
ip
)
char
*
rep_inet_ntoa
(
struct
in_addr
ip
)
{
unsigned
char
*
p
=
(
unsigned
char
*
)
&
ip
.
s_addr
;
static
char
buf
[
18
];
...
...
@@ -92,3 +92,38 @@ char *rep_inet_ntoa(struct in_addr ip)
return
buf
;
}
#endif
#ifndef HAVE_STRLCPY
/* like strncpy but does not 0 fill the buffer and always null
terminates. bufsize is the size of the destination buffer */
size_t
strlcpy
(
char
*
d
,
const
char
*
s
,
size_t
bufsize
)
{
size_t
len
=
strlen
(
s
);
size_t
ret
=
len
;
if
(
len
>=
bufsize
)
len
=
bufsize
-
1
;
memcpy
(
d
,
s
,
len
);
d
[
len
]
=
0
;
return
ret
;
}
#endif
#ifndef HAVE_STRLCAT
/* like strncat but does not 0 fill the buffer and always null
terminates. bufsize is the length of the buffer, which should
be one more than the maximum resulting string length */
size_t
strlcat
(
char
*
d
,
const
char
*
s
,
size_t
bufsize
)
{
size_t
len1
=
strlen
(
d
);
size_t
len2
=
strlen
(
s
);
size_t
ret
=
len1
+
len2
;
if
(
len1
+
len2
>=
bufsize
)
{
len2
=
bufsize
-
(
len1
+
1
);
}
if
(
len2
>
0
)
{
memcpy
(
d
+
len1
,
s
,
len2
);
d
[
len1
+
len2
]
=
0
;
}
return
ret
;
}
#endif
rsync.h
View file @
5a788ade
...
...
@@ -474,3 +474,13 @@ extern int errno;
#ifdef REPLACE_INET_NTOA
#define inet_ntoa rep_inet_ntoa
#endif
#ifndef HAVE_STRLCPY
size_t
strlcpy
(
char
*
d
,
const
char
*
s
,
size_t
bufsize
);
#endif
#ifndef HAVE_STRLCAT
size_t
strlcat
(
char
*
d
,
const
char
*
s
,
size_t
bufsize
);
#endif
util.c
View file @
5a788ade
...
...
@@ -358,37 +358,6 @@ void kill_all(int sig)
}
}
/* like strncpy but does not 0 fill the buffer and always null
terminates. bufsize is the size of the destination buffer */
size_t
strlcpy
(
char
*
d
,
const
char
*
s
,
size_t
bufsize
)
{
size_t
len
=
strlen
(
s
);
size_t
ret
=
len
;
if
(
len
>=
bufsize
)
len
=
bufsize
-
1
;
memcpy
(
d
,
s
,
len
);
d
[
len
]
=
0
;
return
ret
;
}
/* like strncat but does not 0 fill the buffer and always null
terminates. bufsize is the length of the buffer, which should
be one more than the maximum resulting string length */
size_t
strlcat
(
char
*
d
,
const
char
*
s
,
size_t
bufsize
)
{
size_t
len1
=
strlen
(
d
);
size_t
len2
=
strlen
(
s
);
size_t
ret
=
len1
+
len2
;
if
(
len1
+
len2
>=
bufsize
)
{
len2
=
bufsize
-
(
len1
+
1
);
}
if
(
len2
>
0
)
{
memcpy
(
d
+
len1
,
s
,
len2
);
d
[
len1
+
len2
]
=
0
;
}
return
ret
;
}
/* turn a user name into a uid */
int
name_to_uid
(
char
*
name
,
uid_t
*
uid
)
{
...
...
@@ -708,8 +677,8 @@ int pop_dir(char *dir)
to ensure that signed/unsigned usage is consistent between machines. */
int
u_strcmp
(
const
char
*
cs1
,
const
char
*
cs2
)
{
const
uchar
*
s1
=
(
uchar
*
)
cs1
;
const
uchar
*
s2
=
(
uchar
*
)
cs2
;
const
uchar
*
s1
=
(
const
uchar
*
)
cs1
;
const
uchar
*
s2
=
(
const
uchar
*
)
cs2
;
while
(
*
s1
&&
*
s2
&&
(
*
s1
==
*
s2
))
{
s1
++
;
s2
++
;
...
...
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