summaryrefslogtreecommitdiffabout
path: root/src/pp-setup
authorSergey Poznyakoff <gray@gnu.org.ua>2009-04-20 11:48:39 (GMT)
committer Sergey Poznyakoff <gray@gnu.org.ua>2009-04-20 11:48:39 (GMT)
commit0f081a2643ba0a7f7a5dcfb6a5977d9da1d2b6db (patch) (side-by-side diff)
treeb62e9404cd5dfdfa471ec1202e183f9ca92187e5 /src/pp-setup
parent0983c9ab7a6ea5b3592a297e029a935cc0e4bebc (diff)
downloadgrecs-0f081a2643ba0a7f7a5dcfb6a5977d9da1d2b6db.tar.gz
grecs-0f081a2643ba0a7f7a5dcfb6a5977d9da1d2b6db.tar.bz2
Diverge from Wydawca gconf/ subdirectory into a separate project
Diffstat (limited to 'src/pp-setup') (more/less context) (ignore whitespace changes)
-rw-r--r--src/pp-setup106
1 files changed, 106 insertions, 0 deletions
diff --git a/src/pp-setup b/src/pp-setup
new file mode 100644
index 0000000..bf4fb7d
--- a/dev/null
+++ b/src/pp-setup
@@ -0,0 +1,106 @@
+divert(-1) dnl -*- m4 -*-
+# This file is part of grecs - Gray's Extensible Configuration System
+# Copyright (C) 2007, 2009 Sergey Poznyakoff
+#
+# Grex is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# Grex is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Grex. If not, see <http://www.gnu.org/licenses/>.
+
+changecom(/*,*/)
+
+/* ------------------------------
+ * Simulate --prefix-builtins.
+ * Borrowed from Autoconf
+ * ------------------------------- */
+
+define(`m4_define', defn(`define'))
+define(`m4_defn', defn(`defn'))
+define(`m4_undefine', defn(`undefine'))
+
+m4_undefine(`define')
+m4_undefine(`defn')
+m4_undefine(`undefine')
+
+/* m4_copy(SRC, DST)
+ * -----------------
+ * Define DST as the definition of SRC.
+ * What's the difference between:
+ * 1. m4_copy(`from', `to')
+ * 2. m4_define(`to', `from($@)')
+ * Well, obviously 1 is more expensive in space. Maybe 2 is more expensive
+ * in time, but because of the space cost of 1, it's not that obvious.
+ * Nevertheless, one huge difference is the handling of `$0'. If `from'
+ * uses `$0', then with 1, `to''s `$0' is `to', while it is `from' in 2.
+ * The user will certainly prefer to see `to'.
+ */
+m4_define(`m4_copy',
+`m4_define(`$2', m4_defn(`$1'))')
+
+/* m4_rename(SRC, DST)
+ * -------------------
+ * Rename the macro SRC as DST.
+ */
+m4_define(`m4_rename',
+`m4_copy(`$1', `$2')m4_undefine(`$1')')
+
+/* m4_rename_m4(MACRO-NAME)
+ * ------------------------
+ * Rename MACRO-NAME as m4_MACRO-NAME.
+ */
+m4_define(`m4_rename_m4',
+`m4_rename(`$1', `m4_$1')')
+
+/* Some m4 internals have names colliding with tokens we might use.
+ * Rename them a` la `m4 --prefix-builtins'.
+ */
+m4_rename_m4(`builtin')
+m4_rename_m4(`changecom')
+m4_rename_m4(`changequote')
+m4_rename_m4(`debugfile')
+m4_rename_m4(`debugmode')
+m4_rename_m4(`decr')
+m4_rename_m4(`divert')
+m4_rename_m4(`divnum')
+m4_rename_m4(`dumpdef')
+m4_rename_m4(`errprint')
+m4_rename_m4(`esyscmd')
+m4_rename_m4(`eval')
+m4_rename_m4(`format')
+m4_rename_m4(`ifdef')
+m4_rename_m4(`ifelse')
+m4_rename_m4(`include')
+m4_rename_m4(`incr')
+m4_rename_m4(`index')
+m4_rename_m4(`indir')
+m4_rename_m4(`len')
+m4_rename(`m4exit', `m4_exit')
+m4_rename(`m4wrap', `m4_wrap')
+m4_rename_m4(`maketemp')
+m4_rename_m4(`patsubst')
+m4_rename_m4(`popdef')
+m4_rename_m4(`pushdef')
+m4_rename_m4(`regexp')
+m4_rename_m4(`shift')
+m4_rename_m4(`sinclude')
+m4_rename_m4(`substr')
+m4_rename_m4(`symbols')
+m4_rename_m4(`syscmd')
+m4_rename_m4(`sysval')
+m4_rename_m4(`traceoff')
+m4_rename_m4(`traceon')
+m4_rename_m4(`translit')
+m4_rename_m4(`undivert')
+m4_rename_m4(`dnl')
+m4_rename_m4(`__line__')
+m4_rename_m4(`__file__')
+
+m4_divert(0)m4_dnl

Return to:

Send suggestions and report system problems to the System administrator.