--- XARemoveOperation.c 2005-02-11 21:08:05.000000000 +0100 +++ XARemoveOperation.c.new 2006-04-19 17:35:08.000000000 +0200 @@ -9,7 +9,9 @@ #include "XARemoveOperation.h" #include -#include "xattr.h" +#include +#include +#include typedef struct __XARemoveOperation { @@ -121,7 +123,7 @@ Boolean XARemoveOperationPerform(XAOperationRef opaqueRef, int fd, CFStringRef path) { - Boolean bRet = 0x00; + Boolean bRet = 0x01; XARemoveOperationRef operationRef = (XARemoveOperationRef)opaqueRef; @@ -129,14 +131,22 @@ char *key = calloc(bSize, sizeof(*key)); - int options = XATTR_CREATE | XATTR_REPLACE; + int options = 0x00; if(CFStringGetCString(operationRef->key, key, bSize, kCFStringEncodingUTF8)) { + int fRet = fcntl(fd, F_NOCACHE, 0x01); + + if(fRet < 0x00) + fprintf(stderr, "WARN: fcntl for key \"%s\" failed\n", key); + int iRet = fremovexattr(fd, key, options); if(iRet < 0x00) { + if(errno != ENOATTR) + fprintf(stderr, "ERROR: fremovexattr failed: %s\n", strerror(errno)); + bRet = 0x00; } }