X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Ffiled%2Facl.c;h=ca8313a2e3b3ae12aaa6b01a5557a38c50f26a54;hb=aa941b9e61a7944ac6ad87d4adc82c099dedf2b3;hp=79fdbd6d57a268c48fae160853396953483c7718;hpb=51a10b73cb544fda80b57e23cb285c7157d185f3;p=bacula%2Fbacula diff --git a/bacula/src/filed/acl.c b/bacula/src/filed/acl.c index 79fdbd6d57..ca8313a2e3 100644 --- a/bacula/src/filed/acl.c +++ b/bacula/src/filed/acl.c @@ -59,32 +59,32 @@ /* * Entry points when compiled without support for ACLs or on an unsupported platform. */ -bsub_exit_code build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) +bacl_exit_code build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) { - return bsub_exit_fatal; + return bacl_exit_fatal; } -bsub_exit_code parse_acl_stream(JCR *jcr, int stream) +bacl_exit_code parse_acl_stream(JCR *jcr, int stream) { - return bsub_exit_fatal; + return bacl_exit_fatal; } #else /* * Send an ACL stream to the SD. */ -static bsub_exit_code send_acl_stream(JCR *jcr, int stream) +static bacl_exit_code send_acl_stream(JCR *jcr, int stream) { BSOCK *sd = jcr->store_bsock; POOLMEM *msgsave; #ifdef FD_NO_SEND_TEST - return bsub_exit_ok; + return bacl_exit_ok; #endif /* * Sanity check */ if (jcr->acl_data_len <= 0) - return bsub_exit_ok; + return bacl_exit_ok; /* * Send header @@ -92,7 +92,7 @@ static bsub_exit_code send_acl_stream(JCR *jcr, int stream) if (!sd->fsend("%ld %d 0", jcr->JobFiles, stream)) { Jmsg1(jcr, M_FATAL, 0, _("Network send error to SD. ERR=%s\n"), sd->bstrerror()); - return bsub_exit_fatal; + return bacl_exit_fatal; } /* @@ -107,7 +107,7 @@ static bsub_exit_code send_acl_stream(JCR *jcr, int stream) sd->msglen = 0; Jmsg1(jcr, M_FATAL, 0, _("Network send error to SD. ERR=%s\n"), sd->bstrerror()); - return bsub_exit_fatal; + return bacl_exit_fatal; } jcr->JobBytes += sd->msglen; @@ -115,11 +115,11 @@ static bsub_exit_code send_acl_stream(JCR *jcr, int stream) if (!sd->signal(BNET_EOD)) { Jmsg1(jcr, M_FATAL, 0, _("Network send error to SD. ERR=%s\n"), sd->bstrerror()); - return bsub_exit_fatal; + return bacl_exit_fatal; } Dmsg1(200, "ACL of file: %s successfully backed up!\n", jcr->last_fname); - return bsub_exit_ok; + return bacl_exit_ok; } #if defined(HAVE_AIX_OS) @@ -132,7 +132,7 @@ static bsub_exit_code send_acl_stream(JCR *jcr, int stream) static int os_access_acl_streams[1] = { STREAM_ACL_AIX_TEXT }; static int os_default_acl_streams[1] = { -1 }; -static bsub_exit_code aix_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) +static bacl_exit_code aix_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) { char *acl_text; @@ -141,28 +141,28 @@ static bsub_exit_code aix_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) actuallyfree(acl_text); return send_acl_stream(jcr, STREAM_ACL_AIX_TEXT); } - return bsub_exit_nok; + return bacl_exit_error; } -static bsub_exit_code aix_parse_acl_streams(JCR *jcr, int stream) +static bacl_exit_code aix_parse_acl_streams(JCR *jcr, int stream) { if (acl_put(jcr->last_fname, jcr->acl_data, 0) != 0) { - return bsub_exit_nok; + return bacl_exit_error; } - return bsub_exit_ok; + return bacl_exit_ok; } /* * For this OS setup the build and parse function pointer to the OS specific functions. */ -static bsub_exit_code (*os_build_acl_streams)(JCR *jcr, FF_PKT *ff_pkt) = aix_build_acl_streams; -static bsub_exit_code (*os_parse_acl_streams)(JCR *jcr, int stream) = aix_parse_acl_streams; +static bacl_exit_code (*os_build_acl_streams)(JCR *jcr, FF_PKT *ff_pkt) = aix_build_acl_streams; +static bacl_exit_code (*os_parse_acl_streams)(JCR *jcr, int stream) = aix_parse_acl_streams; -#elif defined(HAVE_DARWIN_OS) \ - || defined(HAVE_FREEBSD_OS) \ - || defined(HAVE_IRIX_OS) \ - || defined(HAVE_OSF1_OS) \ - || defined(HAVE_LINUX_OS) +#elif defined(HAVE_DARWIN_OS) || \ + defined(HAVE_FREEBSD_OS) || \ + defined(HAVE_IRIX_OS) || \ + defined(HAVE_OSF1_OS) || \ + defined(HAVE_LINUX_OS) #include @@ -249,7 +249,8 @@ static bool acl_is_trivial(acl_t acl) */ acl_entry_t ace; acl_tag_t tag; -#if defined(HAVE_FREEBSD_OS) || defined(HAVE_LINUX_OS) +#if defined(HAVE_FREEBSD_OS) || \ + defined(HAVE_LINUX_OS) int entry_available; entry_available = acl_get_entry(acl, ACL_FIRST_ENTRY, &ace); @@ -318,11 +319,12 @@ static bool acl_is_trivial(acl_t acl) /* * Generic wrapper around acl_get_file call. */ -static bsub_exit_code generic_get_acl_from_os(JCR *jcr, bacl_type acltype) +static bacl_exit_code generic_get_acl_from_os(JCR *jcr, bacl_type acltype) { acl_t acl; acl_type_t ostype; char *acl_text; + berrno be; ostype = bac_to_os_acltype(acltype); acl = acl_get_file(jcr->last_fname, ostype); @@ -344,7 +346,7 @@ static bsub_exit_code generic_get_acl_from_os(JCR *jcr, bacl_type acltype) pm_strcpy(jcr->acl_data, ""); jcr->acl_data_len = 0; acl_free(acl); - return bsub_exit_ok; + return bacl_exit_ok; } #endif @@ -360,7 +362,7 @@ static bsub_exit_code generic_get_acl_from_os(JCR *jcr, bacl_type acltype) pm_strcpy(jcr->acl_data, ""); jcr->acl_data_len = 0; acl_free(acl); - return bsub_exit_ok; + return bacl_exit_ok; } #endif @@ -368,19 +370,18 @@ static bsub_exit_code generic_get_acl_from_os(JCR *jcr, bacl_type acltype) jcr->acl_data_len = pm_strcpy(jcr->acl_data, acl_text); acl_free(acl); acl_free(acl_text); - return bsub_exit_ok; + return bacl_exit_ok; } - berrno be; - Jmsg2(jcr, M_ERROR, 0, _("acl_to_text error on file \"%s\": ERR=%s\n"), - jcr->last_fname, be.bstrerror()); + Mmsg2(jcr->errmsg, _("acl_to_text error on file \"%s\": ERR=%s\n"), + jcr->last_fname, be.bstrerror()); Dmsg2(100, "acl_to_text error file=%s ERR=%s\n", - jcr->last_fname, be.bstrerror()); + jcr->last_fname, be.bstrerror()); pm_strcpy(jcr->acl_data, ""); jcr->acl_data_len = 0; acl_free(acl); - return bsub_exit_nok; + return bacl_exit_error; } /* @@ -395,18 +396,17 @@ static bsub_exit_code generic_get_acl_from_os(JCR *jcr, bacl_type acltype) case ENOENT: pm_strcpy(jcr->acl_data, ""); jcr->acl_data_len = 0; - return bsub_exit_ok; + return bacl_exit_ok; default: - berrno be; /* Some real error */ - Jmsg2(jcr, M_ERROR, 0, _("acl_get_file error on file \"%s\": ERR=%s\n"), - jcr->last_fname, be.bstrerror()); + Mmsg2(jcr->errmsg, _("acl_get_file error on file \"%s\": ERR=%s\n"), + jcr->last_fname, be.bstrerror()); Dmsg2(100, "acl_get_file error file=%s ERR=%s\n", - jcr->last_fname, be.bstrerror()); + jcr->last_fname, be.bstrerror()); pm_strcpy(jcr->acl_data, ""); jcr->acl_data_len = 0; - return bsub_exit_nok; + return bacl_exit_error; } } /* @@ -414,16 +414,17 @@ static bsub_exit_code generic_get_acl_from_os(JCR *jcr, bacl_type acltype) */ pm_strcpy(jcr->acl_data, ""); jcr->acl_data_len = 0; - return bsub_exit_ok; + return bacl_exit_ok; } /* * Generic wrapper around acl_set_file call. */ -static bsub_exit_code generic_set_acl_on_os(JCR *jcr, bacl_type acltype) +static bacl_exit_code generic_set_acl_on_os(JCR *jcr, bacl_type acltype) { acl_t acl; acl_type_t ostype; + berrno be; /* * If we get empty default ACLs, clear ACLs now @@ -431,27 +432,25 @@ static bsub_exit_code generic_set_acl_on_os(JCR *jcr, bacl_type acltype) ostype = bac_to_os_acltype(acltype); if (ostype == ACL_TYPE_DEFAULT && strlen(jcr->acl_data) == 0) { if (acl_delete_def_file(jcr->last_fname) == 0) { - return bsub_exit_ok; + return bacl_exit_ok; } switch (errno) { case ENOENT: - return bsub_exit_ok; + return bacl_exit_ok; default: - berrno be; - Jmsg2(jcr, M_ERROR, 0, _("acl_delete_def_file error on file \"%s\": ERR=%s\n"), - jcr->last_fname, be.bstrerror()); - return bsub_exit_nok; + Mmsg2(jcr->errmsg, _("acl_delete_def_file error on file \"%s\": ERR=%s\n"), + jcr->last_fname, be.bstrerror()); + return bacl_exit_error; } } acl = acl_from_text(jcr->acl_data); if (acl == NULL) { - berrno be; - Jmsg2(jcr, M_ERROR, 0, _("acl_from_text error on file \"%s\": ERR=%s\n"), - jcr->last_fname, be.bstrerror()); + Mmsg2(jcr->errmsg, _("acl_from_text error on file \"%s\": ERR=%s\n"), + jcr->last_fname, be.bstrerror()); Dmsg3(100, "acl_from_text error acl=%s file=%s ERR=%s\n", jcr->acl_data, jcr->last_fname, be.bstrerror()); - return bsub_exit_nok; + return bacl_exit_error; } #ifndef HAVE_FREEBSD_OS @@ -460,13 +459,12 @@ static bsub_exit_code generic_set_acl_on_os(JCR *jcr, bacl_type acltype) * As it does the right thing, given valid input, just ignore acl_valid(). */ if (acl_valid(acl) != 0) { - berrno be; - Jmsg2(jcr, M_ERROR, 0, _("ac_valid error on file \"%s\": ERR=%s\n"), - jcr->last_fname, be.bstrerror()); + Mmsg2(jcr->errmsg, _("acl_valid error on file \"%s\": ERR=%s\n"), + jcr->last_fname, be.bstrerror()); Dmsg3(100, "acl_valid error acl=%s file=%s ERR=%s\n", jcr->acl_data, jcr->last_fname, be.bstrerror()); acl_free(acl); - return bsub_exit_nok; + return bacl_exit_error; } #endif @@ -480,19 +478,18 @@ static bsub_exit_code generic_set_acl_on_os(JCR *jcr, bacl_type acltype) switch (errno) { case ENOENT: acl_free(acl); - return bsub_exit_nok; + return bacl_exit_ok; default: - berrno be; - Jmsg2(jcr, M_ERROR, 0, _("acl_set_file error on file \"%s\": ERR=%s\n"), - jcr->last_fname, be.bstrerror()); + Mmsg2(jcr->errmsg, _("acl_set_file error on file \"%s\": ERR=%s\n"), + jcr->last_fname, be.bstrerror()); Dmsg3(100, "acl_set_file error acl=%s file=%s ERR=%s\n", - jcr->acl_data, jcr->last_fname, be.bstrerror()); + jcr->acl_data, jcr->last_fname, be.bstrerror()); acl_free(acl); - return bsub_exit_nok; + return bacl_exit_error; } } acl_free(acl); - return bsub_exit_ok; + return bacl_exit_ok; } /* @@ -505,7 +502,7 @@ static bsub_exit_code generic_set_acl_on_os(JCR *jcr, bacl_type acltype) static int os_access_acl_streams[1] = { STREAM_ACL_DARWIN_ACCESS_ACL }; static int os_default_acl_streams[1] = { -1 }; -static bsub_exit_code darwin_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) +static bacl_exit_code darwin_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) { #if defined(ACL_TYPE_EXTENDED) /* @@ -517,23 +514,23 @@ static bsub_exit_code darwin_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) * * Read access ACLs for files, dirs and links */ - if (generic_get_acl_from_os(jcr, BACL_TYPE_EXTENDED) == bsub_exit_fatal) - return bsub_exit_fatal; + if (generic_get_acl_from_os(jcr, BACL_TYPE_EXTENDED) == bacl_exit_fatal) + return bacl_exit_fatal; #else /* * Read access ACLs for files, dirs and links */ - if (generic_get_acl_from_os(jcr, BACL_TYPE_ACCESS) == bsub_exit_fatal) - return bsub_exit_fatal; + if (generic_get_acl_from_os(jcr, BACL_TYPE_ACCESS) == bacl_exit_fatal) + return bacl_exit_fatal; #endif if (jcr->acl_data_len > 0) { return send_acl_stream(jcr, STREAM_ACL_DARWIN_ACCESS_ACL); } - return bsub_exit_ok; + return bacl_exit_ok; } -static bsub_exit_code darwin_parse_acl_streams(JCR *jcr, int stream) +static bacl_exit_code darwin_parse_acl_streams(JCR *jcr, int stream) { #if defined(ACL_TYPE_EXTENDED) return generic_set_acl_on_os(jcr, BACL_TYPE_EXTENDED); @@ -545,10 +542,12 @@ static bsub_exit_code darwin_parse_acl_streams(JCR *jcr, int stream) /* * For this OS setup the build and parse function pointer to the OS specific functions. */ -static bsub_exit_code (*os_build_acl_streams)(JCR *jcr, FF_PKT *ff_pkt) = darwin_build_acl_streams; -static bsub_exit_code (*os_parse_acl_streams)(JCR *jcr, int stream) = darwin_parse_acl_streams; +static bacl_exit_code (*os_build_acl_streams)(JCR *jcr, FF_PKT *ff_pkt) = darwin_build_acl_streams; +static bacl_exit_code (*os_parse_acl_streams)(JCR *jcr, int stream) = darwin_parse_acl_streams; -#elif defined(HAVE_FREEBSD_OS) || defined(HAVE_IRIX_OS) || defined(HAVE_LINUX_OS) +#elif defined(HAVE_FREEBSD_OS) || \ + defined(HAVE_IRIX_OS) || \ + defined(HAVE_LINUX_OS) /* * Define the supported ACL streams for these OSes @@ -564,36 +563,36 @@ static int os_access_acl_streams[1] = { STREAM_ACL_LINUX_ACCESS_ACL }; static int os_default_acl_streams[1] = { STREAM_ACL_LINUX_DEFAULT_ACL }; #endif -static bsub_exit_code generic_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) +static bacl_exit_code generic_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) { /* * Read access ACLs for files, dirs and links */ - if (generic_get_acl_from_os(jcr, BACL_TYPE_ACCESS) == bsub_exit_fatal) - return bsub_exit_fatal; + if (generic_get_acl_from_os(jcr, BACL_TYPE_ACCESS) == bacl_exit_fatal) + return bacl_exit_fatal; if (jcr->acl_data_len > 0) { - if (send_acl_stream(jcr, os_access_acl_streams[0]) == bsub_exit_fatal) - return bsub_exit_fatal; + if (send_acl_stream(jcr, os_access_acl_streams[0]) == bacl_exit_fatal) + return bacl_exit_fatal; } /* * Directories can have default ACLs too */ if (ff_pkt->type == FT_DIREND) { - if (generic_get_acl_from_os(jcr, BACL_TYPE_DEFAULT) == bsub_exit_fatal) - return bsub_exit_fatal; + if (generic_get_acl_from_os(jcr, BACL_TYPE_DEFAULT) == bacl_exit_fatal) + return bacl_exit_fatal; if (jcr->acl_data_len > 0) { - if (send_acl_stream(jcr, os_default_acl_streams[0]) == bsub_exit_fatal) - return bsub_exit_fatal; + if (send_acl_stream(jcr, os_default_acl_streams[0]) == bacl_exit_fatal) + return bacl_exit_fatal; } } - return bsub_exit_ok; + return bacl_exit_ok; } -static bsub_exit_code generic_parse_acl_streams(JCR *jcr, int stream) +static bacl_exit_code generic_parse_acl_streams(JCR *jcr, int stream) { - int cnt; + unsigned int cnt; switch (stream) { case STREAM_UNIX_ACCESS_ACL: @@ -616,14 +615,14 @@ static bsub_exit_code generic_parse_acl_streams(JCR *jcr, int stream) } break; } - return bsub_exit_nok; + return bacl_exit_error; } /* * For this OSes setup the build and parse function pointer to the OS specific functions. */ -static bsub_exit_code (*os_build_acl_streams)(JCR *jcr, FF_PKT *ff_pkt) = generic_build_acl_streams; -static bsub_exit_code (*os_parse_acl_streams)(JCR *jcr, int stream) = generic_parse_acl_streams; +static bacl_exit_code (*os_build_acl_streams)(JCR *jcr, FF_PKT *ff_pkt) = generic_build_acl_streams; +static bacl_exit_code (*os_parse_acl_streams)(JCR *jcr, int stream) = generic_parse_acl_streams; #elif defined(HAVE_OSF1_OS) @@ -633,26 +632,26 @@ static bsub_exit_code (*os_parse_acl_streams)(JCR *jcr, int stream) = generic_pa static int os_access_acl_streams[1] = { STREAM_ACL_TRU64_ACCESS_ACL }; static int os_default_acl_streams[2] = { STREAM_ACL_TRU64_DEFAULT_ACL, STREAM_ACL_TRU64_DEFAULT_DIR_ACL }; -static bsub_exit_code tru64_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) +static bacl_exit_code tru64_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) { /* * Read access ACLs for files, dirs and links */ if ((jcr->acl_data_len = generic_get_acl_from_os(jcr, BACL_TYPE_ACCESS)) < 0) - return bsub_exit_nok; + return bacl_exit_error; if (jcr->acl_data_len > 0) { if (!send_acl_stream(jcr, STREAM_ACL_TRU64_ACCESS_ACL)) - return bsub_exit_nok; + return bacl_exit_error; } /* * Directories can have default ACLs too */ if (ff_pkt->type == FT_DIREND) { if ((jcr->acl_data_len = generic_get_acl_from_os(jcr, BACL_TYPE_DEFAULT)) < 0) - return bsub_exit_nok; + return bacl_exit_error; if (jcr->acl_data_len > 0) { if (!send_acl_stream(jcr, STREAM_ACL_TRU64_DEFAULT_ACL)) - return bsub_exit_nok; + return bacl_exit_error; } /* * Tru64 has next to BACL_TYPE_DEFAULT also BACL_TYPE_DEFAULT_DIR acls. @@ -661,16 +660,16 @@ static bsub_exit_code tru64_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) * Section 21.5 Default ACLs */ if ((jcr->acl_data_len = generic_get_acl_from_os(jcr, BACL_TYPE_DEFAULT_DIR)) < 0) - return bsub_exit_nok; + return bacl_exit_error; if (jcr->acl_data_len > 0) { if (!send_acl_stream(jcr, STREAM_ACL_TRU64_DEFAULT_DIR_ACL)) - return bsub_exit_nok; + return bacl_exit_error; } } - return bsub_exit_ok; + return bacl_exit_ok; } -static bsub_exit_code tru64_parse_acl_streams(JCR *jcr, int stream) +static bacl_exit_code tru64_parse_acl_streams(JCR *jcr, int stream) { switch (stream) { case STREAM_UNIX_ACCESS_ACL: @@ -686,8 +685,8 @@ static bsub_exit_code tru64_parse_acl_streams(JCR *jcr, int stream) /* * For this OS setup the build and parse function pointer to the OS specific functions. */ -static bsub_exit_code (*os_build_acl_streams)(JCR *jcr, FF_PKT *ff_pkt) = tru64_build_acl_streams; -static bsub_exit_code (*os_parse_acl_streams)(JCR *jcr, int stream) = tru64_parse_acl_streams; +static bacl_exit_code (*os_build_acl_streams)(JCR *jcr, FF_PKT *ff_pkt) = tru64_build_acl_streams; +static bacl_exit_code (*os_parse_acl_streams)(JCR *jcr, int stream) = tru64_parse_acl_streams; #endif @@ -731,11 +730,12 @@ static bool acl_is_trivial(int count, struct acl_entry *entries, struct stat sb) /* * OS specific functions for handling different types of acl streams. */ -static bsub_exit_code hpux_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) +static bacl_exit_code hpux_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) { int n; struct acl_entry acls[NACLENTRIES]; char *acl_text; + berrno be; if ((n = getacl(jcr->last_fname, 0, acls)) < 0) { switch (errno) { @@ -746,28 +746,27 @@ static bsub_exit_code hpux_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) */ pm_strcpy(jcr->acl_data, ""); jcr->acl_data_len = 0; - return bsub_exit_ok; + return bacl_exit_ok; #endif case ENOENT: pm_strcpy(jcr->acl_data, ""); jcr->acl_data_len = 0; - return bsub_exit_ok; + return bacl_exit_ok; default: - berrno be; - Jmsg2(jcr, M_ERROR, 0, _("getacl error on file \"%s\": ERR=%s\n"), - jcr->last_fname, be.bstrerror()); + Mmsg2(jcr->errmsg, _("getacl error on file \"%s\": ERR=%s\n"), + jcr->last_fname, be.bstrerror()); Dmsg2(100, "getacl error file=%s ERR=%s\n", - jcr->last_fname, be.bstrerror()); + jcr->last_fname, be.bstrerror()); pm_strcpy(jcr->acl_data, ""); jcr->acl_data_len = 0; - return bsub_exit_nok; + return bacl_exit_error; } } if (n == 0) { pm_strcpy(jcr->acl_data, ""); jcr->acl_data_len = 0; - return bsub_exit_ok; + return bacl_exit_ok; } if ((n = getacl(jcr->last_fname, n, acls)) > 0) { if (acl_is_trivial(n, acls, ff_pkt->statp)) { @@ -777,7 +776,7 @@ static bsub_exit_code hpux_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) */ pm_strcpy(jcr->acl_data, ""); jcr->acl_data_len = 0; - return bsub_exit_ok; + return bacl_exit_ok; } if ((acl_text = acltostr(n, acls, FORM_SHORT)) != NULL) { jcr->acl_data_len = pm_strcpy(jcr->acl_data, acl_text); @@ -785,38 +784,36 @@ static bsub_exit_code hpux_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) return send_acl_stream(jcr, STREAM_ACL_HPUX_ACL_ENTRY); } - berrno be; - Jmsg2(jcr, M_ERROR, 0, _("acltostr error on file \"%s\": ERR=%s\n"), - jcr->last_fname, be.bstrerror()); + Mmsg2(jcr->errmsg, _("acltostr error on file \"%s\": ERR=%s\n"), + jcr->last_fname, be.bstrerror()); Dmsg3(100, "acltostr error acl=%s file=%s ERR=%s\n", - jcr->acl_data, jcr->last_fname, be.bstrerror()); - return bsub_exit_nok; + jcr->acl_data, jcr->last_fname, be.bstrerror()); + return bacl_exit_error; } - return bsub_exit_nok; + return bacl_exit_error; } -static bsub_exit_code hpux_parse_acl_streams(JCR *jcr, int stream) +static bacl_exit_code hpux_parse_acl_streams(JCR *jcr, int stream) { int n, stat; struct acl_entry acls[NACLENTRIES]; + berrno be; n = strtoacl(jcr->acl_data, 0, NACLENTRIES, acls, ACL_FILEOWNER, ACL_FILEGROUP); if (n <= 0) { - berrno be; - Jmsg2(jcr, M_ERROR, 0, _("strtoacl error on file \"%s\": ERR=%s\n"), - jcr->last_fname, be.bstrerror()); + Mmsg2(jcr->errmsg, _("strtoacl error on file \"%s\": ERR=%s\n"), + jcr->last_fname, be.bstrerror()); Dmsg3(100, "strtoacl error acl=%s file=%s ERR=%s\n", - jcr->acl_data, jcr->last_fname, be.bstrerror()); - return bsub_exit_nok; + jcr->acl_data, jcr->last_fname, be.bstrerror()); + return bacl_exit_error; } if (strtoacl(jcr->acl_data, n, NACLENTRIES, acls, ACL_FILEOWNER, ACL_FILEGROUP) != n) { - berrno be; - Jmsg2(jcr, M_ERROR, 0, _("strtoacl error on file \"%s\": ERR=%s\n"), - jcr->last_fname, be.bstrerror()); + Mmsg2(jcr->errmsg, _("strtoacl error on file \"%s\": ERR=%s\n"), + jcr->last_fname, be.bstrerror()); Dmsg3(100, "strtoacl error acl=%s file=%s ERR=%s\n", - jcr->acl_data, jcr->last_fname, be.bstrerror()); + jcr->acl_data, jcr->last_fname, be.bstrerror()); - return bsub_exit_nok; + return bacl_exit_error; } /* * Restore the ACLs, but don't complain about links which really should @@ -827,24 +824,23 @@ static bsub_exit_code hpux_parse_acl_streams(JCR *jcr, int stream) if (setacl(jcr->last_fname, n, acls) != 0 && jcr->last_type != FT_LNK) { switch (errno) { case ENOENT: - return bsub_exit_nok; + return bacl_exit_ok; default: - berrno be; - Jmsg2(jcr, M_ERROR, 0, _("setacl error on file \"%s\": ERR=%s\n"), - jcr->last_fname, be.bstrerror()); + Mmsg2(jcr->errmsg, _("setacl error on file \"%s\": ERR=%s\n"), + jcr->last_fname, be.bstrerror()); Dmsg3(100, "setacl error acl=%s file=%s ERR=%s\n", - jcr->acl_data, jcr->last_fname, be.bstrerror()); - return bsub_exit_nok; + jcr->acl_data, jcr->last_fname, be.bstrerror()); + return bacl_exit_error; } } - return bsub_exit_ok; + return bacl_exit_ok; } /* * For this OS setup the build and parse function pointer to the OS specific functions. */ -static bsub_exit_code (*os_build_acl_streams)(JCR *jcr, FF_PKT *ff_pkt) = hpux_build_acl_streams; -static bsub_exit_code (*os_parse_acl_streams)(JCR *jcr, int stream) = hpux_parse_acl_streams; +static bacl_exit_code (*os_build_acl_streams)(JCR *jcr, FF_PKT *ff_pkt) = hpux_build_acl_streams; +static bacl_exit_code (*os_parse_acl_streams)(JCR *jcr, int stream) = hpux_parse_acl_streams; #elif defined(HAVE_SUN_OS) #ifdef HAVE_SYS_ACL_H @@ -893,12 +889,13 @@ static int os_default_acl_streams[1] = { -1 }; * for acls retrieved and stored in the database with older fd versions. If the * new interface is not defined (Solaris 9 and older we fall back to the old code) */ -static bsub_exit_code solaris_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) +static bacl_exit_code solaris_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) { int acl_enabled, flags; acl_t *aclp; char *acl_text; - bsub_exit_code stream_status = bsub_exit_nok; + bacl_exit_code stream_status = bacl_exit_error; + berrno be; /* * See if filesystem supports acls. @@ -908,14 +905,18 @@ static bsub_exit_code solaris_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) case 0: pm_strcpy(jcr->acl_data, ""); jcr->acl_data_len = 0; - return bsub_exit_ok; + return bacl_exit_ok; case -1: - berrno be; - Jmsg2(jcr, M_ERROR, 0, _("pathconf error on file \"%s\": ERR=%s\n"), - jcr->last_fname, be.bstrerror()); - Dmsg2(100, "pathconf error file=%s ERR=%s\n", - jcr->last_fname, be.bstrerror()); - return bsub_exit_nok; + switch (errno) { + case ENOENT: + return bacl_exit_ok; + default: + Mmsg2(jcr->errmsg, _("pathconf error on file \"%s\": ERR=%s\n"), + jcr->last_fname, be.bstrerror()); + Dmsg2(100, "pathconf error file=%s ERR=%s\n", + jcr->last_fname, be.bstrerror()); + return bacl_exit_error; + } default: break; } @@ -924,11 +925,16 @@ static bsub_exit_code solaris_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) * Get ACL info: don't bother allocating space if there is only a trivial ACL. */ if (acl_get(jcr->last_fname, ACL_NO_TRIVIAL, &aclp) != 0) { - Jmsg2(jcr, M_ERROR, 0, _("acl_get error on file \"%s\": ERR=%s\n"), - jcr->last_fname, acl_strerror(errno)); - Dmsg2(100, "acl_get error file=%s ERR=%s\n", - jcr->last_fname, acl_strerror(errno)); - return bsub_exit_nok; + switch (errno) { + case ENOENT: + return bacl_exit_ok; + default: + Mmsg2(jcr->errmsg, _("acl_get error on file \"%s\": ERR=%s\n"), + jcr->last_fname, acl_strerror(errno)); + Dmsg2(100, "acl_get error file=%s ERR=%s\n", + jcr->last_fname, acl_strerror(errno)); + return bacl_exit_error; + } } if (!aclp) { @@ -938,7 +944,7 @@ static bsub_exit_code solaris_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) */ pm_strcpy(jcr->acl_data, ""); jcr->acl_data_len = 0; - return bsub_exit_ok; + return bacl_exit_ok; } #if defined(ACL_SID_FMT) @@ -970,10 +976,11 @@ static bsub_exit_code solaris_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) return stream_status; } -static bsub_exit_code solaris_parse_acl_streams(JCR *jcr, int stream) +static bacl_exit_code solaris_parse_acl_streams(JCR *jcr, int stream) { acl_t *aclp; int acl_enabled, error; + berrno be; switch (stream) { case STREAM_UNIX_ACCESS_ACL: @@ -985,16 +992,20 @@ static bsub_exit_code solaris_parse_acl_streams(JCR *jcr, int stream) acl_enabled = pathconf(jcr->last_fname, _PC_ACL_ENABLED); switch (acl_enabled) { case 0: - Jmsg1(jcr, M_ERROR, 0, _("Trying to restore acl on file \"%s\" on filesystem without acl support\n"), - jcr->last_fname); - return bsub_exit_nok; + Mmsg1(jcr->errmsg, _("Trying to restore acl on file \"%s\" on filesystem without acl support\n"), + jcr->last_fname); + return bacl_exit_error; case -1: - berrno be; - Jmsg2(jcr, M_ERROR, 0, _("pathconf error on file \"%s\": ERR=%s\n"), - jcr->last_fname, be.bstrerror()); - Dmsg3(100, "pathconf error acl=%s file=%s ERR=%s\n", - jcr->acl_data, jcr->last_fname, be.bstrerror()); - return bsub_exit_nok; + switch (errno) { + case ENOENT: + return bacl_exit_ok; + default: + Mmsg2(jcr->errmsg, _("pathconf error on file \"%s\": ERR=%s\n"), + jcr->last_fname, be.bstrerror()); + Dmsg3(100, "pathconf error acl=%s file=%s ERR=%s\n", + jcr->acl_data, jcr->last_fname, be.bstrerror()); + return bacl_exit_error; + } default: /* * On a filesystem with ACL support make sure this particilar ACL type can be restored. @@ -1005,9 +1016,9 @@ static bsub_exit_code solaris_parse_acl_streams(JCR *jcr, int stream) * An aclent can be restored on filesystems with _ACL_ACLENT_ENABLED or _ACL_ACE_ENABLED support. */ if ((acl_enabled & (_ACL_ACLENT_ENABLED | _ACL_ACE_ENABLED)) == 0) { - Jmsg1(jcr, M_ERROR, 0, _("Trying to restore acl on file \"%s\" on filesystem without aclent acl support\n"), - jcr->last_fname); - return bsub_exit_nok; + Mmsg1(jcr->errmsg, _("Trying to restore acl on file \"%s\" on filesystem without aclent acl support\n"), + jcr->last_fname); + return bacl_exit_error; } break; case STREAM_ACL_SOLARIS_ACE: @@ -1015,9 +1026,9 @@ static bsub_exit_code solaris_parse_acl_streams(JCR *jcr, int stream) * An ace can only be restored on a filesystem with _ACL_ACE_ENABLED support. */ if ((acl_enabled & _ACL_ACE_ENABLED) == 0) { - Jmsg1(jcr, M_ERROR, 0, _("Trying to restore acl on file \"%s\" on filesystem without ace acl support\n"), - jcr->last_fname); - return bsub_exit_nok; + Mmsg1(jcr->errmsg, _("Trying to restore acl on file \"%s\" on filesystem without ace acl support\n"), + jcr->last_fname); + return bacl_exit_error; } break; default: @@ -1030,11 +1041,11 @@ static bsub_exit_code solaris_parse_acl_streams(JCR *jcr, int stream) } 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)); + Mmsg2(jcr->errmsg, _("acl_fromtext error on file \"%s\": ERR=%s\n"), + jcr->last_fname, acl_strerror(error)); Dmsg3(100, "acl_fromtext error acl=%s file=%s ERR=%s\n", - jcr->acl_data, jcr->last_fname, acl_strerror(error)); - return bsub_exit_nok; + jcr->acl_data, jcr->last_fname, acl_strerror(error)); + return bacl_exit_error; } /* @@ -1043,16 +1054,16 @@ static bsub_exit_code solaris_parse_acl_streams(JCR *jcr, int stream) switch (stream) { 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 bsub_exit_nok; + Mmsg1(jcr->errmsg, _("wrong encoding of acl type in acl stream on file \"%s\"\n"), + jcr->last_fname); + return bacl_exit_error; } break; 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); - return bsub_exit_nok; + Mmsg1(jcr->errmsg, _("wrong encoding of acl type in acl stream on file \"%s\"\n"), + jcr->last_fname); + return bacl_exit_error; } break; default: @@ -1069,19 +1080,24 @@ static bsub_exit_code solaris_parse_acl_streams(JCR *jcr, int stream) * don't save acls of symlinks (which cannot have acls anyhow) */ if ((error = acl_set(jcr->last_fname, aclp)) == -1 && jcr->last_type != FT_LNK) { - Jmsg2(jcr, M_ERROR, 0, _("acl_set error on file \"%s\": ERR=%s\n"), - jcr->last_fname, acl_strerror(error)); - Dmsg3(100, "acl_set error acl=%s file=%s ERR=%s\n", - jcr->acl_data, jcr->last_fname, acl_strerror(error)); - - acl_free(aclp); - return bsub_exit_nok; + switch (errno) { + case ENOENT: + acl_free(aclp); + return bacl_exit_ok; + default: + Mmsg2(jcr->errmsg, _("acl_set error on file \"%s\": ERR=%s\n"), + jcr->last_fname, acl_strerror(error)); + Dmsg3(100, "acl_set error acl=%s file=%s ERR=%s\n", + jcr->acl_data, jcr->last_fname, acl_strerror(error)); + acl_free(aclp); + return bacl_exit_error; + } } acl_free(aclp); - return bsub_exit_ok; + return bacl_exit_ok; default: - return bsub_exit_nok; + return bacl_exit_error; } /* end switch (stream) */ } @@ -1117,15 +1133,16 @@ static bool acl_is_trivial(int count, aclent_t *entries) /* * OS specific functions for handling different types of acl streams. */ -static bsub_exit_code solaris_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) +static bacl_exit_code solaris_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) { int n; aclent_t *acls; char *acl_text; + berrno be; n = acl(jcr->last_fname, GETACLCNT, 0, NULL); if (n < MIN_ACL_ENTRIES) - return bsub_exit_nok; + return bacl_exit_error; acls = (aclent_t *)malloc(n * sizeof(aclent_t)); if (acl(jcr->last_fname, GETACL, n, acls) == n) { @@ -1137,7 +1154,7 @@ static bsub_exit_code solaris_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) free(acls); pm_strcpy(jcr->acl_data, ""); jcr->acl_data_len = 0; - return bsub_exit_ok; + return bacl_exit_ok; } if ((acl_text = acltotext(acls, n)) != NULL) { @@ -1147,30 +1164,29 @@ static bsub_exit_code solaris_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) return send_acl_stream(jcr, STREAM_ACL_SOLARIS_ACLENT); } - berrno be; - Jmsg2(jcr, M_ERROR, 0, _("acltotext error on file \"%s\": ERR=%s\n"), - jcr->last_fname, be.bstrerror()); + Mmsg2(jcr->errmsg, _("acltotext error on file \"%s\": ERR=%s\n"), + jcr->last_fname, be.bstrerror()); Dmsg3(100, "acltotext error acl=%s file=%s ERR=%s\n", - jcr->acl_data, jcr->last_fname, be.bstrerror()); + jcr->acl_data, jcr->last_fname, be.bstrerror()); } free(acls); - return bsub_exit_nok; + return bacl_exit_error; } -static bsub_exit_code solaris_parse_acl_streams(JCR *jcr, int stream) +static bacl_exit_code solaris_parse_acl_streams(JCR *jcr, int stream) { int n; aclent_t *acls; + berrno be; acls = aclfromtext(jcr->acl_data, &n); if (!acls) { - berrno be; - Jmsg2(jcr, M_ERROR, 0, _("aclfromtext error on file \"%s\": ERR=%s\n"), - jcr->last_fname, be.bstrerror()); + Mmsg2(jcr->errmsg, _("aclfromtext error on file \"%s\": ERR=%s\n"), + jcr->last_fname, be.bstrerror()); Dmsg3(100, "aclfromtext error acl=%s file=%s ERR=%s\n", - jcr->acl_data, jcr->last_fname, be.bstrerror()); - return bsub_exit_nok; + jcr->acl_data, jcr->last_fname, be.bstrerror()); + return bacl_exit_error; } /* @@ -1181,27 +1197,26 @@ static bsub_exit_code solaris_parse_acl_streams(JCR *jcr, int stream) switch (errno) { case ENOENT: actuallyfree(acls); - return bsub_exit_nok; + return bacl_exit_ok; default: - berrno be; - Jmsg2(jcr, M_ERROR, 0, _("acl(SETACL) error on file \"%s\": ERR=%s\n"), - jcr->last_fname, be.bstrerror()); + Mmsg2(jcr->errmsg, _("acl(SETACL) error on file \"%s\": ERR=%s\n"), + jcr->last_fname, be.bstrerror()); Dmsg3(100, "acl(SETACL) error acl=%s file=%s ERR=%s\n", - jcr->acl_data, jcr->last_fname, be.bstrerror()); + jcr->acl_data, jcr->last_fname, be.bstrerror()); actuallyfree(acls); - return bsub_exit_nok; + return bacl_exit_error; } } actuallyfree(acls); - return bsub_exit_ok; + return bacl_exit_ok; } #endif /* HAVE_EXTENDED_ACL */ /* * For this OS setup the build and parse function pointer to the OS specific functions. */ -static bsub_exit_code (*os_build_acl_streams)(JCR *jcr, FF_PKT *ff_pkt) = solaris_build_acl_streams; -static bsub_exit_code (*os_parse_acl_streams)(JCR *jcr, int stream) = solaris_parse_acl_streams; +static bacl_exit_code (*os_build_acl_streams)(JCR *jcr, FF_PKT *ff_pkt) = solaris_build_acl_streams; +static bacl_exit_code (*os_parse_acl_streams)(JCR *jcr, int stream) = solaris_parse_acl_streams; #endif /* HAVE_SUN_OS */ @@ -1212,7 +1227,7 @@ static bsub_exit_code (*os_parse_acl_streams)(JCR *jcr, int stream) = solaris_pa /* * Read and send an ACL for the last encountered file. */ -bsub_exit_code build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) +bacl_exit_code build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) { /* * Call the appropriate function. @@ -1220,11 +1235,13 @@ bsub_exit_code build_acl_streams(JCR *jcr, FF_PKT *ff_pkt) if (os_build_acl_streams) { return (*os_build_acl_streams)(jcr, ff_pkt); } - return bsub_exit_nok; + return bacl_exit_error; } -bsub_exit_code parse_acl_streams(JCR *jcr, int stream) +bacl_exit_code parse_acl_streams(JCR *jcr, int stream) { + unsigned int cnt; + switch (stream) { case STREAM_UNIX_ACCESS_ACL: case STREAM_UNIX_DEFAULT_ACL: @@ -1259,6 +1276,6 @@ bsub_exit_code parse_acl_streams(JCR *jcr, int stream) Qmsg2(jcr, M_WARNING, 0, _("Can't restore ACLs of %s - incompatible acl stream encountered - %d\n"), jcr->last_fname, stream); - return bsub_exit_nok; + return bacl_exit_error; } #endif