diff options
author | Sean Burford <sburford@google.com> | 2016-07-19 10:27:20 +1000 |
---|---|---|
committer | Jay Satiro <raysatiro@yahoo.com> | 2017-02-01 01:11:52 -0500 |
commit | 1c877a0712b7851c7f286007193668058ed2e987 (patch) | |
tree | cdb3c03281d503769756b8af62bd4172a2b37abe | |
parent | 028391df5d84d9fae3433afdee9261d565900355 (diff) |
cmake: Support curl --xattr when built with cmake
- Test for and set HAVE_FSETXATTR when support for extended file
attributes is present.
Closes https://github.com/curl/curl/pull/1176
-rw-r--r-- | CMake/CurlTests.c | 16 | ||||
-rw-r--r-- | CMakeLists.txt | 8 | ||||
-rw-r--r-- | lib/curl_config.h.cmake | 9 |
3 files changed, 33 insertions, 0 deletions
diff --git a/CMake/CurlTests.c b/CMake/CurlTests.c index ceff39151..bc36c8ef7 100644 --- a/CMake/CurlTests.c +++ b/CMake/CurlTests.c @@ -533,3 +533,19 @@ main () { return 0; } #endif +#ifdef HAVE_FSETXATTR_6 +#include <sys/xattr.h> /* header from libc, not from libattr */ +int +main() { + fsetxattr(0, 0, 0, 0, 0, 0); + return 0; +} +#endif +#ifdef HAVE_FSETXATTR_5 +#include <sys/xattr.h> /* header from libc, not from libattr */ +int +main() { + fsetxattr(0, 0, 0, 0, 0); + return 0; +} +#endif diff --git a/CMakeLists.txt b/CMakeLists.txt index 14ecceba8..17606bf65 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -611,6 +611,7 @@ check_include_file_concat("sys/types.h" HAVE_SYS_TYPES_H) check_include_file_concat("sys/uio.h" HAVE_SYS_UIO_H) check_include_file_concat("sys/un.h" HAVE_SYS_UN_H) check_include_file_concat("sys/utime.h" HAVE_SYS_UTIME_H) +check_include_file_concat("sys/xattr.h" HAVE_SYS_XATTR_H) check_include_file_concat("alloca.h" HAVE_ALLOCA_H) check_include_file_concat("arpa/inet.h" HAVE_ARPA_INET_H) check_include_file_concat("arpa/tftp.h" HAVE_ARPA_TFTP_H) @@ -822,6 +823,13 @@ check_symbol_exists(setsockopt "${CURL_INCLUDES}" HAVE_SETSOCKOPT) # symbol exists in win32, but function does not. check_function_exists(inet_pton HAVE_INET_PTON) +check_symbol_exists(fsetxattr "${CURL_INCLUDES}" HAVE_FSETXATTR) +if(HAVE_FSETXATTR) + foreach(CURL_TEST HAVE_FSETXATTR_5 HAVE_FSETXATTR_6) + curl_internal_test_run(${CURL_TEST}) + endforeach(CURL_TEST) +endif(HAVE_FSETXATTR) + # sigaction and sigsetjmp are special. Use special mechanism for # detecting those, but only if previous attempt failed. if(HAVE_SIGNAL_H) diff --git a/lib/curl_config.h.cmake b/lib/curl_config.h.cmake index 33c15cb6f..49c1b8a2d 100644 --- a/lib/curl_config.h.cmake +++ b/lib/curl_config.h.cmake @@ -518,6 +518,15 @@ /* Define to 1 if you have the send function. */ #cmakedefine HAVE_SEND 1 +/* Define to 1 if you have the 'fsetxattr' function. */ +#cmakedefine HAVE_FSETXATTR 1 + +/* fsetxattr() takes 5 args */ +#cmakedefine HAVE_FSETXATTR_5 1 + +/* fsetxattr() takes 6 args */ +#cmakedefine HAVE_FSETXATTR_6 1 + /* Define to 1 if you have the <setjmp.h> header file. */ #cmakedefine HAVE_SETJMP_H 1 |