2016-10-20 07:25:28

by Thomas De Schampheleire

[permalink] [raw]
Subject: [PATCH] plausible: fix compilation on RHEL 5.x due to missing magic define

From: Thomas De Schampheleire <[email protected]>

RHEL 5.x does have magic.h, but it does not define all expected symbols. In
particular, the NO_CHECK symbols were only added in file 4.20 and RHEL 5.x
is using 4.17.

Add substitute defines to allow continued usage of magic but without the
requested exclude checks.

Signed-off-by: Thomas De Schampheleire <[email protected]>
---
lib/support/plausible.c | 11 +++++++++++
1 file changed, 11 insertions(+)

Note: instead of filling in the actual (current) values for these defines, we
could also have filled them with zero as libmagic will not recognize them
anyway.

diff --git a/lib/support/plausible.c b/lib/support/plausible.c
index 6f0c4bc..0636061 100644
--- a/lib/support/plausible.c
+++ b/lib/support/plausible.c
@@ -43,6 +43,17 @@ static const char *(*dl_magic_file)(magic_t, const char *);
static int (*dl_magic_load)(magic_t, const char *);
static void (*dl_magic_close)(magic_t);

+/*
+ * NO_CHECK functionality was only added in file 4.20.
+ * Older systems like RHEL 5.x still have file 4.17
+ */
+#ifndef MAGIC_NO_CHECK_COMPRESS
+#define MAGIC_NO_CHECK_COMPRESS 0x0001000
+#endif
+#ifndef MAGIC_NO_CHECK_ELF
+#define MAGIC_NO_CHECK_ELF 0x0010000
+#endif
+
#ifdef HAVE_DLOPEN
#include <dlfcn.h>

--
2.7.3



2016-10-25 17:23:23

by Theodore Ts'o

[permalink] [raw]
Subject: Re: plausible: fix compilation on RHEL 5.x due to missing magic define

On Thu, Oct 20, 2016 at 09:25:05AM +0200, Thomas De Schampheleire wrote:
> From: Thomas De Schampheleire <[email protected]>
>
> RHEL 5.x does have magic.h, but it does not define all expected symbols. In
> particular, the NO_CHECK symbols were only added in file 4.20 and RHEL 5.x
> is using 4.17.
>
> Add substitute defines to allow continued usage of magic but without the
> requested exclude checks.
>
> Signed-off-by: Thomas De Schampheleire <[email protected]>

Thanks, applied.

- Ted