Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: Modules/attr.c compile error on Mac OS X
- X-seq: zsh-workers 26697
- From: Peter Stephenson <p.w.stephenson@xxxxxxxxxxxx>
- To: zsh-workers@xxxxxxxxxx
- Subject: Re: Modules/attr.c compile error on Mac OS X
- Date: Sun, 8 Mar 2009 19:55:18 +0000
- In-reply-to: <16c5bb260903080021k4da0e6b1g8e40cc7520f84e8@xxxxxxxxxxxxxx>
- Mailing-list: contact zsh-workers-help@xxxxxxxxxx; run by ezmlm
- References: <16c5bb260903080021k4da0e6b1g8e40cc7520f84e8@xxxxxxxxxxxxxx>
On Sun, 8 Mar 2009 17:21:47 +0900
Taro M <taromeister@xxxxxxxxx> wrote:
> The new Modules/attr.c does not compile on Mac OS X (and probably others):
I don't know about the others, and you don't say, but a bit of research
suggests Mac OS X takes some extra arguments. I don't have Mac OS X so
can't test that; if it still doesn't compile, please could one of the
numerous Mac users provide a patch. If it compiles but doesn't work,
I will need someone else to research the problem.
General reminder not aimed at anyone particular: as I keep saying, I
really do need more help. Anyone with knowledge about specific systems
that may need special help is encouraged to provide it; patches are
useful even if incomplete (and preferred to text statements along the
lines of "wouldn't it be better to change ..."). This is supposed to be
a developer's mailing list. Thanks.
Index: configure.ac
===================================================================
RCS file: /cvsroot/zsh/zsh/configure.ac,v
retrieving revision 1.119
diff -u -r1.119 configure.ac
--- configure.ac 3 Mar 2009 15:04:17 -0000 1.119
+++ configure.ac 8 Mar 2009 19:51:18 -0000
@@ -1251,6 +1251,49 @@
shl_load shl_unload shl_findsym)
fi
+AH_TEMPLATE([XATTR_EXTRA_ARGS],
+Define if getxattr() etc. require additional MacOS-style arguments)
+if test x$ac_cv_func_getxattr = xyes && test x$ac_cv_header_sys_xattr_h = xyes
+then
+ AC_CACHE_CHECK(if getxattr etc. are Linux-like,
+ zsh_cv_getxattr_linux,
+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
+#include <sys/xattr.h>]],
+ [[
+ (void)listxattr("", 0, 0);
+ (void)getxattr("", "", 0, 0);
+ (void)setxattr("", "", "", 0, 0);
+ (void)removexattr("", "");
+ ]])],
+ [zsh_cv_getxattr_linux=yes],
+ [zsh_cv_getxattr_linux=no])])
+
+ if test x$zsh_cv_getxattr_linux != xyes; then
+ AC_CACHE_CHECK(if getxattr etc. are MAC-like,
+ zsh_cv_getxattr_mac,
+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
+#include <sys/xattr.h>]],
+ [[(void)listxattr("", 0, 0, 0);
+ (void)getxattr("", "", 0, 0, 0, 0);
+ (void)setxattr("", "", "", 0, 0, 0);
+ (void)removexattr("", "", 0);]])],
+ [zsh_cv_getxattr_mac=yes],
+ [zsh_cv_getxattr_mac=no])])
+
+ if test x$zsh_cv_getxattr_mac = xyes; then
+ AC_DEFINE(XATTR_EXTRA_ARGS)
+ fi
+ fi
+fi
+
+AC_CACHE_CHECK(if getxattr etc. are usable,
+zsh_cv_use_xattr,
+[if test x$zsh_cv_getxattr_linux = xyes || test x$zsh_cv_getxattr_mac = xyes
+then
+zsh_cv_use_xattr=yes
+else
+zsh_cv_use_xattr=no
+fi])
dnl -------------
dnl CHECK SIGNALS
Index: Src/Modules/attr.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/Modules/attr.c,v
retrieving revision 1.2
diff -u -r1.2 attr.c
--- Src/Modules/attr.c 3 Mar 2009 16:40:43 -0000 1.2
+++ Src/Modules/attr.c 8 Mar 2009 19:51:19 -0000
@@ -42,8 +42,16 @@
unmetafy(*argv, &slen);
unmetafy(*(argv+1), NULL);
- if (listxattr(*argv, NULL, 0) > 0) {
- if (0 < (len = getxattr(*argv, *(argv+1), value, 255))) {
+ if (listxattr(*argv, NULL, 0
+#ifdef XATTR_EXTRA_ARGS
+ , 0
+#endif
+ ) > 0) {
+ if (0 < (len = getxattr(*argv, *(argv+1), value, 255
+#ifdef XATTR_EXTRA_ARGS
+ , 0, 0
+#endif
+ ))) {
if (len < 256) {
value[len] = '\0';
if (*(argv+2))
@@ -67,7 +75,11 @@
unmetafy(*argv, &slen);
unmetafy(*(argv+1), NULL);
unmetafy(*(argv+2), NULL);
- if (setxattr(*argv, *(argv+1), *(argv+2), strlen(*(argv+2)), 0)) {
+ if (setxattr(*argv, *(argv+1), *(argv+2), strlen(*(argv+2)), 0
+#ifdef XATTR_EXTRA_ARGS
+ , 0
+#endif
+ )) {
zwarnnam(nam, "%s: %e", metafy(*argv, slen, META_NOALLOC), errno);
ret = 1;
}
@@ -81,7 +93,11 @@
unmetafy(*argv, &slen);
unmetafy(*(argv+1), NULL);
- if (removexattr(*argv, *(argv+1))) {
+ if (removexattr(*argv, *(argv+1)
+#ifdef XATTR_EXTRA_ARGS
+ , 0
+#endif
+ )) {
zwarnnam(nam, "%s: %e", metafy(*argv, slen, META_NOALLOC), errno);
ret = 1;
}
@@ -96,7 +112,11 @@
char value[256];
unmetafy(*argv, &slen);
- if (0 < (len = listxattr(*argv, value, 256))) {
+ if (0 < (len = listxattr(*argv, value, 256
+#ifdef XATTR_EXTRA_ARGS
+ , 0
+#endif
+ ))) {
if (len < 256) {
char *p = value;
if (*(argv+1))
Index: Src/Modules/attr.mdd
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/Modules/attr.mdd,v
retrieving revision 1.1
diff -u -r1.1 attr.mdd
--- Src/Modules/attr.mdd 3 Mar 2009 15:04:28 -0000 1.1
+++ Src/Modules/attr.mdd 8 Mar 2009 19:51:19 -0000
@@ -1,5 +1,5 @@
name=zsh/attr
-link='if test "x$ac_cv_func_getxattr" = xyes && test "x$ac_cv_header_sys_xattr_h" = xyes; then
+link='if test "x$zsh_cv_use_xattr" = xyes; then
echo dynamic
else
echo no
--
Peter Stephenson <p.w.stephenson@xxxxxxxxxxxx>
Web page now at http://homepage.ntlworld.com/p.w.stephenson/
Messages sorted by:
Reverse Date,
Date,
Thread,
Author