diff options
author | Alan Coopersmith <alan.coopersmith@oracle.com> | 2019-02-25 14:22:27 -0800 |
---|---|---|
committer | Alan Coopersmith <alan.coopersmith@oracle.com> | 2019-02-25 14:46:45 -0800 |
commit | 5f941a815b7bad49a766987660094b01046c8e7d (patch) | |
tree | 908eaae769132a78648ece6dfa83882a1011d341 | |
parent | dd7402c2f1e828cc3b0fae036b62f74b8014814b (diff) |
Use sed instead of the C pre-processor to generate config files
Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=93359
while avoiding https://bugs.freedesktop.org/show_bug.cgi?id=107368
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
-rw-r--r-- | config/Makefile.am | 66 | ||||
-rw-r--r-- | config/Xreset.in (renamed from config/Xreset.cpp) | 0 | ||||
-rw-r--r-- | config/Xresources.in (renamed from config/Xresources.cpp) | 2 | ||||
-rw-r--r-- | config/Xservers.ws.in (renamed from config/Xservers.ws.cpp) | 0 | ||||
-rw-r--r-- | config/Xsession.in (renamed from config/Xsession.cpp) | 10 | ||||
-rw-r--r-- | config/Xstartup.in (renamed from config/Xstartup.cpp) | 0 | ||||
-rw-r--r-- | config/xdm-config.in (renamed from config/xdm-config.cpp) | 6 | ||||
-rw-r--r-- | cpprules.in | 26 |
8 files changed, 46 insertions, 64 deletions
diff --git a/config/Makefile.am b/config/Makefile.am index e1484f1..c444667 100644 --- a/config/Makefile.am +++ b/config/Makefile.am @@ -1,7 +1,5 @@ # -include $(top_srcdir)/cpprules.in - xdmscriptdir = $(XDMSCRIPTDIR) xdmconfigdir = $(XDMCONFIGDIR) @@ -32,43 +30,61 @@ BUILT_SOURCES = Xservers.ws xdm-config Xreset Xresources Xsession Xstartup CLEANFILES = $(BUILT_SOURCES) Xservers -EXTRA_DIST = Xservers.ws.cpp Xservers.fs \ - xdm-config.cpp Xreset.cpp Xresources.cpp Xsession.cpp Xstartup.cpp +EXTRA_DIST = Xservers.ws.in Xservers.fs \ + xdm-config.in Xreset.in Xresources.in Xsession.in Xstartup.in Xservers: Xservers.$(SERVERSTYPE) ln -s Xservers.$(SERVERSTYPE) Xservers -# Defines used when cpp'ing config files to replace settings in the files +# Defines used when sed'ing config files to replace settings in the files -#if USE_XPM -XPMDEFINES = -DXPM -DBITMAPDIR=$(XDM_PIXMAPDIR) -DXDM_PIXMAP=$(XDM_PIXMAP) \ - -DXDM_BWPIXMAP=$(XDM_BWPIXMAP) -#endif +if USE_XPM +XPM_SED_FLAGS = -e '/ifdef XPM/d' -e '/endif \/\* XPM \*\//d' +XPM_SED_FLAGS += -e 's|BITMAPDIR|$(XDM_PIXMAPDIR)|' +XPM_SED_FLAGS += -e 's|XDM_PIXMAP|$(XDM_PIXMAP)|' +XPM_SED_FLAGS += -e 's|XDM_BWPIXMAP|$(XDM_BWPIXMAP)|' +else +XPM_SED_FLAGS = -e '/ifdef XPM/,/endif \/\* XPM \*\//d' +endif #if HAVE_MKTEMP_COMMAND -MKTEMP_DEFINES = -DMKTEMP_COMMAND=$(MKTEMP_COMMAND) +MKTEMP_SED_FLAGS = -e 's|MKTEMP_COMMAND|$(MKTEMP_COMMAND)|' #endif if SET_UTMP_FILE -UTMP_CPP_FLAGS = -DUTMP_FILE="$(UTMP_FILE)" -DUTMP_FLAG="-u $(UTMP_FILE)" +UTMP_SED_FLAGS = -e 's|UTMP_FILE|$(UTMP_FILE)|' +UTMP_SED_FLAGS += -e 's|UTMP_FLAG|-u $(UTMP_FILE)|' else -UTMP_CPP_FLAGS = -DUTMP_FILE="" -DUTMP_FLAG="" +UTMP_SED_FLAGS = -e 's|UTMP_FILE||' -e 's|UTMP_FLAG||' endif if SET_WTMP_FILE -WTMP_CPP_FLAGS = -DWTMP_FILE="$(WTMP_FILE)" -DWTMP_FLAG="-w $(WTMP_FILE)" +WTMP_SED_FLAGS = -e 's|WTMP_FILE|$(WTMP_FILE)|' +WTMP_SED_FLAGS += -e 's|WTMP_FLAG|-w $(WTMP_FILE)|' else -WTMP_CPP_FLAGS = -DWTMP_FILE="" -DWTMP_FLAG="" +WTMP_SED_FLAGS = -e 's|WTMP_FILE||' -e 's|WTMP_FLAG||' endif -CPP_FILES_FLAGS = -DBINDIR="$(bindir)" -DDEFAULTVT="$(DEFAULTVT)" \ - $(UTMP_CPP_FLAGS) $(WTMP_CPP_FLAGS) \ - -DXDMDIR="$(XDMLIBDIR)" -DXDMLOGDIR="$(XDMLOGDIR)" \ - -DXDMXAUTHDIR="$(XDMXAUTHDIR)" \ - -DXDMPIDDIR="$(XDMPIDDIR)" -DXDMCONFIGDIR="$(XDMCONFIGDIR)" \ - -DXDMSCRIPTDIR="$(XDMSCRIPTDIR)" -DSU="$(SU)" \ - -DCHOOSERPATH="$(XDMLIBDIR)/chooser" $(XPMDEFINES) \ - -DSHELL_CMD="$(SHELL_CMD)" $(MKTEMP_DEFINES) - -Xservers.ws: $(srcdir)/Xservers.ws.cpp - $(AM_V_GEN)$(RAWCPP) $(RAWCPPFLAGS) $(CPP_FILES_FLAGS) < $(srcdir)/Xservers.ws.cpp | $(CPP_SED_MAGIC) > $@ +SED_FILES_FLAGS = -e 's|BINDIR|$(bindir)|' +SED_FILES_FLAGS += -e 's|DEFAULTVT|$(DEFAULTVT)|' +SED_FILES_FLAGS += $(UTMP_SED_FLAGS) $(WTMP_SED_FLAGS) +SED_FILES_FLAGS += -e 's|XDMDIR|$(XDMLIBDIR)|' +SED_FILES_FLAGS += -e 's|XDMLOGDIR|$(XDMLOGDIR)|' +SED_FILES_FLAGS += -e 's|XDMXAUTHDIR|$(XDMXAUTHDIR)|' +SED_FILES_FLAGS += -e 's|XDMPIDDIR|$(XDMPIDDIR)|' +SED_FILES_FLAGS += -e 's|XDMCONFIGDIR|$(XDMCONFIGDIR)|' +SED_FILES_FLAGS += -e 's|XDMSCRIPTDIR|$(XDMSCRIPTDIR)|' +SED_FILES_FLAGS += -e 's|SU|$(SU)|' +SED_FILES_FLAGS += -e 's|CHOOSERPATH|$(XDMLIBDIR)/chooser|' +SED_FILES_FLAGS += $(XPM_SED_FLAGS) +SED_FILES_FLAGS += -e 's|SHELL_CMD|$(SHELL_CMD)|' +SED_FILES_FLAGS += $(MKTEMP_SED_FLAGS) + +# Substitutions previously needed to work around the C pre-processor +SED_CPP_FLAGS = -e 's|XCOMM|\#|' -e 's|XHASH|\#|' \ + -e 's|NLBS|\\n\\|' -e 's|BS|\\|' -e 's|/\*\*/||g' + +SUFFIXES = .in + +.in: + $(AM_V_GEN)$(SED) $(SED_FILES_FLAGS) $(SED_CPP_FLAGS) $< > $@ diff --git a/config/Xreset.cpp b/config/Xreset.in index 5327402..5327402 100644 --- a/config/Xreset.cpp +++ b/config/Xreset.in diff --git a/config/Xresources.cpp b/config/Xresources.in index c880db7..5c43848 100644 --- a/config/Xresources.cpp +++ b/config/Xresources.in @@ -1,7 +1,5 @@ Xcursor.theme: whiteglass -#define BS \ /* cpp can be trickier than m4 */ -#define NLBS \n\ /* don't remove these comments */ xlogin*login.translations: #override BS Ctrl<Key>R: abort-display()NLBS <Key>F1: set-session-argument(failsafe) finish-field()NLBS diff --git a/config/Xservers.ws.cpp b/config/Xservers.ws.in index b6089ef..b6089ef 100644 --- a/config/Xservers.ws.cpp +++ b/config/Xservers.ws.in diff --git a/config/Xsession.cpp b/config/Xsession.in index aed2ab7..42a8b7d 100644 --- a/config/Xsession.cpp +++ b/config/Xsession.in @@ -8,8 +8,9 @@ if ( umask 077 && cp /dev/null "$errfile" 2> /dev/null ) then exec > "$errfile" 2>&1 else -#ifdef MKTEMP_COMMAND - mktemp=MKTEMP_COMMAND + mktemp="MKTEMP_COMMAND" + if [ "x$mktemp" != "x" -a -x "$mktemp" ] + then for errfile in "${TMPDIR-/tmp}/xses-$USER" "/tmp/xses-$USER" do if ef="$( umask 077 && $mktemp "$errfile.XXXXXX" 2> /dev/null)" @@ -19,7 +20,7 @@ else break fi done -#else + else XCOMM Since this system doesn't have a mktemp command to allow secure XCOMM creation of files in shared directories, no fallback error log XCOMM is being used. See https://bugs.freedesktop.org/show_bug.cgi?id=5898 @@ -34,8 +35,7 @@ XCOMM fi XCOMM done exec > /dev/null 2>&1 - -#endif + fi fi case $# in diff --git a/config/Xstartup.cpp b/config/Xstartup.in index 9329460..9329460 100644 --- a/config/Xstartup.cpp +++ b/config/Xstartup.in diff --git a/config/xdm-config.cpp b/config/xdm-config.in index a685129..d01cb08 100644 --- a/config/xdm-config.cpp +++ b/config/xdm-config.in @@ -3,12 +3,6 @@ ! ! ! -#ifndef XDMCONFIGDIR -#define XDMCONFIGDIR XDMDIR -#endif -#ifndef XDMSCRIPTDIR -#define XDMSCRIPTDIR XDMDIR -#endif DisplayManager.authDir: XDMXAUTHDIR DisplayManager.errorLogFile: XDMLOGDIR/xdm.log DisplayManager.pidFile: XDMPIDDIR/xdm.pid diff --git a/cpprules.in b/cpprules.in deleted file mode 100644 index c6daca3..0000000 --- a/cpprules.in +++ /dev/null @@ -1,26 +0,0 @@ -# -*- Makefile -*- -# Rules for generating files using the C pre-processor -# (Replaces CppFileTarget from Imake) - -SED = sed - -SUFFIXES = .cpp - -WCHAR32_FLAGS = -DWCHAR32=@WCHAR32@ - -# Translate XCOMM into pound sign with sed, rather than passing -DXCOMM=XCOMM -# to cpp, because that trick does not work on all ANSI C preprocessors. -# Delete line numbers from the cpp output (-P is not portable, I guess). -# Allow XCOMM to be preceded by whitespace and provide a means of generating -# output lines with trailing backslashes. -# Allow XHASH to always be substituted, even in cases where XCOMM isn't. - -CPP_SED_MAGIC = $(SED) -e '/^\# *[0-9][0-9]* *.*$$/d' \ - -e '/^\#line *[0-9][0-9]* *.*$$/d' \ - -e '/^[ ]*XCOMM$$/s/XCOMM/\#/' \ - -e '/^[ ]*XCOMM[^a-zA-Z0-9_]/s/XCOMM/\#/' \ - -e '/^[ ]*XHASH/s/XHASH/\#/' \ - -e '/\@\@$$/s/\@\@$$/\\/' - -.cpp: - $(AM_V_GEN)$(RAWCPP) $(RAWCPPFLAGS) $(CPP_FILES_FLAGS) < $< | $(CPP_SED_MAGIC) > $@ |