/*
- * $Id: desktop.c,v 1.42 2009-10-22 13:40:11 franklahm Exp $
+ * $Id: desktop.c,v 1.47 2009-11-27 12:37:24 didg Exp $
*
* See COPYRIGHT.
*
#include <ctype.h>
#include <errno.h>
-#include <dirent.h>
#include <atalk/adouble.h>
#include <sys/uio.h>
while (*rbuflen > 0) {
#ifdef WITH_SENDFILE
if (!obj->options.flags & OPTION_DEBUG) {
- if (sys_sendfile(dsi->socket, si.sdt_fd, &offset, dsi->datasize) < 0) {
+ if (dsi_stream_read_file(dsi, si.sdt_fd, offset, dsi->datasize) < 0) {
switch (errno) {
case ENOSYS:
case EINVAL: /* there's no guarantee that all fs support sendfile */
goto geticon_exit;
}
}
- goto geticon_done;
+ else {
+ dsi_readdone(dsi);
+ return AFP_OK;
+ }
}
#endif
buflen = read(si.sdt_fd, rbuf, *rbuflen);
*rbuflen = buflen;
}
-
+
dsi_readdone(dsi);
return AFP_OK;
char *m, *u;
size_t inplen;
size_t outlen;
- u_int16_t flags = 0;
+ u_int16_t flags;
if ( *mpath == '\0' ) {
return( "." );
}
/* set conversion flags */
- if (!(vol->v_flags & AFPVOL_NOHEX))
- flags |= CONV_ESCAPEHEX;
- if (!(vol->v_flags & AFPVOL_USEDOTS))
- flags |= CONV_ESCAPEDOTS;
-
- if ((vol->v_casefold & AFPVOL_MTOUUPPER))
- flags |= CONV_TOUPPER;
- else if ((vol->v_casefold & AFPVOL_MTOULOWER))
- flags |= CONV_TOLOWER;
-
- if ((vol->v_flags & AFPVOL_EILSEQ)) {
- flags |= CONV__EILSEQ;
- }
-
+ flags = vol->v_mtou_flags;
+
m = demangle(vol, mpath, did);
if (m != mpath) {
return m;
}
#ifdef DEBUG
- LOG(log_debug, logtype_afpd, "mtoupath: '%s':'%s'", mpath, upath);
+ LOG(log_debug9, logtype_afpd, "mtoupath: '%s':'%s'", mpath, upath);
#endif /* DEBUG */
return( upath );
}
{
static char mpath[ MAXPATHLEN + 2]; /* for convert_charset dest_len parameter +2 */
char *m, *u;
- u_int16_t flags = CONV_IGNORE | CONV_UNESCAPEHEX;
+ u_int16_t flags;
size_t outlen;
m = mpath;
outlen = strlen(upath);
- if ((vol->v_casefold & AFPVOL_UTOMUPPER))
- flags |= CONV_TOUPPER;
- else if ((vol->v_casefold & AFPVOL_UTOMLOWER))
- flags |= CONV_TOLOWER;
-
- if ((vol->v_flags & AFPVOL_EILSEQ)) {
- flags |= CONV__EILSEQ;
- }
+ flags = vol->v_utom_flags;
u = upath;
goto utompath_error;
}
- if (!(flags & CONV_REQMANGLE))
- flags = 0;
- else
- flags = 1;
+ flags = !!(flags & CONV_REQMANGLE);
if (utf8)
flags |= 2;
m = mangle(vol, mpath, outlen, upath, id, flags);
#ifdef DEBUG
- LOG(log_debug, logtype_afpd, "utompath: '%s':'%s':'%2.2X'", upath, m, ntohl(id));
+ LOG(log_debug9, logtype_afpd, "utompath: '%s':'%s':'%2.2X'", upath, m, ntohl(id));
#endif /* DEBUG */
return(m);
} else
adp = of->of_ad;
- if ( ad_metadata( upath,( isadir) ? ADFLAGS_DIR : 0, adp) < 0 ) {
+ if ( ad_metadata( upath,vol_noadouble(vol) | ((isadir) ? ADFLAGS_DIR : 0), adp) < 0 ) {
return( AFPERR_NOITEM );
}