/*
* 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
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;
}
/*
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;
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)
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;
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) || \
/*
* 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;
pm_strcpy(jcr->acl_data, "");
jcr->acl_data_len = 0;
acl_free(acl);
- return bsub_exit_ok;
+ return bacl_exit_ok;
}
#endif
pm_strcpy(jcr->acl_data, "");
jcr->acl_data_len = 0;
acl_free(acl);
- return bsub_exit_ok;
+ return bacl_exit_ok;
}
#endif
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;
}
Mmsg2(jcr->errmsg, _("acl_to_text error on file \"%s\": ERR=%s\n"),
pm_strcpy(jcr->acl_data, "");
jcr->acl_data_len = 0;
acl_free(acl);
- return bsub_exit_nok;
+ return bacl_exit_error;
}
/*
case ENOENT:
pm_strcpy(jcr->acl_data, "");
jcr->acl_data_len = 0;
- return bsub_exit_ok;
+ return bacl_exit_ok;
default:
/* Some real error */
Mmsg2(jcr->errmsg, _("acl_get_file error on file \"%s\": ERR=%s\n"),
pm_strcpy(jcr->acl_data, "");
jcr->acl_data_len = 0;
- return bsub_exit_nok;
+ return bacl_exit_error;
}
}
/*
*/
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;
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:
Mmsg2(jcr->errmsg, _("acl_delete_def_file error on file \"%s\": ERR=%s\n"),
jcr->last_fname, be.bstrerror());
- return bsub_exit_nok;
+ return bacl_exit_error;
}
}
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
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
switch (errno) {
case ENOENT:
acl_free(acl);
- return bsub_exit_ok;
+ return bacl_exit_ok;
default:
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());
acl_free(acl);
- return bsub_exit_nok;
+ return bacl_exit_error;
}
}
acl_free(acl);
- return bsub_exit_ok;
+ return bacl_exit_ok;
}
/*
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)
/*
*
* 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);
/*
* 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) || \
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;
}
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)
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.
* 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:
/*
* 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
/*
* 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];
*/
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:
Mmsg2(jcr->errmsg, _("getacl error on file \"%s\": ERR=%s\n"),
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)) {
*/
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);
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;
+ 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];
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;
+ return bacl_exit_error;
}
if (strtoacl(jcr->acl_data, n, NACLENTRIES, acls, ACL_FILEOWNER, ACL_FILEGROUP) != n) {
Mmsg2(jcr->errmsg, _("strtoacl error on file \"%s\": ERR=%s\n"),
Dmsg3(100, "strtoacl error acl=%s file=%s ERR=%s\n",
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
if (setacl(jcr->last_fname, n, acls) != 0 && jcr->last_type != FT_LNK) {
switch (errno) {
case ENOENT:
- return bsub_exit_ok;
+ return bacl_exit_ok;
default:
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;
+ 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
* 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;
/*
case 0:
pm_strcpy(jcr->acl_data, "");
jcr->acl_data_len = 0;
- return bsub_exit_ok;
+ return bacl_exit_ok;
case -1:
switch (errno) {
case ENOENT:
- return bsub_exit_ok;
+ 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 bsub_exit_nok;
+ return bacl_exit_error;
}
default:
break;
if (acl_get(jcr->last_fname, ACL_NO_TRIVIAL, &aclp) != 0) {
switch (errno) {
case ENOENT:
- return bsub_exit_ok;
+ 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 bsub_exit_nok;
+ return bacl_exit_error;
}
}
*/
pm_strcpy(jcr->acl_data, "");
jcr->acl_data_len = 0;
- return bsub_exit_ok;
+ return bacl_exit_ok;
}
#if defined(ACL_SID_FMT)
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;
case 0:
Mmsg1(jcr->errmsg, _("Trying to restore acl on file \"%s\" on filesystem without acl support\n"),
jcr->last_fname);
- return bsub_exit_nok;
+ return bacl_exit_error;
case -1:
switch (errno) {
case ENOENT:
- return bsub_exit_ok;
+ 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 bsub_exit_nok;
+ return bacl_exit_error;
}
default:
/*
if ((acl_enabled & (_ACL_ACLENT_ENABLED | _ACL_ACE_ENABLED)) == 0) {
Mmsg1(jcr->errmsg, _("Trying to restore acl on file \"%s\" on filesystem without aclent acl support\n"),
jcr->last_fname);
- return bsub_exit_nok;
+ return bacl_exit_error;
}
break;
case STREAM_ACL_SOLARIS_ACE:
if ((acl_enabled & _ACL_ACE_ENABLED) == 0) {
Mmsg1(jcr->errmsg, _("Trying to restore acl on file \"%s\" on filesystem without ace acl support\n"),
jcr->last_fname);
- return bsub_exit_nok;
+ return bacl_exit_error;
}
break;
default:
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;
+ return bacl_exit_error;
}
/*
if (acl_type(aclp) != ACLENT_T) {
Mmsg1(jcr->errmsg, _("wrong encoding of acl type in acl stream on file \"%s\"\n"),
jcr->last_fname);
- return bsub_exit_nok;
+ return bacl_exit_error;
}
break;
case STREAM_ACL_SOLARIS_ACE:
if (acl_type(aclp) != ACE_T) {
Mmsg1(jcr->errmsg, _("wrong encoding of acl type in acl stream on file \"%s\"\n"),
jcr->last_fname);
- return bsub_exit_nok;
+ return bacl_exit_error;
}
break;
default:
switch (errno) {
case ENOENT:
acl_free(aclp);
- return bsub_exit_ok;
+ 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 bsub_exit_nok;
+ 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) */
}
/*
* 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;
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) {
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) {
}
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;
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;
+ return bacl_exit_error;
}
/*
switch (errno) {
case ENOENT:
actuallyfree(acls);
- return bsub_exit_ok;
+ return bacl_exit_ok;
default:
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());
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 */
/*
* 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.
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)
{
int cnt;
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
/*
* Entry points when compiled without support for XATTRs or on an unsupported platform.
*/
-bsub_exit_code build_xattr_streams(JCR *jcr, FF_PKT *ff_pkt)
+bxattr_exit_code build_xattr_streams(JCR *jcr, FF_PKT *ff_pkt)
{
- return bsub_exit_fatal;
+ return bxattr_exit_fatal;
}
-bsub_exit_code parse_xattr_streams(JCR *jcr, int stream)
+bxattr_exit_code parse_xattr_streams(JCR *jcr, int stream)
{
- return bsub_exit_fatal;
+ return bxattr_exit_fatal;
}
#else
/*
* Send a XATTR stream to the SD.
*/
-static bsub_exit_code send_xattr_stream(JCR *jcr, int stream)
+static bxattr_exit_code send_xattr_stream(JCR *jcr, int stream)
{
BSOCK *sd = jcr->store_bsock;
POOLMEM *msgsave;
#ifdef FD_NO_SEND_TEST
- return bsub_exit_ok;
+ return bxattr_exit_ok;
#endif
/*
* Sanity check
*/
if (jcr->xattr_data_len <= 0)
- return bsub_exit_ok;
+ return bxattr_exit_ok;
/*
* Send header
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 bxattr_exit_fatal;
}
/*
sd->msglen = 0;
Jmsg1(jcr, M_FATAL, 0, _("Network send error to SD. ERR=%s\n"),
sd->bstrerror());
- return bsub_exit_fatal;
+ return bxattr_exit_fatal;
}
jcr->JobBytes += sd->msglen;
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 bxattr_exit_fatal;
}
Dmsg1(200, "XATTR of file: %s successfully backed up!\n", jcr->last_fname);
- return bsub_exit_ok;
+ return bxattr_exit_ok;
}
/*
return jcr->xattr_data_len;
}
-static bsub_exit_code generic_xattr_build_streams(JCR *jcr, FF_PKT *ff_pkt)
+static bxattr_exit_code generic_xattr_build_streams(JCR *jcr, FF_PKT *ff_pkt)
{
int count = 0;
int32_t xattr_list_len,
uint32_t expected_serialize_len = 0;
char *xattr_list, *bp;
xattr_t *xattr_value_list = NULL, *current_xattr;
- bsub_exit_code retval = bsub_exit_nok;
+ bxattr_exit_code retval = bxattr_exit_error;
berrno be;
/*
if (xattr_list_len < 0) {
switch (errno) {
case ENOENT:
- return bsub_exit_ok;
+ return bxattr_exit_ok;
default:
Mmsg2(jcr->errmsg, _("llistxattr error on file \"%s\": ERR=%s\n"),
jcr->last_fname, be.bstrerror());
Dmsg2(100, "llistxattr error file=%s ERR=%s\n",
jcr->last_fname, be.bstrerror());
- return bsub_exit_nok;
+ return bxattr_exit_error;
}
} else if (xattr_list_len == 0) {
- return bsub_exit_ok;
+ return bxattr_exit_ok;
}
/*
if (xattr_list_len < 0) {
switch (errno) {
case ENOENT:
- retval = bsub_exit_ok;
+ retval = bxattr_exit_ok;
goto bail_out;
default:
Mmsg2(jcr->errmsg, _("llistxattr error on file \"%s\": ERR=%s\n"),
}
if (count == 0) {
- retval = bsub_exit_ok;
+ retval = bxattr_exit_ok;
goto bail_out;
}
if (xattr_value_len < 0) {
switch (errno) {
case ENOENT:
- retval = bsub_exit_ok;
+ retval = bxattr_exit_ok;
goto bail_out;
default:
Mmsg2(jcr->errmsg, _("lgetxattr error on file \"%s\": ERR=%s\n"),
if (xattr_value_len < 0) {
switch (errno) {
case ENOENT:
- retval = bsub_exit_ok;
+ retval = bxattr_exit_ok;
goto bail_out;
default:
Mmsg2(jcr->errmsg, _("lgetxattr error on file \"%s\": ERR=%s\n"),
return retval;
}
-static bsub_exit_code generic_xattr_parse_streams(JCR *jcr, int stream)
+static bxattr_exit_code generic_xattr_parse_streams(JCR *jcr, int stream)
{
unser_declare;
xattr_t current_xattr;
- bsub_exit_code retval = bsub_exit_ok;
+ bxattr_exit_code retval = bxattr_exit_ok;
berrno be;
/*
jcr->last_fname);
Dmsg1(100, "Illegal xattr stream, no XATTR_MAGIC on file \"%s\"\n",
jcr->last_fname);
- return bsub_exit_nok;
+ return bxattr_exit_error;
}
/*
jcr->last_fname, be.bstrerror());
Dmsg2(100, "lsetxattr error file=%s ERR=%s\n",
jcr->last_fname, be.bstrerror());
- retval = bsub_exit_nok;
+ retval = bxattr_exit_error;
break;
}
}
/*
* For all these os-es setup the build and parse function pointer to the generic functions.
*/
-static bsub_exit_code (*os_build_xattr_streams)(JCR *jcr, FF_PKT *ff_pkt) = generic_xattr_build_streams;
-static bsub_exit_code (*os_parse_xattr_streams)(JCR *jcr, int stream) = generic_xattr_parse_streams;
+static bxattr_exit_code (*os_build_xattr_streams)(JCR *jcr, FF_PKT *ff_pkt) = generic_xattr_build_streams;
+static bxattr_exit_code (*os_parse_xattr_streams)(JCR *jcr, int stream) = generic_xattr_parse_streams;
#elif defined(HAVE_SUN_OS)
/*
*/
static alist *xattr_link_cache = NULL;
-static struct xattr_link_cache_entry *find_xattr_link_cache_entry(ino_t inum)
+static xattr_link_cache_entry *find_xattr_link_cache_entry(ino_t inum)
{
xattr_link_cache_entry_t *ptr;
{
xattr_link_cache_entry_t *ptr;
- ptr = (xattr_link_cache_entry_t *)malloc(sizeof(struct xattr_link_cache_entry));
- memset((caddr_t)ptr, 0, sizeof(struct xattr_link_cache_entry));
+ ptr = (xattr_link_cache_entry_t *)malloc(sizeof(xattr_link_cache_entry));
+ memset((caddr_t)ptr, 0, sizeof(xattr_link_cache_entry));
ptr->inum = inum;
bstrncpy(ptr->target, target, sizeof(ptr->target));
xattr_link_cache->append(ptr);
}
#endif /* HAVE_ACL && !HAVE_EXTENDED_ACL */
-static bsub_exit_code solaris_save_xattr_acl(JCR *jcr, int fd, const char *attrname, char **acl_text)
+static bxattr_exit_code solaris_save_xattr_acl(JCR *jcr, int fd, const char *attrname, char **acl_text)
{
#ifdef HAVE_ACL
#ifdef HAVE_EXTENDED_ACL
acl_get(attrname, ACL_NO_TRIVIAL, &aclp) != 0) {
switch (errno) {
case ENOENT:
- return bsub_exit_ok;
+ return bxattr_exit_ok;
default:
Mmsg3(jcr->errmsg, _("Unable to get acl on xattr %s on file \"%s\": ERR=%s\n"),
attrname, jcr->last_fname, be.bstrerror());
Dmsg3(100, "facl_get/acl_get of xattr %s on \"%s\" failed: ERR=%s\n",
attrname, jcr->last_fname, be.bstrerror());
- return bsub_exit_nok;
+ return bxattr_exit_error;
}
}
} else {
*acl_text = NULL;
}
- return bsub_exit_ok;
+ return bxattr_exit_ok;
#else /* HAVE_EXTENDED_ACL */
int n;
aclent_t *acls = NULL;
switch (errno) {
case ENOENT:
free(acls);
- return bsub_exit_ok;
+ return bxattr_exit_ok;
default:
Mmsg3(jcr->errmsg, _("Unable to get acl on xattr %s on file \"%s\": ERR=%s\n"),
attrname, jcr->last_fname, be.bstrerror());
Dmsg3(100, "facl/acl of xattr %s on \"%s\" failed: ERR=%s\n",
attrname, jcr->last_fname, be.bstrerror());
free(acls);
- return bsub_exit_nok;
+ return bxattr_exit_error;
}
}
Dmsg3(100, "acltotext of xattr %s on \"%s\" failed: ERR=%s\n",
attrname, jcr->last_fname, be.bstrerror());
free(acls);
- return bsub_exit_nok;
+ return bxattr_exit_error;
}
} else {
*acl_text = NULL;
} else {
*acl_text = NULL;
}
- return bsub_exit_ok;
+ return bxattr_exit_ok;
#endif /* HAVE_EXTENDED_ACL */
#else /* HAVE_ACL */
- return bsub_exit_ok;
+ return bxattr_exit_ok;
#endif /* HAVE_ACL */
}
/*
* Forward declaration for recursive function call.
*/
-static bsub_exit_code solaris_save_xattrs(JCR *jcr, const char *xattr_namespace, const char *attr_parent);
+static bxattr_exit_code solaris_save_xattrs(JCR *jcr, const char *xattr_namespace, const char *attr_parent);
/*
* Save an extended or extensible attribute.
* acl_string is an acl text when a non trivial acl is set on the xattr.
* actual_xattr_data is the content of the xattr file.
*/
-static bsub_exit_code solaris_save_xattr(JCR *jcr, int fd, const char *xattr_namespace,
+static bxattr_exit_code solaris_save_xattr(JCR *jcr, int fd, const char *xattr_namespace,
const char *attrname, bool toplevel_hidden_dir, int stream)
{
int cnt;
int attrfd = -1;
struct stat st;
- struct xattr_link_cache_entry *xlce;
+ xattr_link_cache_entry *xlce;
char target_attrname[PATH_MAX];
char link_source[PATH_MAX];
char *acl_text = NULL;
char attribs[MAXSTRING];
char buffer[BUFSIZ];
- bsub_exit_code retval = bsub_exit_nok;
+ bxattr_exit_code retval = bxattr_exit_error;
berrno be;
bsnprintf(target_attrname, sizeof(target_attrname), "%s%s", xattr_namespace, attrname);
if (fstatat(fd, attrname, &st, AT_SYMLINK_NOFOLLOW) < 0) {
switch (errno) {
case ENOENT:
- retval = bsub_exit_ok;
+ retval = bxattr_exit_ok;
goto bail_out;
default:
Mmsg3(jcr->errmsg, _("Unable to get status on xattr %s on file \"%s\": ERR=%s\n"),
/*
* Get any acl on the xattr.
*/
- if (solaris_save_xattr_acl(jcr, attrfd, attrname, &acl_text) != bsub_exit_ok)
+ if (solaris_save_xattr_acl(jcr, attrfd, attrname, &acl_text) != bxattr_exit_ok)
goto bail_out;
/*
/*
* Get any acl on the xattr.
*/
- if (solaris_save_xattr_acl(jcr, attrfd, attrname, &acl_text) != bsub_exit_ok)
+ if (solaris_save_xattr_acl(jcr, attrfd, attrname, &acl_text) != bxattr_exit_ok)
goto bail_out;
/*
/*
* Get any acl on the xattr.
*/
- if (solaris_save_xattr_acl(jcr, attrfd, attrname, &acl_text) != bsub_exit_ok) {
+ if (solaris_save_xattr_acl(jcr, attrfd, attrname, &acl_text) != bxattr_exit_ok) {
goto bail_out;
}
if ((attrfd = openat(fd, attrname, O_RDONLY)) < 0) {
switch (errno) {
case ENOENT:
- retval = bsub_exit_ok;
+ retval = bxattr_exit_ok;
goto bail_out;
default:
Mmsg3(jcr->errmsg, _("Unable to open xattr %s on \"%s\": ERR=%s\n"),
if (readlink(attrname, link_source, sizeof(link_source)) < 0) {
switch (errno) {
case ENOENT:
- retval = bsub_exit_ok;
+ retval = bxattr_exit_ok;
goto bail_out;
default:
Mmsg3(jcr->errmsg, _("Unable to read symlin %s on \"%s\": ERR=%s\n"),
if (fchdir(fd) < 0) {
switch (errno) {
case ENOENT:
- retval = bsub_exit_ok;
+ retval = bxattr_exit_ok;
goto bail_out;
default:
Mmsg2(jcr->errmsg, _("Unable to chdir to xattr space of file \"%s\": ERR=%s\n"),
return retval;
}
-static bsub_exit_code solaris_save_xattrs(JCR *jcr, const char *xattr_namespace, const char *attr_parent)
+static bxattr_exit_code solaris_save_xattrs(JCR *jcr, const char *xattr_namespace, const char *attr_parent)
{
const char *name;
int fd, filefd = -1, attrdirfd = -1;
DIR *dirp;
struct dirent *dp;
char current_xattr_namespace[PATH_MAX];
- bsub_exit_code retval = bsub_exit_nok;
+ bxattr_exit_code retval = bxattr_exit_error;
berrno be;
/*
if ((filefd = open(name, O_RDONLY | O_NONBLOCK)) < 0) {
switch (errno) {
case ENOENT:
- retval = bsub_exit_ok;
+ retval = bxattr_exit_ok;
goto bail_out;
default:
Mmsg2(jcr->errmsg, _("Unable to open file \"%s\": ERR=%s\n"),
* Which is not problem we just forget about this this xattr.
* But as this is not an error we return a positive return value.
*/
- retval = bsub_exit_ok;
+ retval = bxattr_exit_ok;
goto bail_out;
case ENOENT:
- retval = bsub_exit_ok;
+ retval = bxattr_exit_ok;
goto bail_out;
default:
Mmsg3(jcr->errmsg, _("Unable to open xattr space %s on file \"%s\": ERR=%s\n"),
}
closedir(dirp);
- retval = bsub_exit_ok;
+ retval = bxattr_exit_ok;
bail_out:
if (attrdirfd != -1)
}
#ifdef HAVE_ACL
-static bsub_exit_code solaris_restore_xattr_acl(JCR *jcr, int fd, const char *attrname, char *acl_text)
+static bxattr_exit_code solaris_restore_xattr_acl(JCR *jcr, int fd, const char *attrname, char *acl_text)
{
#ifdef HAVE_EXTENDED_ACL
int error;
if ((error = acl_fromtext(acl_text, &aclp)) != 0) {
Mmsg1(jcr->errmsg, _("Unable to convert acl from text on file \"%s\"\n"),
jcr->last_fname);
- return bsub_exit_nok;
+ return bxattr_exit_error;
}
if ((fd != -1 && facl_set(fd, aclp) != 0) ||
attrname, jcr->last_fname, be.bstrerror());
Dmsg3(100, "Unable to restore acl of xattr %s on file \"%s\": ERR=%s\n",
attrname, jcr->last_fname, be.bstrerror());
- return bsub_exit_nok;
+ return bxattr_exit_error;
}
if (aclp) {
acl_free(aclp);
}
- return bsub_exit_ok;
+ return bxattr_exit_ok;
#else /* HAVE_EXTENDED_ACL */
int n;
attrname, jcr->last_fname, be.bstrerror());
Dmsg3(100, "Unable to restore acl of xattr %s on file \"%s\": ERR=%s\n",
attrname, jcr->last_fname, be.bstrerror());
- return bsub_exit_nok;
+ return bxattr_exit_error;
}
}
if (acls) {
free(acls);
}
- return bsub_exit_ok;
+ return bxattr_exit_ok;
#endif /* HAVE_EXTENDED_ACL */
}
#endif /* HAVE_ACL */
-static bsub_exit_code solaris_restore_xattrs(JCR *jcr, bool is_extensible)
+static bxattr_exit_code solaris_restore_xattrs(JCR *jcr, bool is_extensible)
{
int fd, filefd = -1, attrdirfd = -1, attrfd = -1;
int used_bytes, total_bytes, cnt;
int32_t inum;
struct stat st;
struct timeval times[2];
- bsub_exit_code retval = bsub_exit_nok;
+ bxattr_exit_code retval = bxattr_exit_error;
berrno be;
/*
/*
* Successfully restored xattr.
*/
- retval = bsub_exit_ok;
+ retval = bxattr_exit_ok;
goto bail_out;
} else {
if ((bp = strchr(acl_text, '\0')) == (char *)NULL ||
/*
* Successfully restored xattr.
*/
- retval = bsub_exit_ok;
+ retval = bxattr_exit_ok;
goto bail_out;
default:
goto bail_out;
* Gentile way of the system saying this type of xattr layering is not supported.
* But as this is not an error we return a positive return value.
*/
- retval = bsub_exit_ok;
+ retval = bxattr_exit_ok;
break;
case ENOENT:
- retval = bsub_exit_ok;
+ retval = bxattr_exit_ok;
break;
default:
Mmsg3(jcr->errmsg, _("Unable to restore owner of xattr %s on file \"%s\": ERR=%s\n"),
#ifdef HAVE_ACL
if (acl_text && *acl_text)
- if (solaris_restore_xattr_acl(jcr, attrfd, target_attrname, acl_text) != bsub_exit_ok)
+ if (solaris_restore_xattr_acl(jcr, attrfd, target_attrname, acl_text) != bxattr_exit_ok)
goto bail_out;
#endif /* HAVE_ACL */
/*
* Successfully restored xattr.
*/
- retval = bsub_exit_ok;
+ retval = bxattr_exit_ok;
goto bail_out;
parse_error:
return retval;
}
-static bsub_exit_code solaris_build_xattr_streams(JCR *jcr, FF_PKT *ff_pkt)
+static bxattr_exit_code solaris_build_xattr_streams(JCR *jcr, FF_PKT *ff_pkt)
{
char cwd[PATH_MAX];
- bsub_exit_code retval = bsub_exit_ok;
+ bxattr_exit_code retval = bxattr_exit_ok;
/*
* First see if extended attributes or extensible attributes are present.
return retval;
}
-static bsub_exit_code solaris_parse_xattr_streams(JCR *jcr, int stream)
+static bxattr_exit_code solaris_parse_xattr_streams(JCR *jcr, int stream)
{
char cwd[PATH_MAX];
bool is_extensible = false;
- bsub_exit_code retval;
+ bxattr_exit_code retval;
/*
* First make sure we can restore xattr on the filesystem.
jcr->last_fname);
Dmsg1(100, "Unable to restore extensible attributes on file \"%s\", filesystem doesn't support this\n",
jcr->last_fname);
- return bsub_exit_nok;
+ return bxattr_exit_error;
}
is_extensible = true;
jcr->last_fname);
Dmsg1(100, "Unable to restore extended attributes on file \"%s\", filesystem doesn't support this\n",
jcr->last_fname);
- return bsub_exit_nok;
+ return bxattr_exit_error;
}
break;
default:
- return bsub_exit_nok;
+ return bxattr_exit_error;
}
/*
/*
* Function pointers to the build and parse function to use for these xattrs.
*/
-static bsub_exit_code (*os_build_xattr_streams)(JCR *jcr, FF_PKT *ff_pkt) = solaris_build_xattr_streams;
-static bsub_exit_code (*os_parse_xattr_streams)(JCR *jcr, int stream) = solaris_parse_xattr_streams;
+static bxattr_exit_code (*os_build_xattr_streams)(JCR *jcr, FF_PKT *ff_pkt) = solaris_build_xattr_streams;
+static bxattr_exit_code (*os_parse_xattr_streams)(JCR *jcr, int stream) = solaris_parse_xattr_streams;
#endif /* defined(HAVE_SUN_OS) */
/*
* Entry points when compiled with support for XATTRs on a supported platform.
*/
-bsub_exit_code build_xattr_streams(JCR *jcr, FF_PKT *ff_pkt)
+bxattr_exit_code build_xattr_streams(JCR *jcr, FF_PKT *ff_pkt)
{
if (os_build_xattr_streams) {
return (*os_build_xattr_streams)(jcr, ff_pkt);
}
- return bsub_exit_nok;
+ return bxattr_exit_error;
}
-bsub_exit_code parse_xattr_streams(JCR *jcr, int stream)
+bxattr_exit_code parse_xattr_streams(JCR *jcr, int stream)
{
int cnt;
Jmsg2(jcr, M_WARNING, 0,
_("Can't restore Extended Attributes of %s - incompatible xattr stream encountered - %d\n"),
jcr->last_fname, stream);
- return bsub_exit_nok;
+ return bxattr_exit_error;
}
#endif