X-Git-Url: https://arthur.barton.de/gitweb/?a=blobdiff_plain;f=etc%2Fafpd%2Fdesktop.c;h=eda917b10f69e853c504ab5496fe86222dc06fd8;hb=b0bcb8f6b0571592a50ce039882c9319e012a270;hp=8b6efd7e1bdac95dc73170d0ab6c0bdc4940b42c;hpb=e22bbf78a53bf739dd38383de42a23c95d43c15d;p=netatalk.git diff --git a/etc/afpd/desktop.c b/etc/afpd/desktop.c index 8b6efd7e..eda917b1 100644 --- a/etc/afpd/desktop.c +++ b/etc/afpd/desktop.c @@ -1,6 +1,4 @@ /* - * $Id: desktop.c,v 1.50.2.1 2010-02-01 10:56:08 franklahm Exp $ - * * See COPYRIGHT. * * bug: @@ -23,11 +21,9 @@ #include #include #include -#include -#include +#include + #include -#include -#include #include #include #include @@ -118,9 +114,6 @@ static int iconopen(struct vol *vol, u_char creator[ 4 ], int flags, int mode) int afp_addicon(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf, size_t *rbuflen) { struct vol *vol; -#ifndef NO_DDP - struct iovec iov[ 2 ]; -#endif u_char fcreator[ 4 ], imh[ 12 ], irh[ 12 ], *p; int itype, cc = AFP_OK, iovcnt = 0; size_t buflen; @@ -219,44 +212,6 @@ addicon_err: } switch (obj->proto) { -#ifndef NO_DDP - case AFPPROTO_ASP: - buflen = bsize; - if ((asp_wrtcont(obj->handle, rbuf, &buflen) < 0) || buflen != bsize) - return( AFPERR_PARAM ); - -#ifdef DEBUG1 - if (obj->options.flags & OPTION_DEBUG) { - printf("(write) len: %d\n", buflen); - bprint(rbuf, buflen); - } -#endif - - /* - * We're at the end of the file, add the headers, etc. */ - if ( cc == 0 ) { - iov[ 0 ].iov_base = (caddr_t)imh; - iov[ 0 ].iov_len = sizeof( imh ); - iov[ 1 ].iov_base = rbuf; - iov[ 1 ].iov_len = bsize; - iovcnt = 2; - } - - /* - * We found an icon to replace. - */ - if ( cc > 0 ) { - iov[ 0 ].iov_base = rbuf; - iov[ 0 ].iov_len = bsize; - iovcnt = 1; - } - - if ( writev( si.sdt_fd, iov, iovcnt ) < 0 ) { - LOG(log_error, logtype_afpd, "afp_addicon(%s): writev: %s", icon_dtfile(vol, fcreator), strerror(errno) ); - return( AFPERR_PARAM ); - } - break; -#endif /* no afp/asp */ case AFPPROTO_DSI: { DSI *dsi = obj->handle; @@ -694,7 +649,10 @@ static int ad_addcomment(struct vol *vol, struct path *path, char *ibuf) } else adp = of->of_ad; - if (ad_open_metadata( upath , ( (isadir) ? ADFLAGS_DIR : 0), O_CREAT, adp) < 0 ) { + if (ad_open(adp, upath, + ADFLAGS_HF | ( (isadir) ? ADFLAGS_DIR : 0), + O_CREAT | O_RDWR, + 0666) < 0 ) { return( AFPERR_ACCESS ); } @@ -844,7 +802,7 @@ static int ad_rmvcomment(struct vol *vol, struct path *path) } else adp = of->of_ad; - if ( ad_open_metadata( upath, (isadir) ? ADFLAGS_DIR : 0, 0, adp) < 0 ) { + if ( ad_open(adp, upath, ADFLAGS_HF | (isadir) ? ADFLAGS_DIR : 0, 0) < 0 ) { switch ( errno ) { case ENOENT : return( AFPERR_NOITEM );