From a68725f13c8a28e64d053936eaaa4dd5f5f3922d Mon Sep 17 00:00:00 2001 From: netblue30 Date: Wed, 2 Sep 2020 16:11:04 -0400 Subject: bringing in awk preprocessor from rusty-snake --- src/man/Makefile.in | 13 +++-------- src/man/preproc.awk | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+), 10 deletions(-) create mode 100755 src/man/preproc.awk (limited to 'src') diff --git a/src/man/Makefile.in b/src/man/Makefile.in index 9d1c12fbc..343aa97bf 100644 --- a/src/man/Makefile.in +++ b/src/man/Makefile.in @@ -1,17 +1,10 @@ all: firecfg.man firejail.man firejail-login.man firejail-users.man firejail-profile.man firemon.man - include ../common.mk -%.o : %.c $(H_FILE_LIST) - $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(INCLUDE) -c $< -o $@ - -preproc: $(OBJS) - $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LIBS) $(EXTRA_LDFLAGS) - -%.man: %.txt preproc - ./preproc $(MANFLAGS) $< +%.man: %.txt + ./preproc.awk $(MANFLAGS) < $< > $@ -clean:; rm -fr *.o preproc *.gcov *.gcda *.gcno *.plist *.man +clean:; rm -fr *.man distclean: clean rm -fr Makefile diff --git a/src/man/preproc.awk b/src/man/preproc.awk new file mode 100755 index 000000000..d5cee8c44 --- /dev/null +++ b/src/man/preproc.awk @@ -0,0 +1,64 @@ +#!/usr/bin/gawk -E + +# Copyright (c) 2019,2020 rusty-snake +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +function errexit(msg) { + print msg > "/dev/stderr" + exit 1 +} + +BEGIN { + macros[0] = 0 + for (arg in ARGV) { + if (ARGV[arg] ~ /^-D[A-Z_]+$/) { + macros[length(macros) + 1] = substr(ARGV[arg], 3) + } else { + if (ARGV[arg] == "gawk" || ARGV[arg] == "awk") + continue +# errexit("Invalid commandline argument" ARGV[arg]) + } + ARGV[arg] = "" + } + + include = 1 +} +/^#ifdef [A-Z_]+$/ { + macro = substr($0, 8) + for (i in macros) { + if (macros[i] == macro) { + include = 1 + next + } + } + include = 0 +} +/^#if 0$/ { + include = 0 + next +} +/^#endif$/ { + include = 1 + next +} +{ + if (include) + print +} -- cgit v1.2.3-70-g09d2