summaryrefslogtreecommitdiffstats
path: root/src/c-ares/m4/xc-translit.m4
diff options
context:
space:
mode:
Diffstat (limited to 'src/c-ares/m4/xc-translit.m4')
-rw-r--r--src/c-ares/m4/xc-translit.m4164
1 files changed, 164 insertions, 0 deletions
diff --git a/src/c-ares/m4/xc-translit.m4 b/src/c-ares/m4/xc-translit.m4
new file mode 100644
index 000000000..1918f1684
--- /dev/null
+++ b/src/c-ares/m4/xc-translit.m4
@@ -0,0 +1,164 @@
+#---------------------------------------------------------------------------
+#
+# xc-translit.m4
+#
+# Copyright (c) 2011 Daniel Stenberg <daniel@haxx.se>
+#
+# Permission to use, copy, modify, and distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+#
+#---------------------------------------------------------------------------
+
+# File version for 'aclocal' use. Keep it a single number.
+# serial 2
+
+
+dnl XC_SH_TR_SH (expression)
+dnl -------------------------------------------------
+dnl Shell execution time transliteration of 'expression'
+dnl argument, where all non-alfanumeric characters are
+dnl converted to the underscore '_' character.
+dnl Normal shell expansion and substitution takes place
+dnl for given 'expression' at shell execution time before
+dnl transliteration is applied to it.
+
+AC_DEFUN([XC_SH_TR_SH],
+[`echo "$1" | sed 's/[[^a-zA-Z0-9_]]/_/g'`])
+
+
+dnl XC_SH_TR_SH_EX (expression, [extra])
+dnl -------------------------------------------------
+dnl Like XC_SH_TR_SH but transliterating characters
+dnl given in 'extra' argument to lowercase 'p'. For
+dnl example [*+], [*], and [+] are valid 'extra' args.
+
+AC_DEFUN([XC_SH_TR_SH_EX],
+[ifelse([$2], [],
+ [XC_SH_TR_SH([$1])],
+ [`echo "$1" | sed 's/[[$2]]/p/g' | sed 's/[[^a-zA-Z0-9_]]/_/g'`])])
+
+
+dnl XC_M4_TR_SH (expression)
+dnl -------------------------------------------------
+dnl m4 execution time transliteration of 'expression'
+dnl argument, where all non-alfanumeric characters are
+dnl converted to the underscore '_' character.
+
+AC_DEFUN([XC_M4_TR_SH],
+[patsubst(XC_QPATSUBST(XC_QUOTE($1),
+ [[^a-zA-Z0-9_]], [_]),
+ [\(_\(.*\)_\)], [\2])])
+
+
+dnl XC_M4_TR_SH_EX (expression, [extra])
+dnl -------------------------------------------------
+dnl Like XC_M4_TR_SH but transliterating characters
+dnl given in 'extra' argument to lowercase 'p'. For
+dnl example [*+], [*], and [+] are valid 'extra' args.
+
+AC_DEFUN([XC_M4_TR_SH_EX],
+[ifelse([$2], [],
+ [XC_M4_TR_SH([$1])],
+ [patsubst(XC_QPATSUBST(XC_QPATSUBST(XC_QUOTE($1),
+ [[$2]],
+ [p]),
+ [[^a-zA-Z0-9_]], [_]),
+ [\(_\(.*\)_\)], [\2])])])
+
+
+dnl XC_SH_TR_CPP (expression)
+dnl -------------------------------------------------
+dnl Shell execution time transliteration of 'expression'
+dnl argument, where all non-alfanumeric characters are
+dnl converted to the underscore '_' character and alnum
+dnl characters are converted to uppercase.
+dnl Normal shell expansion and substitution takes place
+dnl for given 'expression' at shell execution time before
+dnl transliteration is applied to it.
+
+AC_DEFUN([XC_SH_TR_CPP],
+[`echo "$1" | dnl
+sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' | dnl
+sed 's/[[^A-Z0-9_]]/_/g'`])
+
+
+dnl XC_SH_TR_CPP_EX (expression, [extra])
+dnl -------------------------------------------------
+dnl Like XC_SH_TR_CPP but transliterating characters
+dnl given in 'extra' argument to uppercase 'P'. For
+dnl example [*+], [*], and [+] are valid 'extra' args.
+
+AC_DEFUN([XC_SH_TR_CPP_EX],
+[ifelse([$2], [],
+ [XC_SH_TR_CPP([$1])],
+ [`echo "$1" | dnl
+sed 's/[[$2]]/P/g' | dnl
+sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' | dnl
+sed 's/[[^A-Z0-9_]]/_/g'`])])
+
+
+dnl XC_M4_TR_CPP (expression)
+dnl -------------------------------------------------
+dnl m4 execution time transliteration of 'expression'
+dnl argument, where all non-alfanumeric characters are
+dnl converted to the underscore '_' character and alnum
+dnl characters are converted to uppercase.
+
+AC_DEFUN([XC_M4_TR_CPP],
+[patsubst(XC_QPATSUBST(XC_QTRANSLIT(XC_QUOTE($1),
+ [abcdefghijklmnopqrstuvwxyz],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ]),
+ [[^A-Z0-9_]], [_]),
+ [\(_\(.*\)_\)], [\2])])
+
+
+dnl XC_M4_TR_CPP_EX (expression, [extra])
+dnl -------------------------------------------------
+dnl Like XC_M4_TR_CPP but transliterating characters
+dnl given in 'extra' argument to uppercase 'P'. For
+dnl example [*+], [*], and [+] are valid 'extra' args.
+
+AC_DEFUN([XC_M4_TR_CPP_EX],
+[ifelse([$2], [],
+ [XC_M4_TR_CPP([$1])],
+ [patsubst(XC_QPATSUBST(XC_QTRANSLIT(XC_QPATSUBST(XC_QUOTE($1),
+ [[$2]],
+ [P]),
+ [abcdefghijklmnopqrstuvwxyz],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ]),
+ [[^A-Z0-9_]], [_]),
+ [\(_\(.*\)_\)], [\2])])])
+
+
+dnl XC_QUOTE (expression)
+dnl -------------------------------------------------
+dnl Expands to quoted result of 'expression' expansion.
+
+AC_DEFUN([XC_QUOTE],
+[[$@]])
+
+
+dnl XC_QPATSUBST (string, regexp[, repl])
+dnl -------------------------------------------------
+dnl Expands to quoted result of 'patsubst' expansion.
+
+AC_DEFUN([XC_QPATSUBST],
+[XC_QUOTE(patsubst([$1], [$2], [$3]))])
+
+
+dnl XC_QTRANSLIT (string, chars, repl)
+dnl -------------------------------------------------
+dnl Expands to quoted result of 'translit' expansion.
+
+AC_DEFUN([XC_QTRANSLIT],
+[XC_QUOTE(translit([$1], [$2], [$3]))])
+