69e49a8551
A long due update with important features such as long filenames, unicode, etc. From new maintainer "Arnaud Bergeron" <abergeron@gmail.com>
102 lines
2.9 KiB
Plaintext
102 lines
2.9 KiB
Plaintext
$OpenBSD: patch-libatalk_adouble_ad_open_c,v 1.1 2006/09/22 05:56:25 pvalchev Exp $
|
|
--- libatalk/adouble/ad_open.c.orig Sat Feb 12 06:22:05 2005
|
|
+++ libatalk/adouble/ad_open.c Fri Dec 30 21:36:40 2005
|
|
@@ -677,31 +677,30 @@ ad_path( path, adflags )
|
|
const char *path;
|
|
int adflags;
|
|
{
|
|
- static char pathbuf[ MAXPATHLEN + 1];
|
|
- char c, *slash, buf[MAXPATHLEN + 1];
|
|
+ static char pathbuf[MAXPATHLEN];
|
|
+ char c, *slash, buf[MAXPATHLEN];
|
|
size_t l;
|
|
|
|
- l = strlcpy(buf, path, MAXPATHLEN +1);
|
|
+ l = strlcpy(buf, path, MAXPATHLEN);
|
|
if ( adflags & ADFLAGS_DIR ) {
|
|
- strcpy( pathbuf, buf);
|
|
- if ( *buf != '\0' && l < MAXPATHLEN) {
|
|
- pathbuf[l++] = '/';
|
|
- pathbuf[l] = 0;
|
|
+ strlcpy(pathbuf, buf, sizeof(pathbuf));
|
|
+ if ( *buf != '\0' ) {
|
|
+ strlcat(pathbuf, "/", sizeof(pathbuf));
|
|
}
|
|
slash = ".Parent";
|
|
} else {
|
|
if (NULL != ( slash = strrchr( buf, '/' )) ) {
|
|
c = *++slash;
|
|
*slash = '\0';
|
|
- strcpy( pathbuf, buf);
|
|
+ strlcpy(pathbuf, buf, sizeof(pathbuf));
|
|
*slash = c;
|
|
} else {
|
|
pathbuf[ 0 ] = '\0';
|
|
slash = buf;
|
|
}
|
|
}
|
|
- strlcat( pathbuf, ".AppleDouble/", MAXPATHLEN +1);
|
|
- strlcat( pathbuf, slash, MAXPATHLEN +1);
|
|
+ strlcat( pathbuf, ".AppleDouble/", MAXPATHLEN);
|
|
+ strlcat( pathbuf, slash, MAXPATHLEN);
|
|
|
|
return( pathbuf );
|
|
}
|
|
@@ -715,27 +714,27 @@ ad_path_osx( path, adflags )
|
|
const char *path;
|
|
int adflags;
|
|
{
|
|
- static char pathbuf[ MAXPATHLEN + 1];
|
|
- char c, *slash, buf[MAXPATHLEN + 1];
|
|
+ static char pathbuf[MAXPATHLEN];
|
|
+ char c, *slash, buf[MAXPATHLEN];
|
|
|
|
if (!strcmp(path,".")) {
|
|
/* fixme */
|
|
getcwd(buf, MAXPATHLEN);
|
|
}
|
|
else {
|
|
- strlcpy(buf, path, MAXPATHLEN +1);
|
|
+ strlcpy(buf, path, MAXPATHLEN);
|
|
}
|
|
if (NULL != ( slash = strrchr( buf, '/' )) ) {
|
|
c = *++slash;
|
|
*slash = '\0';
|
|
- strlcpy( pathbuf, buf, MAXPATHLEN +1);
|
|
+ strlcpy( pathbuf, buf, MAXPATHLEN);
|
|
*slash = c;
|
|
} else {
|
|
pathbuf[ 0 ] = '\0';
|
|
slash = buf;
|
|
}
|
|
- strlcat( pathbuf, "._", MAXPATHLEN +1);
|
|
- strlcat( pathbuf, slash, MAXPATHLEN +1);
|
|
+ strlcat( pathbuf, "._", MAXPATHLEN);
|
|
+ strlcat( pathbuf, slash, MAXPATHLEN);
|
|
return pathbuf;
|
|
}
|
|
|
|
@@ -751,11 +750,11 @@ char
|
|
*ad_dir(path)
|
|
const char *path;
|
|
{
|
|
- static char modebuf[ MAXPATHLEN + 1];
|
|
+ static char modebuf[ MAXPATHLEN];
|
|
char *slash;
|
|
size_t len;
|
|
|
|
- if ( (len = strlen( path )) >= MAXPATHLEN ) {
|
|
+ if ( (len = strlen( path )) >= MAXPATHLEN - 1) {
|
|
errno = ENAMETOOLONG;
|
|
return NULL; /* can't do it */
|
|
}
|
|
@@ -765,7 +764,7 @@ char
|
|
* (path or subdirectory name) to get the name we want to stat.
|
|
* For a path which is just a filename, use "." instead.
|
|
*/
|
|
- strcpy( modebuf, path );
|
|
+ strlcpy( modebuf, path, sizeof(modebuf) );
|
|
slash = strrchr( modebuf, '/' );
|
|
/* is last char a '/' */
|
|
if (slash && slash[1] == 0) {
|