#include "mangle.h"
+typedef struct _U2MMAP {
+ char *mname;
+ char *uname;
+} U2MMAP;
+
+U2MMAP u2mmap[] = {
+ { "Network Trash Folder", ".AppleTrash" },
+ { "Temporary Items", ".AppleTemp" },
+ { "TheVolumeSettingsFolder", ".AppleVolumeSettings" },
+ { "TheFindByContentFolder", ".AppleFindByContent" },
+ { 0L, 0L } /* end of list */
+};
+
+
int afp_opendt(AFPObj *obj _U_, char *ibuf, size_t ibuflen _U_, char *rbuf, size_t *rbuflen)
{
struct vol *vol;
size_t inplen;
size_t outlen;
u_int16_t flags;
+ U2MMAP *u2m;
if ( *mpath == '\0' ) {
strcpy(upath, ".");
m = mpath;
u = upath;
+ u2m = u2mmap;
+ while(u2m->mname) {
+ if (strcmp(m, u2m->mname) == 0) {
+ m = u2m->uname;
+ }
+ u2m++;
+ }
+
inplen = strlen(m);
outlen = MAXPATHLEN;
char *m, *u;
u_int16_t flags;
size_t outlen;
+ U2MMAP *u2m;
m = mpath;
outlen = strlen(upath);
LOG(log_error, logtype_afpd, "Conversion from %s to %s for %s (%u) failed.", vol->v_volcodepage, vol->v_maccodepage, u, ntohl(id));
goto utompath_error;
}
+ mpath[outlen] = 0;
flags = !!(flags & CONV_REQMANGLE);
if (utf8)
flags |= 2;
+ u2m = u2mmap;
+ while(u2m->mname) {
+ if (strcmp(mpath, u2m->uname) == 0) {
+ strcpy(mpath, u2m->mname);
+ }
+ u2m++;
+ }
+
m = mangle(vol, mpath, outlen, upath, id, flags);
#ifdef DEBUG