int result = AFP_OK;
int ccr;
struct path path;
- char *vpath = vol->v_path;
+ char *vpath = vol->v_realpath;
char *rrbuf = rbuf;
time_t start_time;
int num_rounds = NUM_ROUNDS;
/*
- * $Id: directory.c,v 1.132 2010-02-10 14:05:37 franklahm Exp $
+ * $Id: directory.c,v 1.133 2010-02-19 01:26:03 didg Exp $
*
* Copyright (c) 1990,1993 Regents of The University of Michigan.
* All Rights Reserved. See COPYRIGHT.
memcpy( p, u, n );
}
if ( d != curdir ) {
- n = strlen( vol->v_path );
+ n = strlen( vol->v_realpath );
if (p -n -1 < path) {
afp_errno = AFPERR_PARAM;
return -1;
}
*--p = '/';
p -= n;
- memcpy( p, vol->v_path, n );
+ memcpy( p, vol->v_realpath, n );
}
if ( (ret = lchdir( p )) != 0 ) {
LOG(log_debug, logtype_afpd, "movecwd('%s'): ret:%d, %u/%s", p, ret, errno, strerror(errno));
/*
- * $Id: filedir.c,v 1.70 2010-02-10 14:05:37 franklahm Exp $
+ * $Id: filedir.c,v 1.71 2010-02-19 01:26:03 didg Exp $
*
* Copyright (c) 1990,1993 Regents of The University of Michigan.
* All Rights Reserved. See COPYRIGHT.
p -= len;
memcpy( p, u, len );
}
- len = strlen( vol->v_path );
+ len = strlen( vol->v_realpath );
if (p -len -1 < path) {
return NULL;
}
*--p = '/';
p -= len;
- memcpy( p, vol->v_path, len );
+ memcpy( p, vol->v_realpath, len );
return( p );
}
/*
- * $Id: volume.c,v 1.117 2010-02-08 10:29:22 franklahm Exp $
+ * $Id: volume.c,v 1.118 2010-02-19 01:26:03 didg Exp $
*
* Copyright (c) 1990,1993 Regents of The University of Michigan.
* All Rights Reserved. See COPYRIGHT.
free(vol->v_macname);
vol->v_macname = NULL;
free(vol->v_path);
+ free(vol->v_realpath);
free(vol->v_password);
free(vol->v_veto);
free(vol->v_volcodepage);
LOG(log_error, logtype_afpd, "afp_openvol(%s): volume pathlen too long", volume->v_path);
return AFPERR_MISC;
}
+ volume->v_realpath = strdup(path);
if (volume_codepage(obj, volume) < 0) {
ret = AFPERR_MISC;
/*
- * $Id: volume.h,v 1.13 2010-02-08 10:29:22 franklahm Exp $
+ * $Id: volume.h,v 1.14 2010-02-19 01:26:03 didg Exp $
*
* Copyright (c) 1990,1994 Regents of The University of Michigan.
* All Rights Reserved. See COPYRIGHT.
u_int16_t v_vid;
int v_flags;
char *v_path;
+ char *v_realpath; /* canonical path */
struct dir *v_dir, *v_root;
struct dir *v_curdir; /* cache */
hash_t *v_hash;