Index: configure.in =================================================================== RCS file: /cvs/gnome/beagle/configure.in,v retrieving revision 1.140 diff -u -B -p -r1.140 configure.in --- configure.in 9 Jun 2005 22:34:14 -0000 1.140 +++ configure.in 11 Jun 2005 22:14:29 -0000 @@ -50,9 +50,12 @@ done case "$target" in *-*-linux*) os=linux + AC_CHECK_LIB(attr, lsetxattr, XATTR_LIB="libattr",) + AC_CHECK_FUNC(lsetxattr, XATTR_LIB="libc",) ;; *-*-freebsd*) os=freebsd + AC_CHECK_FUNC(extattr_set_link, XATTR_LIB="libc") ;; *) AC_MSG_ERROR([Unrecognised target OS: $target]) @@ -61,6 +64,14 @@ esac AM_CONDITIONAL(OS_LINUX, test "x$os" == "xlinux") AM_CONDITIONAL(OS_FREEBSD, test "x$os" == "xfreebsd") +# check for xattr implementation +if test "x$XATTR_LIB" == "x"; then + AC_MSG_ERROR([Could not find a support extended attribute implementation (tried libc and libattr)]) +fi +AC_SUBST(XATTR_LIB) + + + # check for wsdl AC_PATH_PROG(WSDL, wsdl) @@ -507,6 +518,8 @@ po/Makefile.in echo " Target OS: ${os} + Extended Attributes: ${XATTR_LIB} + Prefix: ${prefix} GNOME Prefix: ${GNOME_PREFIX} KDE Prefix: ${kde_prefix_print} Index: Util/ExtendedAttribute.cs =================================================================== RCS file: /cvs/gnome/beagle/Util/ExtendedAttribute.cs,v retrieving revision 1.15 diff -u -B -p -r1.15 ExtendedAttribute.cs --- Util/ExtendedAttribute.cs 9 Jun 2005 22:34:14 -0000 1.15 +++ Util/ExtendedAttribute.cs 11 Jun 2005 22:14:30 -0000 @@ -42,25 +42,25 @@ namespace Beagle.Util { // Linux/FreeBSD attributes transparently. // Linux xattrs - [DllImport ("libc", SetLastError=true)] + [DllImport (ExternalStringsHack.XattrLib, SetLastError=true)] static extern int lsetxattr (string path, string name, byte[] value, uint size, int flags); - [DllImport ("libc", SetLastError=true)] + [DllImport (ExternalStringsHack.XattrLib, SetLastError=true)] static extern int lgetxattr (string path, string name, byte[] value, uint size); - [DllImport ("libc", SetLastError=true)] + [DllImport (ExternalStringsHack.XattrLib, SetLastError=true)] static extern int lremovexattr (string path, string name); // FreeBSD extattrs // Very similar to Linux xattrs, but the namespace is provided as a // parameter as opposed to a string prefix to the name. - [DllImport ("libc", SetLastError=true)] + [DllImport (ExternalStringsHack.XattrLib, SetLastError=true)] static extern int extattr_set_link (string path, int attrnamespace, string attrname, byte[] value, uint size); - [DllImport ("libc", SetLastError=true)] + [DllImport (ExternalStringsHack.XattrLib, SetLastError=true)] static extern int extattr_get_link (string path, int attrnamespace, string attrname, byte[] value, uint size); - [DllImport ("libc", SetLastError=true)] + [DllImport (ExternalStringsHack.XattrLib, SetLastError=true)] static extern int extattr_delete_link (string path, int attrnamespace, string attrname); private static string AddPrefix (string name) Index: Util/ExternalStringsHack.cs.in =================================================================== RCS file: /cvs/gnome/beagle/Util/ExternalStringsHack.cs.in,v retrieving revision 1.3 diff -u -B -p -r1.3 ExternalStringsHack.cs.in --- Util/ExternalStringsHack.cs.in 17 May 2005 21:24:55 -0000 1.3 +++ Util/ExternalStringsHack.cs.in 11 Jun 2005 22:14:30 -0000 @@ -35,5 +35,7 @@ namespace Beagle.Util { static public string KdePrefix { get { return "@KDE_PREFIX@"; } } + + static public const string XattrLib = "@XATTR_LIB@"; } } Index: Util/Makefile.am =================================================================== RCS file: /cvs/gnome/beagle/Util/Makefile.am,v retrieving revision 1.58 diff -u -B -p -r1.58 Makefile.am --- Util/Makefile.am 9 Jun 2005 22:34:14 -0000 1.58 +++ Util/Makefile.am 11 Jun 2005 22:14:30 -0000 @@ -33,6 +33,7 @@ $(EXTSTR): $(EXTSTR_IN) -e "s|\@VERSION\@|$(VERSION)|g" \ -e "s|\@GNOME_PREFIX\@|$(GNOME_PREFIX)|g" \ -e "s|\@KDE_PREFIX\@|$(KDE_PREFIX)|g" \ + -e "s|\@XATTR_LIB\@|$(XATTR_LIB)|g" \ < $(EXTSTR_IN) > $@ CSFILES = \