From: Richard D. <ric...@us...> - 2008-05-03 09:22:09
|
Update of /cvsroot/file-extattr/File-ExtAttr In directory sc8-pr-cvs17.sourceforge.net:/tmp/cvs-serv24985 Modified Files: Changes extattr_macosx.c Log Message: Update Mac OS X layer to use new error reporting convention Index: Changes =================================================================== RCS file: /cvsroot/file-extattr/File-ExtAttr/Changes,v retrieving revision 1.41 retrieving revision 1.42 diff -C2 -d -r1.41 -r1.42 *** Changes 6 Apr 2008 09:21:22 -0000 1.41 --- Changes 3 May 2008 09:22:13 -0000 1.42 *************** *** 21,25 **** XXX: This is incomplete: ! - Test on FreeBSD, Solaris, Mac OS X. - Make sure I've actually addressed API concerns in #32670. --- 21,25 ---- XXX: This is incomplete: ! - Test on FreeBSD, Solaris. - Make sure I've actually addressed API concerns in #32670. *************** *** 28,31 **** --- 28,35 ---- is now via the function return values and $!. + - (richdawe) Operations with non-default or non-"user" namespaces + will now fail with EOPNOTSUPP instead of ENOATTR + on Mac OS X. This behaviour is like Linux. + 1.07 2007-12-15 Index: extattr_macosx.c =================================================================== RCS file: /cvsroot/file-extattr/File-ExtAttr/extattr_macosx.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** extattr_macosx.c 4 Nov 2007 09:00:10 -0000 1.4 --- extattr_macosx.c 3 May 2008 09:22:13 -0000 1.5 *************** *** 31,42 **** if (!File_ExtAttr_valid_default_namespace(flags)) { ! errno = ENOATTR; ok = 0; } ! if (ok) ret = setxattr(path, attrname, attrvalue, slen, 0, xflags); ! return ok ? ret : -1; } --- 31,48 ---- if (!File_ExtAttr_valid_default_namespace(flags)) { ! errno = EOPNOTSUPP; ! ret = -errno; ok = 0; } ! if (ok) { ret = setxattr(path, attrname, attrvalue, slen, 0, xflags); + if (ret < 0) { + ret = -errno; + ok = 0; + } + } ! return ret; } *************** *** 63,74 **** if (!File_ExtAttr_valid_default_namespace(flags)) { ! errno = ENOATTR; ok = 0; } ! if (ok) ret = fsetxattr(fd, attrname, attrvalue, slen, 0, xflags); ! return ok ? ret : -1; } --- 69,86 ---- if (!File_ExtAttr_valid_default_namespace(flags)) { ! errno = EOPNOTSUPP; ! ret = -errno; ok = 0; } ! if (ok) { ret = fsetxattr(fd, attrname, attrvalue, slen, 0, xflags); + if (ret < 0) { + ret = -errno; + ok = 0; + } + } ! return ret; } *************** *** 86,97 **** if (!File_ExtAttr_valid_default_namespace(flags)) { ! errno = ENOATTR; ok = 0; } ! if (ok) ret = getxattr(path, attrname, attrvalue, slen, 0, xflags); ! return ok ? ret : - 1; } --- 98,115 ---- if (!File_ExtAttr_valid_default_namespace(flags)) { ! errno = EOPNOTSUPP; ! ret = -errno; ok = 0; } ! if (ok) { ret = getxattr(path, attrname, attrvalue, slen, 0, xflags); + if (ret < 0) { + ret = -errno; + ok = 0; + } + } ! return ret; } *************** *** 109,120 **** if (!File_ExtAttr_valid_default_namespace(flags)) { ! errno = ENOATTR; ok = 0; } ! if (ok) ret = fgetxattr(fd, attrname, attrvalue, slen, 0, xflags); ! return ok ? ret : -1; } --- 127,144 ---- if (!File_ExtAttr_valid_default_namespace(flags)) { ! errno = EOPNOTSUPP; ! ret = -errno; ok = 0; } ! if (ok) { ret = fgetxattr(fd, attrname, attrvalue, slen, 0, xflags); + if (ret < 0) { + ret = -errno; + ok = 0; + } + } ! return ret; } *************** *** 130,141 **** if (!File_ExtAttr_valid_default_namespace(flags)) { ! errno = ENOATTR; ok = 0; } ! if (ok) ret = removexattr(path, attrname, xflags); ! return ok ? ret : -1; } --- 154,171 ---- if (!File_ExtAttr_valid_default_namespace(flags)) { ! errno = EOPNOTSUPP; ! ret = -errno; ok = 0; } ! if (ok) { ret = removexattr(path, attrname, xflags); + if (ret < 0) { + ret = -errno; + ok = 0; + } + } ! return ret; } *************** *** 151,162 **** if (!File_ExtAttr_valid_default_namespace(flags)) { ! errno = ENOATTR; ok = 0; } ! if (ok) ret = fremovexattr(fd, attrname, xflags); ! return ok ? ret : -1; } --- 181,198 ---- if (!File_ExtAttr_valid_default_namespace(flags)) { ! errno = EOPNOTSUPP; ! ret = -errno; ok = 0; } ! if (ok) { ret = fremovexattr(fd, attrname, xflags); + if (ret < 0) { + ret = -errno; + ok = 0; + } + } ! return ret; } *************** *** 172,183 **** if (!File_ExtAttr_valid_default_namespace(flags)) { ! errno = ENOATTR; ok = 0; } ! if (ok) ret = listxattr(path, buf, buflen, 0 /* XXX: flags? */); ! return ok ? ret : -1; } --- 208,225 ---- if (!File_ExtAttr_valid_default_namespace(flags)) { ! errno = EOPNOTSUPP; ! ret = -errno; ok = 0; } ! if (ok) { ret = listxattr(path, buf, buflen, 0 /* XXX: flags? */); + if (ret < 0) { + ret = -errno; + ok = 0; + } + } ! return ret; } *************** *** 193,204 **** if (!File_ExtAttr_valid_default_namespace(flags)) { ! errno = ENOATTR; ok = 0; } ! if (ok) ret = flistxattr(fd, buf, buflen, 0 /* XXX: flags? */); ! return ok ? ret : -1; } --- 235,252 ---- if (!File_ExtAttr_valid_default_namespace(flags)) { ! errno = EOPNOTSUPP; ! ret = -errno; ok = 0; } ! if (ok) { ret = flistxattr(fd, buf, buflen, 0 /* XXX: flags? */); + if (ret < 0) { + ret = -errno; + ok = 0; + } + } ! return ret; } *************** *** 211,216 **** ssize_t ret = listxattr(path, NULL, 0, 0 /* XXX: flags? */); ! if (ret > 0) ret = File_ExtAttr_default_listxattrns(buf, buflen); return ret; --- 259,267 ---- ssize_t ret = listxattr(path, NULL, 0, 0 /* XXX: flags? */); ! if (ret > 0) { ret = File_ExtAttr_default_listxattrns(buf, buflen); + } else if (ret < 0) { + ret = -errno; + } return ret; *************** *** 225,230 **** ssize_t ret = flistxattr(fd, NULL, 0, 0 /* XXX: flags? */); ! if (ret > 0) ret = File_ExtAttr_default_listxattrns(buf, buflen); return ret; --- 276,284 ---- ssize_t ret = flistxattr(fd, NULL, 0, 0 /* XXX: flags? */); ! if (ret > 0) { ret = File_ExtAttr_default_listxattrns(buf, buflen); + } else if (ret < 0) { + ret = -errno; + } return ret; |