/*
- * $Id: mangle.c,v 1.18 2006-09-18 01:06:44 didg Exp $
+ * $Id: mangle.c,v 1.19.4.1 2010-02-01 10:56:08 franklahm Exp $
*
* Copyright (c) 2002. Joe Marcus Clarke (marcus@marcuscom.com)
* All Rights Reserved. See COPYRIGHT.
static char *demangle_checks ( const struct vol *vol, char* uname, char * mfilename, size_t prefix, char * ext)
{
u_int16_t flags;
- static char buffer[MAXPATHLEN];
+ static char buffer[MAXPATHLEN +2]; /* for convert_charset dest_len parameter +2 */
size_t len;
size_t mfilenamelen;
/* check whether file extensions match */
{
- char buf[MAX_EXT_LENGTH + 1];
+ char buf[MAX_EXT_LENGTH + 2]; /* for convert_charset dest_len parameter +2 */
size_t ext_len = mangle_extension(vol, uname, buf, CH_UTF8_MAC);
if (ext_len) {
}
/* is it a dir?, there's a conflict with pre OSX 'trash #2' */
- if ((dir = dirsearch(vol, id))) {
- if (dir->d_parent && dir->d_parent->d_did != did) {
+ if ((dir = dirlookup(vol, id))) {
+ if (dir->d_did != did) {
/* not in the same folder, there's a race with outdate cache
* but we have to live with it, hopefully client will recover
*/
}
if (!osx) {
/* it's not from cname so mfilename and dir must be the same */
- if (!strcmp(dir->d_m_name, mfilename)) {
- return dir->d_u_name;
+ if (strcmp((char *)dir->d_m_name->data, mfilename) == 0) {
+ return (char *)dir->d_u_name->data;
}
}
else {
- return demangle_checks (vol, dir->d_u_name, mfilename, prefix, t);
+ return demangle_checks (vol, (char *)dir->d_u_name->data, mfilename, prefix, t);
}
}
else if (NULL != (u_name = cnid_resolve(vol->v_cdb, &id, buffer, len)) ) {
char *
mangle(const struct vol *vol, char *filename, size_t filenamelen, char *uname, cnid_t id, int flags) {
char *m = NULL;
- static char mfilename[MAXPATHLEN + 1];
+ static char mfilename[MAXPATHLEN]; /* way > maxlen */
char mangle_suffix[MANGLE_LENGTH + 1];
- char ext[MAX_EXT_LENGTH];
+ char ext[MAX_EXT_LENGTH +2]; /* for convert_charset dest_len parameter +2 */
size_t ext_len;
size_t maxlen;
int k;