- CAP "hex encoding" is not done anymore for '/', instead its converted to a single ':', the same as OS X does locally
- "use dots": dots are always saved as is
from = svol->vol->v_volcharset;
}
- if ( (svol->vol->v_path)
- && ! (svol->vol->v_flags & AFPVOL_USEDOTS)
- && (dvol->vol->v_flags & AFPVOL_USEDOTS)) {
- /* source is without dots, destination is with */
- flags |= CONV_UNESCAPEHEX;
- } else if (! (dvol->vol->v_flags & AFPVOL_USEDOTS)) {
- flags |= CONV_ESCAPEDOTS;
- }
-
int len = convert_charset(from,
dvol->vol->v_volcharset,
dvol->vol->v_maccharset,
s_path.u_name = sd.sd_last;
if (ad_convert(sd.sd_last, &s_path.st, vol, &convname) == 0 && convname) {
s_path.u_name = (char *)convname;
- s_path.unconverted_name = sd.sd_last; /* Needed for CNID fixup */
}
if (of_stat( &s_path) < 0 ) {
*/
int check_name(const struct vol *vol, char *name)
{
- if ((vol->v_flags & AFPVOL_NOHEX) && strchr(name, '/'))
- return AFPERR_PARAM;
-
if (!vol->vfs->vfs_validupath(vol, name)) {
LOG(log_error, logtype_afpd, "check_name: illegal name: '%s'", name);
return AFPERR_EXIST;
}
/* set conversion flags */
- if (!(myvol->v_flags & AFPVOL_NOHEX))
- flags |= CONV_ESCAPEHEX;
- if (!(myvol->v_flags & AFPVOL_USEDOTS))
- flags |= CONV_ESCAPEDOTS;
-
if ((myvol->v_casefold & AFPVOL_MTOUUPPER))
flags |= CONV_TOUPPER;
else if ((myvol->v_casefold & AFPVOL_MTOULOWER))
int m_type; /* mac name type (long name, unicode */
char *m_name; /* mac name */
char *u_name; /* unix name */
- char *unconverted_name; /* NULL or u_name before ad_convert() conversion */
cnid_t id; /* file id (only for getmetadata) */
struct dir *d_dir; /* */
int st_valid; /* does st_errno and st set */
#define AFPVOL_NOV2TOEACONV (1 << 5) /* no adouble:v2 to adouble:ea conversion */
#define AFPVOL_UNIX_CTXT (1 << 6) /* volume created by getvolbypath ie UNIX access, not afpd AFP user session */
#define AFPVOL_RO (1 << 8) /* read-only volume */
-#define AFPVOL_NOHEX (1 << 10) /* don't do :hex translation */
-#define AFPVOL_USEDOTS (1 << 11) /* use real dots */
#define AFPVOL_NOSTAT (1 << 16) /* advertise the volume even if we can't stat() it
* maybe because it will be mounted later in preexec */
#define AFPVOL_UNIX_PRIV (1 << 17) /* support unix privileges */
if (getoption_bool(obj->iniconfig, section, "read only", preset, 0))
volume->v_flags |= AFPVOL_RO;
- if (!getoption_bool(obj->iniconfig, section, "hex encoding", preset, 0))
- volume->v_flags |= AFPVOL_NOHEX;
- if (getoption_bool(obj->iniconfig, section, "use dots", preset, 1))
- volume->v_flags |= AFPVOL_USEDOTS;
if (getoption_bool(obj->iniconfig, section, "invisible dots", preset, 0))
volume->v_flags |= AFPVOL_INV_DOTS;
if (!getoption_bool(obj->iniconfig, section, "stat vol", preset, 1))
volume->v_ad_options |= ADVOL_INVDOTS;
/* Mac to Unix conversion flags*/
- if (!(volume->v_flags & AFPVOL_NOHEX)) {
- volume->v_mtou_flags |= CONV_ESCAPEHEX;
- volume->v_utom_flags |= CONV_UNESCAPEHEX;
- }
- if (!(volume->v_flags & AFPVOL_USEDOTS))
- volume->v_mtou_flags |= CONV_ESCAPEDOTS;
if ((volume->v_flags & AFPVOL_EILSEQ))
volume->v_mtou_flags |= CONV__EILSEQ;
if (name[0] != '.')
return 1;
- if (!(vol->v_flags & AFPVOL_USEDOTS))
- return 0;
-
return netatalk_name(name) && strcmp(name,".AppleDouble") && strcasecmp(name,".Parent");
}
if (name[0] != '.')
return 1;
- if (!(vol->v_flags & AFPVOL_USEDOTS))
- return 0;
-
#ifndef HAVE_EAFD
if (name[1] == '_')
return ad_valid_header_osx(name);