diff options
author | Ruediger Meier | 2018-06-12 14:04:06 +0200 |
---|---|---|
committer | Ruediger Meier | 2018-11-12 19:40:33 +0100 |
commit | 04ae85a7e57691983c25f0917cfb8ae4dcb462d5 (patch) | |
tree | 405468de229916a7395aa521941907caf3adc699 | |
parent | Merge branch 'hardlink-import' into hardlink (diff) | |
download | kernel-qcow2-util-linux-04ae85a7e57691983c25f0917cfb8ae4dcb462d5.tar.gz kernel-qcow2-util-linux-04ae85a7e57691983c25f0917cfb8ae4dcb462d5.tar.xz kernel-qcow2-util-linux-04ae85a7e57691983c25f0917cfb8ae4dcb462d5.zip |
hardlink: enable build with and without pcre2
Signed-off-by: Ruediger Meier <ruediger.meier@ga-group.nl>
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | configure.ac | 12 | ||||
-rw-r--r-- | misc-utils/Makemodule.am | 12 | ||||
-rw-r--r-- | misc-utils/hardlink.c | 19 |
4 files changed, 42 insertions, 2 deletions
diff --git a/.gitignore b/.gitignore index 9f2fb17db..b582a8627 100644 --- a/.gitignore +++ b/.gitignore @@ -96,6 +96,7 @@ ylwrap /fsfreeze /fstrim /getopt +/hardlink /hexdump /hwclock /ionice diff --git a/configure.ac b/configure.ac index b3430dac4..260283cf2 100644 --- a/configure.ac +++ b/configure.ac @@ -1372,6 +1372,18 @@ UL_REQUIRES_HAVE([setpriv], [linux_securebits_h], [securebits.h header file]) UL_REQUIRES_HAVE([setpriv], [cap_ng], [libcap-ng library]) AM_CONDITIONAL([BUILD_SETPRIV], [test "x$build_setpriv" = xyes]) +PKG_CHECK_MODULES([PCRE], [libpcre2-8], [have_pcre=yes], [have_pcre=no]) +AS_IF([test "x$have_pcre" = xyes ], [ + AC_DEFINE([HAVE_PCRE], [1], [Define if libpcre2 is available]) +]) +AM_CONDITIONAL([HAVE_PCRE], [test "x$have_pcre" = xyes]) + +AC_ARG_ENABLE([hardlink], + AS_HELP_STRING([--disable-hardlink], [do not build hardlink]), + [], [UL_DEFAULT_ENABLE([hardlink], [check])] +) +UL_BUILD_INIT([hardlink]) +AM_CONDITIONAL([BUILD_HARDLINK], [test "x$build_hardlink" = xyes]) AC_ARG_ENABLE([eject], AS_HELP_STRING([--disable-eject], [do not build eject]), diff --git a/misc-utils/Makemodule.am b/misc-utils/Makemodule.am index 36195b7a3..30b7c2f0f 100644 --- a/misc-utils/Makemodule.am +++ b/misc-utils/Makemodule.am @@ -211,3 +211,15 @@ fincore_SOURCES = misc-utils/fincore.c fincore_LDADD = $(LDADD) libsmartcols.la libcommon.la fincore_CFLAGS = $(AM_CFLAGS) -I$(ul_libsmartcols_incdir) endif + +if BUILD_HARDLINK +usrbin_exec_PROGRAMS += hardlink +hardlink_SOURCES = misc-utils/hardlink.c +hardlink_LDADD = $(LDADD) libcommon.la +hardlink_CFLAGS = $(AM_CFLAGS) +if HAVE_PCRE +hardlink_LDADD += $(PCRE_LIBS) +hardlink_CFLAGS += $(PCRE_CFLAGS) +endif +dist_man_MANS += misc-utils/hardlink.1 +endif diff --git a/misc-utils/hardlink.c b/misc-utils/hardlink.c index 8e74ca021..ba519993a 100644 --- a/misc-utils/hardlink.c +++ b/misc-utils/hardlink.c @@ -22,7 +22,6 @@ /* Changes by Todd Lewis that adds option -x to exclude files with pcre lib */ #define _GNU_SOURCE -#define PCRE2_CODE_UNIT_WIDTH 8 #include <sys/types.h> #include <stdlib.h> #include <stdio.h> @@ -33,16 +32,21 @@ #include <dirent.h> #include <fcntl.h> #include <errno.h> -#include <pcre2.h> +#ifdef HAVE_PCRE +# define PCRE2_CODE_UNIT_WIDTH 8 +# include <pcre2.h> +#endif #define NHASH (1<<17) /* Must be a power of 2! */ #define NIOBUF (1<<12) #define NAMELEN 4096 #define NBUF 64 +#ifdef HAVE_PCRE pcre2_code *re; PCRE2_SPTR exclude_pattern; pcre2_match_data *match_data; +#endif struct _f; typedef struct _h { @@ -336,8 +340,10 @@ int main(int argc, char **argv) { int ch; int i; +#ifdef HAVE_PCRE int errornumber; PCRE2_SIZE erroroffset; +#endif dynstr nam1 = {NULL, 0}; while ((ch = getopt (argc, argv, "cnvhfx:")) != -1) { switch (ch) { @@ -354,7 +360,12 @@ int main(int argc, char **argv) force=1; break; case 'x': +#ifdef HAVE_PCRE exclude_pattern = (PCRE2_SPTR)optarg; +#else + fprintf(stderr, "option x not supported (built without pcre2)\n"); + exit(1); +#endif break; case 'h': default: @@ -363,6 +374,7 @@ int main(int argc, char **argv) } if (optind >= argc) usage(argv[0]); +#ifdef HAVE_PCRE if (exclude_pattern) { re = pcre2_compile( exclude_pattern, /* the pattern */ @@ -379,6 +391,7 @@ int main(int argc, char **argv) } match_data = pcre2_match_data_create_from_pattern(re, NULL); } +#endif for (i = optind; i < argc; i++) rf(argv[i]); while (dirs) { @@ -403,6 +416,7 @@ int main(int argc, char **argv) if (!di->d_name[1] || !strcmp(di->d_name, "..")) continue; } +#ifdef HAVE_PCRE if (re && pcre2_match( re, /* compiled regex */ (PCRE2_SPTR)di->d_name, @@ -418,6 +432,7 @@ int main(int argc, char **argv) } continue; } +#endif { size_t subdirlen; growstr(&nam1, add2(nam1baselen, subdirlen = strlen(di->d_name))); |