From: Eric Bollengier Date: Wed, 4 Aug 2021 08:03:04 +0000 (+0200) Subject: Fix #7959 About OpenBSD compilation issue X-Git-Tag: Release-11.3.2~420 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=01433eae6148773bd06613f0c2dbae613eb6c1aa;p=thirdparty%2Fbacula.git Fix #7959 About OpenBSD compilation issue --- diff --git a/bacula/src/findlib/fstype.c b/bacula/src/findlib/fstype.c index 2f6b80b39..e508ef4d5 100644 --- a/bacula/src/findlib/fstype.c +++ b/bacula/src/findlib/fstype.c @@ -108,12 +108,16 @@ void add_mtab_item(void *user_ctx, struct stat *st, const char *fstype, /* * simple return fs type magic number or zero when error */ -uint32_t fstypeid(char *fname, FF_PKT *ff_pkt) +static uint64_t fstypeid(char *fname, FF_PKT *ff_pkt) { struct statfs st; if (statfs(fname, &st) == 0) { +#if defined (HAVE_OPENBSD_OS) + return (((uint64_t)st.f_fsid.val[0])<<32) | st.f_fsid.val[1]; +#else return st.f_type; +#endif } return 0; } @@ -150,7 +154,7 @@ bool fstype(char *fname, FF_PKT *ff_pkt, char *fs, int fslen) /* * simple return fs type magic number or zero when error */ -uint32_t fstypeid(char *fname, FF_PKT *ff_pkt) +static uint64_t fstypeid(char *fname, FF_PKT *ff_pkt) { struct statvfs st; @@ -193,7 +197,7 @@ bool fstype(char *fname, FF_PKT *ff_pkt, char *fs, int fslen) /* * simple return fs type magic number or zero when error */ -uint32_t fstypeid(char *fname, FF_PKT *ff_pkt) +static uint64_t fstypeid(char *fname, FF_PKT *ff_pkt) { struct statfs st; @@ -232,7 +236,7 @@ bool fstype(char *fname, FF_PKT *ff_pkt, char *fs, int fslen) /* * simple return fs type magic number or zero when error */ -uint32_t fstypeid(char *fname, FF_PKT *ff_pkt) +static uint64_t fstypeid(char *fname, FF_PKT *ff_pkt) { struct statfs st; @@ -390,7 +394,7 @@ bool fstype(FF_PKT *ff_pkt, char *fs, int fslen) /* * simple return fs type magic number */ -uint32_t fstypeid(char *fname, FF_PKT *ff_pkt) +static uint64_t fstypeid(char *fname, FF_PKT *ff_pkt) { struct statvfs st; @@ -424,7 +428,7 @@ bool fstype(char *fname, FF_PKT *ff_pkt, char *fs, int fslen) /* * simple return fs type magic number */ -uint32_t fstypeid(char *fname, FF_PKT *ff_pkt) +static uint64_t fstypeid(char *fname, FF_PKT *ff_pkt) { struct statfs st; @@ -496,7 +500,7 @@ bool fstype(FF_PKT *ff_pkt, char *fs, int fslen) } /* Not implemented for windows, used in ACL code */ -uint32_t fstypeid(char *fname, FF_PKT *ff_pkt) +static uint64_t fstypeid(char *fname, FF_PKT *ff_pkt) { return 0; } @@ -505,7 +509,7 @@ uint32_t fstypeid(char *fname, FF_PKT *ff_pkt) #else /* No recognised OS */ -uint32_t fstypeid(char *fname, FF_PKT *ff_pkt) +static uint64_t fstypeid(char *fname, FF_PKT *ff_pkt) { Dmsg0(10, "!!! fstypeid() not implemented for this OS. !!!\n"); return 0; @@ -635,9 +639,9 @@ bool check_current_fs(char *fname, FF_PKT *ff, const char *fstype_name) /* * compares current fstype from FF_PKT for required fstype_magic */ -bool check_current_fs(char *fname, FF_PKT *ff, uint32_t fstype_magic) +bool check_current_fs(char *fname, FF_PKT *ff, uint64_t fstype_magic) { - uint32_t fsid; + uint64_t fsid; if (fstype_magic > 0){ // get fsid for file diff --git a/bacula/src/findlib/protos.h b/bacula/src/findlib/protos.h index 1a3f9bfe9..110bb4014 100644 --- a/bacula/src/findlib/protos.h +++ b/bacula/src/findlib/protos.h @@ -83,7 +83,6 @@ bool path_list_add(JCR *jcr, uint32_t len, char *fname); /* from fstype.c */ bool fstype(FF_PKT *ff_pkt, char *fs, int fslen); bool fstype(char *fname, FF_PKT *ff_pkt, char *fs, int fslen); -uint32_t fstypeid(char *fname, FF_PKT *ff_pkt); bool check_current_fs(char *fname, FF_PKT *ff, const char *fstype_name); bool check_current_fs(char *fname, FF_PKT *ff, uint32_t fstype_magic);