commit 76c197bbba8474e153870f758a017f2c5f9e2f78 Author: Yury Usishchev Date: Thu Feb 11 17:26:25 2016 +0300 add visibility("default") for api functions diff --git a/include/acl.h b/include/acl.h index e3347e1..34abfd6 100644 --- a/include/acl.h +++ b/include/acl.h @@ -27,6 +27,17 @@ extern "C" { #endif +/* Define for visibility */ +#if defined _WIN32 || defined __CYGWIN__ + #define API_EXPORT +#else + #if __GNUC__ >= 4 + #define API_EXPORT __attribute__ ((visibility ("default"))) + #else + #define API_EXPORT + #endif +#endif + /*=== Data types ===*/ struct __acl_ext; @@ -77,50 +88,50 @@ typedef struct __acl_permset_ext *acl_permset_t; /*=== ACL manipulation ===*/ -extern acl_t acl_init(int count); -extern acl_t acl_dup(acl_t acl); -extern int acl_free(void *obj_p); -extern int acl_valid(acl_t acl); +API_EXPORT extern acl_t acl_init(int count); +API_EXPORT extern acl_t acl_dup(acl_t acl); +API_EXPORT extern int acl_free(void *obj_p); +API_EXPORT extern int acl_valid(acl_t acl); /*=== Entry manipulation ===*/ -extern int +API_EXPORT extern int acl_copy_entry(acl_entry_t dest_d, acl_entry_t src_d); -extern int acl_create_entry(acl_t *acl_p, acl_entry_t *entry_p); -extern int acl_delete_entry(acl_t acl, acl_entry_t entry_d); -extern int acl_get_entry(acl_t acl, int entry_id, acl_entry_t *entry_p); +API_EXPORT extern int acl_create_entry(acl_t *acl_p, acl_entry_t *entry_p); +API_EXPORT extern int acl_delete_entry(acl_t acl, acl_entry_t entry_d); +API_EXPORT extern int acl_get_entry(acl_t acl, int entry_id, acl_entry_t *entry_p); /* Manipulate ACL entry permissions */ -extern int acl_add_perm(acl_permset_t permset_d, acl_perm_t perm); -extern int acl_calc_mask(acl_t *acl_p); -extern int acl_clear_perms(acl_permset_t permset_d); -extern int acl_delete_perm(acl_permset_t permset_d, acl_perm_t perm); -extern int acl_get_permset(acl_entry_t entry_d, acl_permset_t *permset_p); -extern int acl_set_permset(acl_entry_t entry_d, acl_permset_t permset_d); +API_EXPORT extern int acl_add_perm(acl_permset_t permset_d, acl_perm_t perm); +API_EXPORT extern int acl_calc_mask(acl_t *acl_p); +API_EXPORT extern int acl_clear_perms(acl_permset_t permset_d); +API_EXPORT extern int acl_delete_perm(acl_permset_t permset_d, acl_perm_t perm); +API_EXPORT extern int acl_get_permset(acl_entry_t entry_d, acl_permset_t *permset_p); +API_EXPORT extern int acl_set_permset(acl_entry_t entry_d, acl_permset_t permset_d); /* Manipulate ACL entry tag type and qualifier */ -extern void * acl_get_qualifier(acl_entry_t entry_d); -extern int acl_get_tag_type(acl_entry_t entry_d, acl_tag_t *tag_type_p); -extern int acl_set_qualifier(acl_entry_t entry_d, const void *tag_qualifier_p); -extern int acl_set_tag_type(acl_entry_t entry_d, acl_tag_t tag_type); +API_EXPORT extern void * acl_get_qualifier(acl_entry_t entry_d); +API_EXPORT extern int acl_get_tag_type(acl_entry_t entry_d, acl_tag_t *tag_type_p); +API_EXPORT extern int acl_set_qualifier(acl_entry_t entry_d, const void *tag_qualifier_p); +API_EXPORT extern int acl_set_tag_type(acl_entry_t entry_d, acl_tag_t tag_type); /*=== Format translation ===*/ -extern ssize_t acl_copy_ext(void *buf_p, acl_t acl, ssize_t size); -extern acl_t acl_copy_int(const void *buf_p); -extern acl_t acl_from_text(const char *buf_p); -extern ssize_t acl_size(acl_t acl); -extern char *acl_to_text(acl_t acl, ssize_t *len_p); +API_EXPORT extern ssize_t acl_copy_ext(void *buf_p, acl_t acl, ssize_t size); +API_EXPORT extern acl_t acl_copy_int(const void *buf_p); +API_EXPORT extern acl_t acl_from_text(const char *buf_p); +API_EXPORT extern ssize_t acl_size(acl_t acl); +API_EXPORT extern char *acl_to_text(acl_t acl, ssize_t *len_p); /*=== Object manipulation ===*/ -extern int acl_delete_def_file(const char *path_p); -extern acl_t acl_get_fd(int fd); -extern acl_t acl_get_file(const char *path_p, acl_type_t type); -extern int acl_set_fd(int fd, acl_t acl); -extern int acl_set_file(const char *path_p, acl_type_t type, acl_t acl); +API_EXPORT extern int acl_delete_def_file(const char *path_p); +API_EXPORT extern acl_t acl_get_fd(int fd); +API_EXPORT extern acl_t acl_get_file(const char *path_p, acl_type_t type); +API_EXPORT extern int acl_set_fd(int fd, acl_t acl); +API_EXPORT extern int acl_set_file(const char *path_p, acl_type_t type, acl_t acl); #ifdef __cplusplus } diff --git a/include/libacl.h b/include/libacl.h index d6a6650..bfced13 100644 --- a/include/libacl.h +++ b/include/libacl.h @@ -26,6 +26,17 @@ extern "C" { #endif +/* Define for visibility */ +#if defined _WIN32 || defined __CYGWIN__ + #define API_EXPORT +#else + #if __GNUC__ >= 4 + #define API_EXPORT __attribute__ ((visibility ("default"))) + #else + #define API_EXPORT + #endif +#endif + /* Flags for acl_to_any_text() */ /* Print NO, SOME or ALL effective permissions comments. SOME prints @@ -52,24 +63,24 @@ extern "C" { #define ACL_MISS_ERROR (0x3000) /* missing required entry */ #define ACL_ENTRY_ERROR (0x4000) /* wrong entry type */ -extern char *acl_to_any_text(acl_t acl, const char *prefix, +API_EXPORT extern char *acl_to_any_text(acl_t acl, const char *prefix, char separator, int options); -extern int acl_cmp(acl_t acl1, acl_t acl2); -extern int acl_check(acl_t acl, int *last); -extern acl_t acl_from_mode(mode_t mode); -extern int acl_equiv_mode(acl_t acl, mode_t *mode_p); -int acl_extended_file(const char *path_p); -int acl_extended_file_nofollow(const char *path_p); -int acl_extended_fd(int fd); -extern int acl_entries(acl_t acl); -extern const char *acl_error(int code); -extern int acl_get_perm(acl_permset_t permset_d, acl_perm_t perm); +API_EXPORT extern int acl_cmp(acl_t acl1, acl_t acl2); +API_EXPORT extern int acl_check(acl_t acl, int *last); +API_EXPORT extern acl_t acl_from_mode(mode_t mode); +API_EXPORT extern int acl_equiv_mode(acl_t acl, mode_t *mode_p); +API_EXPORT int acl_extended_file(const char *path_p); +API_EXPORT int acl_extended_file_nofollow(const char *path_p); +API_EXPORT int acl_extended_fd(int fd); +API_EXPORT extern int acl_entries(acl_t acl); +API_EXPORT extern const char *acl_error(int code); +API_EXPORT extern int acl_get_perm(acl_permset_t permset_d, acl_perm_t perm); /* Copying permissions between files */ struct error_context; -extern int perm_copy_file (const char *, const char *, +API_EXPORT extern int perm_copy_file (const char *, const char *, struct error_context *); -extern int perm_copy_fd (const char *, int, const char *, int, +API_EXPORT extern int perm_copy_fd (const char *, int, const char *, int, struct error_context *); #ifdef __cplusplus diff --git a/libacl/acl_add_perm.c b/libacl/acl_add_perm.c index 58ce7f5..8ae3fec 100644 --- a/libacl/acl_add_perm.c +++ b/libacl/acl_add_perm.c @@ -23,7 +23,7 @@ /* 23.4.1 */ -int +API_EXPORT int acl_add_perm(acl_permset_t permset_d, acl_perm_t perm) { acl_permset_obj *acl_permset_obj_p = ext2int(acl_permset, permset_d); diff --git a/libacl/acl_calc_mask.c b/libacl/acl_calc_mask.c index b2ec91a..243436c 100644 --- a/libacl/acl_calc_mask.c +++ b/libacl/acl_calc_mask.c @@ -23,7 +23,7 @@ /* 23.4.2 */ -int +API_EXPORT int acl_calc_mask(acl_t *acl_p) { acl_obj *acl_obj_p; diff --git a/libacl/acl_check.c b/libacl/acl_check.c index ebbc050..0268b99 100644 --- a/libacl/acl_check.c +++ b/libacl/acl_check.c @@ -40,7 +40,7 @@ 0 on success, -1 on error, or an ACL_*_ERROR value for invalid ACLs. */ -int +API_EXPORT int acl_check(acl_t acl, int *last) { acl_obj *acl_obj_p = ext2int(acl, acl); diff --git a/libacl/acl_clear_perms.c b/libacl/acl_clear_perms.c index 106e2d1..53b1d64 100644 --- a/libacl/acl_clear_perms.c +++ b/libacl/acl_clear_perms.c @@ -23,7 +23,7 @@ /* 23.4.3 */ -int +API_EXPORT int acl_clear_perms(acl_permset_t permset_d) { acl_permset_obj *acl_permset_obj_p = ext2int(acl_permset, permset_d); diff --git a/libacl/acl_cmp.c b/libacl/acl_cmp.c index ae42284..96a26c1 100644 --- a/libacl/acl_cmp.c +++ b/libacl/acl_cmp.c @@ -22,7 +22,7 @@ #include "libacl.h" -int +API_EXPORT int acl_cmp(acl_t acl1, acl_t acl2) { acl_obj *acl1_obj_p = ext2int(acl, acl1), diff --git a/libacl/acl_copy_entry.c b/libacl/acl_copy_entry.c index 85cebc8..16f6c9b 100644 --- a/libacl/acl_copy_entry.c +++ b/libacl/acl_copy_entry.c @@ -23,7 +23,7 @@ /* 23.4.4 */ -int +API_EXPORT int acl_copy_entry(acl_entry_t dest_d, acl_entry_t src_d) { acl_entry_obj *dest_p = ext2int(acl_entry, dest_d), diff --git a/libacl/acl_copy_ext.c b/libacl/acl_copy_ext.c index 7f51185..e1a26ba 100644 --- a/libacl/acl_copy_ext.c +++ b/libacl/acl_copy_ext.c @@ -23,7 +23,7 @@ /* 23.4.5 */ -ssize_t +API_EXPORT ssize_t acl_copy_ext(void *buf_p, acl_t acl, ssize_t size) { struct __acl *acl_ext = (struct __acl *)buf_p; diff --git a/libacl/acl_copy_int.c b/libacl/acl_copy_int.c index 7bcb0c9..63c0d3f 100644 --- a/libacl/acl_copy_int.c +++ b/libacl/acl_copy_int.c @@ -23,7 +23,7 @@ /* 23.4.6 */ -acl_t +API_EXPORT acl_t acl_copy_int(const void *buf_p) { const struct __acl *ext_acl = (struct __acl *)buf_p; diff --git a/libacl/acl_create_entry.c b/libacl/acl_create_entry.c index a1c4908..286a0cd 100644 --- a/libacl/acl_create_entry.c +++ b/libacl/acl_create_entry.c @@ -50,7 +50,7 @@ __acl_create_entry_obj(acl_obj *acl_obj_p) } /* 23.4.7 */ -int +API_EXPORT int acl_create_entry(acl_t *acl_p, acl_entry_t *entry_p) { acl_obj *acl_obj_p; diff --git a/libacl/acl_delete_def_file.c b/libacl/acl_delete_def_file.c index 845940c..80c7bc8 100644 --- a/libacl/acl_delete_def_file.c +++ b/libacl/acl_delete_def_file.c @@ -27,7 +27,7 @@ #include "libacl.h" /* 23.4.8 */ -int +API_EXPORT int acl_delete_def_file(const char *path_p) { int error; diff --git a/libacl/acl_delete_entry.c b/libacl/acl_delete_entry.c index a1ae6db..a8525c7 100644 --- a/libacl/acl_delete_entry.c +++ b/libacl/acl_delete_entry.c @@ -23,7 +23,7 @@ /* 23.4.9 */ -int +API_EXPORT int acl_delete_entry(acl_t acl, acl_entry_t entry_d) { acl_obj *acl_obj_p = ext2int(acl, acl); diff --git a/libacl/acl_delete_perm.c b/libacl/acl_delete_perm.c index 0dcb36e..e9ce3ae 100644 --- a/libacl/acl_delete_perm.c +++ b/libacl/acl_delete_perm.c @@ -23,7 +23,7 @@ /* 23.4.10 */ -int +API_EXPORT int acl_delete_perm(acl_permset_t permset_d, acl_perm_t perm) { acl_permset_obj *acl_permset_obj_p = ext2int(acl_permset, permset_d); diff --git a/libacl/acl_dup.c b/libacl/acl_dup.c index cb73cee..43a7c28 100644 --- a/libacl/acl_dup.c +++ b/libacl/acl_dup.c @@ -23,7 +23,7 @@ /* 23.4.11 */ -acl_t +API_EXPORT acl_t acl_dup(acl_t acl) { acl_entry_obj *entry_obj_p, *dup_entry_obj_p; diff --git a/libacl/acl_entries.c b/libacl/acl_entries.c index fc4dcbf..6b3dea2 100644 --- a/libacl/acl_entries.c +++ b/libacl/acl_entries.c @@ -22,7 +22,7 @@ #include "libacl.h" -int +API_EXPORT int acl_entries(acl_t acl) { acl_obj *acl_obj_p = ext2int(acl, acl); diff --git a/libacl/acl_equiv_mode.c b/libacl/acl_equiv_mode.c index b4c6de3..f099978 100644 --- a/libacl/acl_equiv_mode.c +++ b/libacl/acl_equiv_mode.c @@ -26,7 +26,7 @@ #include "libacl.h" -int +API_EXPORT int acl_equiv_mode(acl_t acl, mode_t *mode_p) { acl_obj *acl_obj_p = ext2int(acl, acl); diff --git a/libacl/acl_error.c b/libacl/acl_error.c index 8a361b0..d739a57 100644 --- a/libacl/acl_error.c +++ b/libacl/acl_error.c @@ -26,7 +26,7 @@ #include "config.h" -const char * +API_EXPORT const char * acl_error(int code) { switch(code) { diff --git a/libacl/acl_extended_fd.c b/libacl/acl_extended_fd.c index bbf9055..9c8bca7 100644 --- a/libacl/acl_extended_fd.c +++ b/libacl/acl_extended_fd.c @@ -26,7 +26,7 @@ #include "byteorder.h" #include "acl_ea.h" -int +API_EXPORT int acl_extended_fd(int fd) { int base_size = sizeof(acl_ea_header) + 3 * sizeof(acl_ea_entry); diff --git a/libacl/acl_extended_file.c b/libacl/acl_extended_file.c index 87f8e6e..29d0730 100644 --- a/libacl/acl_extended_file.c +++ b/libacl/acl_extended_file.c @@ -26,7 +26,7 @@ #include "__acl_extended_file.h" -int +API_EXPORT int acl_extended_file(const char *path_p) { return __acl_extended_file(path_p, getxattr); diff --git a/libacl/acl_extended_file_nofollow.c b/libacl/acl_extended_file_nofollow.c index a15b076..a5b4fd3 100644 --- a/libacl/acl_extended_file_nofollow.c +++ b/libacl/acl_extended_file_nofollow.c @@ -26,7 +26,7 @@ #include "__acl_extended_file.h" -int +API_EXPORT int acl_extended_file_nofollow(const char *path_p) { return __acl_extended_file(path_p, lgetxattr); diff --git a/libacl/acl_free.c b/libacl/acl_free.c index 8510bbf..1bac441 100644 --- a/libacl/acl_free.c +++ b/libacl/acl_free.c @@ -37,7 +37,7 @@ __acl_free_acl_obj(acl_obj *acl_obj_p) /* 23.4.12 */ -int +API_EXPORT int acl_free(void *obj_p) { obj_prefix *int_p = ((obj_prefix *)obj_p)-1; diff --git a/libacl/acl_from_mode.c b/libacl/acl_from_mode.c index 93dc689..f49e2d6 100644 --- a/libacl/acl_from_mode.c +++ b/libacl/acl_from_mode.c @@ -34,7 +34,7 @@ the new ACL. */ -acl_t +API_EXPORT acl_t acl_from_mode(mode_t mode) { acl_obj *acl_obj_p; diff --git a/libacl/acl_from_text.c b/libacl/acl_from_text.c index 83a4d21..9eb8b20 100644 --- a/libacl/acl_from_text.c +++ b/libacl/acl_from_text.c @@ -40,7 +40,7 @@ static int parse_acl_entry(const char **text_p, acl_t *acl_p); /* 23.4.13 */ -acl_t +API_EXPORT acl_t acl_from_text(const char *buf_p) { acl_t acl; diff --git a/libacl/acl_get_entry.c b/libacl/acl_get_entry.c index 2a0de66..1c8d20c 100644 --- a/libacl/acl_get_entry.c +++ b/libacl/acl_get_entry.c @@ -23,7 +23,7 @@ /* 23.4.14 */ -int +API_EXPORT int acl_get_entry(acl_t acl, int entry_id, acl_entry_t *entry_p) { acl_obj *acl_obj_p = ext2int(acl, acl); diff --git a/libacl/acl_get_fd.c b/libacl/acl_get_fd.c index 15e3880..3b8b1af 100644 --- a/libacl/acl_get_fd.c +++ b/libacl/acl_get_fd.c @@ -32,7 +32,7 @@ #include "acl_ea.h" /* 23.4.15 */ -acl_t +API_EXPORT acl_t acl_get_fd(int fd) { const size_t size_guess = acl_ea_size(16); diff --git a/libacl/acl_get_file.c b/libacl/acl_get_file.c index d3131bc..61aa350 100644 --- a/libacl/acl_get_file.c +++ b/libacl/acl_get_file.c @@ -32,7 +32,7 @@ #include "acl_ea.h" /* 23.4.16 */ -acl_t +API_EXPORT acl_t acl_get_file(const char *path_p, acl_type_t type) { const size_t size_guess = acl_ea_size(16); diff --git a/libacl/acl_get_perm.c b/libacl/acl_get_perm.c index 31357b2..caffa62 100644 --- a/libacl/acl_get_perm.c +++ b/libacl/acl_get_perm.c @@ -22,7 +22,7 @@ #include "libacl.h" -int +API_EXPORT int acl_get_perm(acl_permset_t permset_d, acl_perm_t perm) { acl_permset_obj *acl_permset_obj_p = ext2int(acl_permset, permset_d); diff --git a/libacl/acl_get_permset.c b/libacl/acl_get_permset.c index 85749f2..24ea896 100644 --- a/libacl/acl_get_permset.c +++ b/libacl/acl_get_permset.c @@ -23,7 +23,7 @@ /* 23.4.17 */ -int +API_EXPORT int acl_get_permset(acl_entry_t entry_d, acl_permset_t *permset_p) { acl_entry_obj *entry_obj_p = ext2int(acl_entry, entry_d); diff --git a/libacl/acl_get_qualifier.c b/libacl/acl_get_qualifier.c index 0961acf..fcf71ca 100644 --- a/libacl/acl_get_qualifier.c +++ b/libacl/acl_get_qualifier.c @@ -23,7 +23,7 @@ /* 23.4.18 */ -void * +API_EXPORT void * acl_get_qualifier(acl_entry_t entry_d) { acl_entry_obj *entry_obj_p = ext2int(acl_entry, entry_d); diff --git a/libacl/acl_get_tag_type.c b/libacl/acl_get_tag_type.c index 3075178..b559cc1 100644 --- a/libacl/acl_get_tag_type.c +++ b/libacl/acl_get_tag_type.c @@ -23,7 +23,7 @@ /* 23.4.19 */ -int +API_EXPORT int acl_get_tag_type(acl_entry_t entry_d, acl_tag_t *tag_type_p) { acl_entry_obj *entry_obj_p = ext2int(acl_entry, entry_d); diff --git a/libacl/acl_init.c b/libacl/acl_init.c index 5880c10..c3eb541 100644 --- a/libacl/acl_init.c +++ b/libacl/acl_init.c @@ -55,7 +55,7 @@ __acl_init_obj(int count) /* 23.4.20 */ -acl_t +API_EXPORT acl_t acl_init(int count) { acl_obj *obj; diff --git a/libacl/acl_set_fd.c b/libacl/acl_set_fd.c index 38dcd4a..8943e80 100644 --- a/libacl/acl_set_fd.c +++ b/libacl/acl_set_fd.c @@ -29,7 +29,7 @@ /* 23.4.21 */ -int +API_EXPORT int acl_set_fd(int fd, acl_t acl) { acl_obj *acl_obj_p = ext2int(acl, acl); diff --git a/libacl/acl_set_file.c b/libacl/acl_set_file.c index c234b4a..3ab4b51 100644 --- a/libacl/acl_set_file.c +++ b/libacl/acl_set_file.c @@ -31,7 +31,7 @@ /* 23.4.22 */ -int +API_EXPORT int acl_set_file(const char *path_p, acl_type_t type, acl_t acl) { acl_obj *acl_obj_p = ext2int(acl, acl); diff --git a/libacl/acl_set_permset.c b/libacl/acl_set_permset.c index 67bb520..b2a7282 100644 --- a/libacl/acl_set_permset.c +++ b/libacl/acl_set_permset.c @@ -23,7 +23,7 @@ /* 23.4.23 */ -int +API_EXPORT int acl_set_permset(acl_entry_t entry_d, acl_permset_t permset_d) { acl_entry_obj *entry_obj_p = ext2int(acl_entry, entry_d); diff --git a/libacl/acl_set_qualifier.c b/libacl/acl_set_qualifier.c index 59e86ff..c14c772 100644 --- a/libacl/acl_set_qualifier.c +++ b/libacl/acl_set_qualifier.c @@ -23,7 +23,7 @@ /* 23.4.24 */ -int +API_EXPORT int acl_set_qualifier(acl_entry_t entry_d, const void *tag_qualifier_p) { acl_entry_obj *entry_obj_p = ext2int(acl_entry, entry_d); diff --git a/libacl/acl_set_tag_type.c b/libacl/acl_set_tag_type.c index d2f2d67..d4d7d5e 100644 --- a/libacl/acl_set_tag_type.c +++ b/libacl/acl_set_tag_type.c @@ -23,7 +23,7 @@ /* 23.4.25 */ -int +API_EXPORT int acl_set_tag_type(acl_entry_t entry_d, acl_tag_t tag_type) { acl_entry_obj *entry_obj_p = ext2int(acl_entry, entry_d); diff --git a/libacl/acl_size.c b/libacl/acl_size.c index 20aa692..12ad75e 100644 --- a/libacl/acl_size.c +++ b/libacl/acl_size.c @@ -23,7 +23,7 @@ /* 23.4.26 */ -ssize_t +API_EXPORT ssize_t acl_size(acl_t acl) { acl_obj *acl_obj_p = ext2int(acl, acl); diff --git a/libacl/acl_to_any_text.c b/libacl/acl_to_any_text.c index 0d12539..0e3e327 100644 --- a/libacl/acl_to_any_text.c +++ b/libacl/acl_to_any_text.c @@ -27,7 +27,7 @@ #include #include "libacl.h" -char * +API_EXPORT char * acl_to_any_text(acl_t acl, const char *prefix, char separator, int options) { return __acl_to_any_text(acl, NULL, prefix, separator, NULL, options); diff --git a/libacl/acl_to_text.c b/libacl/acl_to_text.c index 1285b55..b77b072 100644 --- a/libacl/acl_to_text.c +++ b/libacl/acl_to_text.c @@ -24,7 +24,7 @@ #include #include "libacl.h" -char * +API_EXPORT char * acl_to_text(acl_t acl, ssize_t *len_p) { return __acl_to_any_text(acl, len_p, NULL, '\n', "\n", diff --git a/libacl/acl_valid.c b/libacl/acl_valid.c index 2dda372..3449c26 100644 --- a/libacl/acl_valid.c +++ b/libacl/acl_valid.c @@ -25,7 +25,7 @@ /* 23.4.28 */ -int +API_EXPORT int acl_valid(acl_t acl) { int result; diff --git a/libacl/libacl.h b/libacl/libacl.h index 08ba905..b556350 100644 --- a/libacl/libacl.h +++ b/libacl/libacl.h @@ -24,6 +24,17 @@ # define ENOATTR ENODATA #endif +/* Define for visibility */ +#if defined _WIN32 || defined __CYGWIN__ + #define API_EXPORT +#else + #if __GNUC__ >= 4 + #define API_EXPORT __attribute__ ((visibility ("default"))) + #else + #define API_EXPORT + #endif +#endif + typedef unsigned int permset_t; #define ACL_PERM_NONE (0x0000) diff --git a/libacl/perm_copy_fd.c b/libacl/perm_copy_fd.c index f9ae690..4b37d9f 100644 --- a/libacl/perm_copy_fd.c +++ b/libacl/perm_copy_fd.c @@ -142,7 +142,7 @@ chmod_only: /* Copy the permissions of src_path to dst_path. This includes the file mode permission bits and ACLs. File ownership is not copied. */ -int +API_EXPORT int perm_copy_fd (const char *src_path, int src_fd, const char *dst_path, int dst_fd, struct error_context *ctx) diff --git a/libacl/perm_copy_file.c b/libacl/perm_copy_file.c index 023294d..9b79b47 100644 --- a/libacl/perm_copy_file.c +++ b/libacl/perm_copy_file.c @@ -156,7 +156,7 @@ chmod_only: /* Copy the permissions of src_path to dst_path. This includes the file mode permission bits and ACLs. File ownership is not copied. */ -int +API_EXPORT int perm_copy_file (const char *src_path, const char *dst_path, struct error_context *ctx) {