X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;ds=sidebyside;f=bacula%2Fsrc%2Ffiled%2Facl.c;h=11b8ea47d3f7af7219c9013d9dcb8cccf1c789a9;hb=ebcac6d33874b4db1defa15fe9fb9ff19948b77c;hp=6561b50e535de74cbbeb517b8903bb4f54a9d6ed;hpb=28ae0b816c34d84f7ec352e8053caa46e8779338;p=bacula%2Fbacula diff --git a/bacula/src/filed/acl.c b/bacula/src/filed/acl.c index 6561b50e53..11b8ea47d3 100644 --- a/bacula/src/filed/acl.c +++ b/bacula/src/filed/acl.c @@ -239,26 +239,18 @@ static acl_type_t bac_to_os_acltype(bacl_type acltype) * This should never happen, as the per os version function only tries acl * types supported on a certain platform. */ - ostype = ACL_TYPE_NONE; + ostype = (acl_type_t)ACL_TYPE_NONE; break; } return ostype; } +#if !defined(HAVE_DARWIN_OS) /* * See if an acl is a trivial one (e.g. just the stat bits encoded as acl.) * There is no need to store those acls as we already store the stat bits too. */ -#if defined(HAVE_DARWIN_OS) -static bool acl_is_trivial(acl_t acl) -{ - /* - * acl is trivial if it is empty. - */ - return (acl_entries(acl) == 0); -} -#else /* FreeBSD, IRIX, OSF1, Linux */ static bool acl_is_trivial(acl_t acl) { /* @@ -376,12 +368,11 @@ static int generic_get_acl_from_os(JCR *jcr, bacl_type acltype) } #endif +#if !defined(HAVE_DARWIN_OS) /* * Make sure this is not just a trivial ACL. */ - if ((acltype == BACL_TYPE_ACCESS || - acltype == BACL_TYPE_EXTENDED) && - acl_is_trivial(acl)) { + if (acltype == BACL_TYPE_ACCESS && acl_is_trivial(acl)) { /* * The ACLs simply reflect the (already known) standard permissions * So we don't send an ACL stream to the SD. @@ -390,6 +381,7 @@ static int generic_get_acl_from_os(JCR *jcr, bacl_type acltype) acl_free(acl); return 0; } +#endif if ((acl_text = acl_to_text(acl, NULL)) != NULL) { len = pm_strcpy(jcr->acl_data, acl_text); @@ -533,12 +525,12 @@ static bool darwin_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) */ if ((len = generic_get_acl_from_os(jcr, BACL_TYPE_ACCESS)) < 0) return false; -#endif if (len > 0) { - if (!send_acl_stream(jcr, STREAM_ACL_DARWIN_ACCESS_ACL_T, len)) + if (!send_acl_stream(jcr, STREAM_ACL_DARWIN_ACCESS_ACL, len)) return false; } +#endif return true; } @@ -547,7 +539,7 @@ static bool darwin_parse_acl_stream(JCR *jcr, int stream) { switch (stream) { case STREAM_UNIX_ACCESS_ACL: - case STREAM_ACL_DARWIN_ACCESS_ACL_T: + case STREAM_ACL_DARWIN_ACCESS_ACL: return generic_set_acl_on_os(jcr, BACL_TYPE_ACCESS); } @@ -565,7 +557,7 @@ static bool freebsd_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) return false; if (len > 0) { - if (!send_acl_stream(jcr, STREAM_ACL_FREEBSD_ACCESS_ACL_T, len)) + if (!send_acl_stream(jcr, STREAM_ACL_FREEBSD_ACCESS_ACL, len)) return false; } @@ -577,7 +569,7 @@ static bool freebsd_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) return false; if (len > 0) { - if (!send_acl_stream(jcr, STREAM_ACL_FREEBSD_DEFAULT_ACL_T, len)) + if (!send_acl_stream(jcr, STREAM_ACL_FREEBSD_DEFAULT_ACL, len)) return false; } } @@ -589,10 +581,10 @@ static bool freebsd_parse_acl_stream(JCR *jcr, int stream) { switch (stream) { case STREAM_UNIX_ACCESS_ACL: - case STREAM_ACL_FREEBSD_ACCESS_ACL_T: + case STREAM_ACL_FREEBSD_ACCESS_ACL: return generic_set_acl_on_os(jcr, BACL_TYPE_ACCESS); case STREAM_UNIX_DEFAULT_ACL: - case STREAM_ACL_FREEBSD_DEFAULT_ACL_T: + case STREAM_ACL_FREEBSD_DEFAULT_ACL: return generic_set_acl_on_os(jcr, BACL_TYPE_DEFAULT); } @@ -610,7 +602,7 @@ static bool irix_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) return false; if (len > 0) { - if (!send_acl_stream(jcr, STREAM_ACL_IRIX_ACCESS_ACL_T, len)) + if (!send_acl_stream(jcr, STREAM_ACL_IRIX_ACCESS_ACL, len)) return false; } @@ -622,7 +614,7 @@ static bool irix_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) return false; if (len > 0) { - if (!send_acl_stream(jcr, STREAM_ACL_IRIX_DEFAULT_ACL_T, len)) + if (!send_acl_stream(jcr, STREAM_ACL_IRIX_DEFAULT_ACL, len)) return false; } } @@ -634,10 +626,10 @@ static bool irix_parse_acl_stream(JCR *jcr, int stream) { switch (stream) { case STREAM_UNIX_ACCESS_ACL: - case STREAM_ACL_IRIX_ACCESS_ACL_T: + case STREAM_ACL_IRIX_ACCESS_ACL: return generic_set_acl_on_os(jcr, BACL_TYPE_ACCESS); case STREAM_UNIX_DEFAULT_ACL: - case STREAM_ACL_IRIX_DEFAULT_ACL_T: + case STREAM_ACL_IRIX_DEFAULT_ACL: return generic_set_acl_on_os(jcr, BACL_TYPE_DEFAULT); } @@ -655,7 +647,7 @@ static bool linux_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) return false; if (len > 0) { - if (!send_acl_stream(jcr, STREAM_ACL_LINUX_ACCESS_ACL_T, len)) + if (!send_acl_stream(jcr, STREAM_ACL_LINUX_ACCESS_ACL, len)) return false; } @@ -667,7 +659,7 @@ static bool linux_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) return false; if (len > 0) { - if (!send_acl_stream(jcr, STREAM_ACL_LINUX_DEFAULT_ACL_T, len)) + if (!send_acl_stream(jcr, STREAM_ACL_LINUX_DEFAULT_ACL, len)) return false; } } @@ -679,10 +671,10 @@ static bool linux_parse_acl_stream(JCR *jcr, int stream) { switch (stream) { case STREAM_UNIX_ACCESS_ACL: - case STREAM_ACL_LINUX_ACCESS_ACL_T: + case STREAM_ACL_LINUX_ACCESS_ACL: return generic_set_acl_on_os(jcr, BACL_TYPE_ACCESS); case STREAM_UNIX_DEFAULT_ACL: - case STREAM_ACL_LINUX_DEFAULT_ACL_T: + case STREAM_ACL_LINUX_DEFAULT_ACL: return generic_set_acl_on_os(jcr, BACL_TYPE_DEFAULT); } @@ -700,7 +692,7 @@ static bool tru64_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) return false; if (len > 0) { - if (!send_acl_stream(jcr, STREAM_ACL_TRU64_ACCESS_ACL_T, len)) + if (!send_acl_stream(jcr, STREAM_ACL_TRU64_ACCESS_ACL, len)) return false; } @@ -712,7 +704,7 @@ static bool tru64_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) return false; if (len > 0) { - if (!send_acl_stream(jcr, STREAM_ACL_TRU64_DEFAULT_ACL_T, len)) + if (!send_acl_stream(jcr, STREAM_ACL_TRU64_DEFAULT_ACL, len)) return false; } @@ -726,7 +718,7 @@ static bool tru64_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) return false; if (len > 0) { - if (!send_acl_stream(jcr, STREAM_ACL_TRU64_DEFAULT_DIR_ACL_T, len)) + if (!send_acl_stream(jcr, STREAM_ACL_TRU64_DEFAULT_DIR_ACL, len)) return false; } } @@ -738,12 +730,12 @@ static bool tru64_parse_acl_stream(JCR *jcr, int stream) { switch (stream) { case STREAM_UNIX_ACCESS_ACL: - case STREAM_ACL_TRU64_ACCESS_ACL_T: + case STREAM_ACL_TRU64_ACCESS_ACL: return generic_set_acl_on_os(jcr, BACL_TYPE_ACCESS); case STREAM_UNIX_DEFAULT_ACL: - case STREAM_ACL_TRU64_DEFAULT_ACL_T: + case STREAM_ACL_TRU64_DEFAULT_ACL: return generic_set_acl_on_os(jcr, BACL_TYPE_DEFAULT); - case STREAM_ACL_TRU64_DEFAULT_DIR_ACL_T: + case STREAM_ACL_TRU64_DEFAULT_DIR_ACL: return generic_set_acl_on_os(jcr, BACL_TYPE_DEFAULT_DIR); } #endif @@ -984,10 +976,10 @@ static bool solaris_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) switch (acl_type(aclp)) { case ACLENT_T: - stream_status = send_acl_stream(jcr, STREAM_ACL_SOLARIS_ACLENT_T, len); + stream_status = send_acl_stream(jcr, STREAM_ACL_SOLARIS_ACLENT, len); break; case ACE_T: - stream_status = send_acl_stream(jcr, STREAM_ACL_SOLARIS_ACE_T, len); + stream_status = send_acl_stream(jcr, STREAM_ACL_SOLARIS_ACE, len); break; default: break; @@ -1006,8 +998,8 @@ static bool solaris_parse_acl_stream(JCR *jcr, int stream) switch (stream) { case STREAM_UNIX_ACCESS_ACL: - case STREAM_ACL_SOLARIS_ACLENT_T: - case STREAM_ACL_SOLARIS_ACE_T: + case STREAM_ACL_SOLARIS_ACLENT: + case STREAM_ACL_SOLARIS_ACE: if ((error = acl_fromtext(jcr->acl_data, &aclp)) != 0) { Jmsg2(jcr, M_ERROR, 0, _("acl_fromtext error on file \"%s\": ERR=%s\n"), jcr->last_fname, acl_strerror(error)); @@ -1020,13 +1012,13 @@ static bool solaris_parse_acl_stream(JCR *jcr, int stream) * Validate that the conversion gave us the correct acl type. */ switch (stream) { - case STREAM_ACL_SOLARIS_ACLENT_T: + case STREAM_ACL_SOLARIS_ACLENT: if (acl_type(aclp) != ACLENT_T) { Jmsg1(jcr, M_ERROR, 0, _("wrong encoding of acl type in acl stream on file \"%s\"\n"), jcr->last_fname); return false; } - case STREAM_ACL_SOLARIS_ACE_T: + case STREAM_ACL_SOLARIS_ACE: if (acl_type(aclp) != ACE_T) { Jmsg1(jcr, M_ERROR, 0, _("wrong encoding of acl type in acl stream on file \"%s\"\n"), jcr->last_fname); @@ -1116,7 +1108,7 @@ static bool solaris_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt); actuallyfree(acl_text); free(acls); - return send_acl_stream(jcr, STREAM_ACL_SOLARIS_ACLENT_T, len); + return send_acl_stream(jcr, STREAM_ACL_SOLARIS_ACLENT, len); } berrno be; @@ -1218,13 +1210,13 @@ bool parse_acl_stream(JCR *jcr, int stream) return aix_parse_acl_stream(jcr, stream); #elif defined(HAVE_DARWIN_OS) case STREAM_UNIX_ACCESS_ACL: - case STREAM_ACL_DARWIN_ACCESS_ACL_T: + case STREAM_ACL_DARWIN_ACCESS_ACL: return darwin_parse_acl_stream(jcr, stream); #elif defined(HAVE_FREEBSD_OS) case STREAM_UNIX_ACCESS_ACL: case STREAM_UNIX_DEFAULT_ACL: - case STREAM_ACL_FREEBSD_DEFAULT_ACL_T: - case STREAM_ACL_FREEBSD_ACCESS_ACL_T: + case STREAM_ACL_FREEBSD_DEFAULT_ACL: + case STREAM_ACL_FREEBSD_ACCESS_ACL: return freebsd_parse_acl_stream(jcr, stream); #elif defined(HAVE_HPUX_OS) case STREAM_UNIX_ACCESS_ACL: @@ -1233,27 +1225,27 @@ bool parse_acl_stream(JCR *jcr, int stream) #elif defined(HAVE_IRIX_OS) case STREAM_UNIX_ACCESS_ACL: case STREAM_UNIX_DEFAULT_ACL: - case STREAM_ACL_IRIX_DEFAULT_ACL_T: - case STREAM_ACL_IRIX_ACCESS_ACL_T: + case STREAM_ACL_IRIX_DEFAULT_ACL: + case STREAM_ACL_IRIX_ACCESS_ACL: return irix_parse_acl_stream(jcr, stream); #elif defined(HAVE_LINUX_OS) case STREAM_UNIX_ACCESS_ACL: case STREAM_UNIX_DEFAULT_ACL: - case STREAM_ACL_LINUX_DEFAULT_ACL_T: - case STREAM_ACL_LINUX_ACCESS_ACL_T: + case STREAM_ACL_LINUX_DEFAULT_ACL: + case STREAM_ACL_LINUX_ACCESS_ACL: return linux_parse_acl_stream(jcr, stream); #elif defined(HAVE_OSF1_OS) case STREAM_UNIX_ACCESS_ACL: case STREAM_UNIX_DEFAULT_ACL: - case STREAM_ACL_TRU64_DEFAULT_ACL_T: - case STREAM_ACL_TRU64_ACCESS_ACL_T: - case STREAM_ACL_TRU64_DEFAULT_DIR_ACL_T: + case STREAM_ACL_TRU64_DEFAULT_ACL: + case STREAM_ACL_TRU64_ACCESS_ACL: + case STREAM_ACL_TRU64_DEFAULT_DIR_ACL: return tru64_parse_acl_stream(jcr, stream); #elif defined(HAVE_SUN_OS) case STREAM_UNIX_ACCESS_ACL: - case STREAM_ACL_SOLARIS_ACLENT_T: + case STREAM_ACL_SOLARIS_ACLENT: #if defined(HAVE_EXTENDED_ACL) - case STREAM_ACL_SOLARIS_ACE_T: + case STREAM_ACL_SOLARIS_ACE: #endif return solaris_parse_acl_stream(jcr, stream); #endif