diff --git a/CMakeLists.txt b/CMakeLists.txt index 5a0184166..84ceb566d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -243,11 +243,23 @@ if( HAVE_SYS_TIME_H AND HAVE_TIME_H ) endif( HAVE_SYS_TIME_H AND HAVE_TIME_H ) if( HAVE_SYS_ACL_H ) - set( USE_POSIX_ACL 1 ) + check_include_file( "acl/libacl.h" HAVE_ACL_LIBACL_H ) + if( HAVE_ACL_LIBACL_H ) + check_library_exists( acl acl_init "" HAVE_ACL_INIT ) + if( HAVE_ACL_INIT AND HAVE_SYS_XATTR_H ) + set( USE_POSIX_ACL 1 ) + set( HAVE_NON_POSIX_ACL_EXTENSIONS 1 ) + set( ACL_LIBRARIES acl attr ) + endif( HAVE_ACL_INIT AND HAVE_SYS_XATTR_H ) + else( HAVE_ACL_LIBACL_H ) + check_library_exists( c acl_init "" HAVE_ACL_INIT ) + if( HAVE_ACL_INIT ) + set( USE_POSIX_ACL 1 ) + set( ACL_LIBRARIES c ) + endif( HAVE_ACL_INIT ) + endif( HAVE_ACL_LIBACL_H ) endif( HAVE_SYS_ACL_H ) -check_include_file( "acl/libacl.h" HAVE_NON_POSIX_ACL_EXTENSIONS ) - check_include_file( "valgrind/memcheck.h" HAVE_VALGRIND_MEMCHECK_H ) check_include_file( "values.h" HAVE_VALUES_H ) check_include_file( "X11/extensions/shape.h" HAVE_X11_EXTENSIONS_SHAPE_H ) diff --git a/tdeio/CMakeLists.txt b/tdeio/CMakeLists.txt index 5fa0ded6d..c561e8294 100644 --- a/tdeio/CMakeLists.txt +++ b/tdeio/CMakeLists.txt @@ -55,10 +55,6 @@ if( HAVE_ELFICON ) set( ELFICON_STATIC_LIB tdelficon-static ) endif( HAVE_ELFICON ) -if( HAVE_NON_POSIX_ACL_EXTENSIONS ) - set( ACL_LIBRARIES acl ) -endif( HAVE_NON_POSIX_ACL_EXTENSIONS ) - ##### libtdeio #################################### diff --git a/tdeio/tdeio/CMakeLists.txt b/tdeio/tdeio/CMakeLists.txt index b4487db7f..77e122725 100644 --- a/tdeio/tdeio/CMakeLists.txt +++ b/tdeio/tdeio/CMakeLists.txt @@ -49,10 +49,9 @@ install( FILES kremoteencoding.h kmimetypechooser.h DESTINATION ${INCLUDE_INSTALL_DIR} ) -# FIXME seems that ACL is no longer optional -#if( USE_POSIX_ACL ) +if( USE_POSIX_ACL ) install( FILES kacl.h DESTINATION ${INCLUDE_INSTALL_DIR} ) -#endif( USE_POSIX_ACL ) +endif( USE_POSIX_ACL ) install( FILES connection.h slaveinterface.h slave.h slaveconfig.h @@ -111,10 +110,9 @@ set( ${target}_SRCS dataprotocol.cpp ) -# FIXME seems that ACL is no longer optional -#if( USE_POSIX_ACL ) +if( USE_POSIX_ACL ) set( ${target}_SRCS ${${target}_SRCS} kacl.cpp posixacladdons.cpp ) -#endif( USE_POSIX_ACL ) +endif( USE_POSIX_ACL ) tde_add_library( ${target} STATIC_PIC AUTOMOC SOURCES ${${target}_SRCS} diff --git a/tdeio/tdeio/posixacladdons.cpp b/tdeio/tdeio/posixacladdons.cpp index bae51592b..873f1a81e 100644 --- a/tdeio/tdeio/posixacladdons.cpp +++ b/tdeio/tdeio/posixacladdons.cpp @@ -21,6 +21,8 @@ #if defined(USE_POSIX_ACL) && !defined(HAVE_NON_POSIX_ACL_EXTENSIONS) +#include + #include #include @@ -61,7 +63,7 @@ protected: } }; -int acl_cmp(acl_t acl1, acl_t acl2) +KDE_EXPORT int acl_cmp(acl_t acl1, acl_t acl2) { if ( !acl1 || !acl2 ) return -1; @@ -127,7 +129,7 @@ int acl_cmp(acl_t acl1, acl_t acl2) return 0; } -acl_t acl_from_mode(mode_t mode) +KDE_EXPORT acl_t acl_from_mode(mode_t mode) { acl_t newACL = acl_init( 3 ); acl_entry_t entry; @@ -178,7 +180,7 @@ acl_t acl_from_mode(mode_t mode) return newACL; } -int acl_equiv_mode(acl_t acl, mode_t *mode_p) +KDE_EXPORT int acl_equiv_mode(acl_t acl, mode_t *mode_p) { acl_entry_t entry; acl_tag_t tag;