diff options
-rw-r--r-- | CMakeLists.txt | 2 | ||||
-rwxr-xr-x | xD-gen-replies.awk | 29 | ||||
-rwxr-xr-x | xD-gen-replies.sh | 28 |
3 files changed, 30 insertions, 29 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 4b403f3..8559b18 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -148,7 +148,7 @@ include_directories (${PROJECT_SOURCE_DIR} ${PROJECT_BINARY_DIR}) # Generate IRC replies--we need a custom target because of the multiple outputs add_custom_command (OUTPUT xD-replies.c xD.msg - COMMAND ${PROJECT_SOURCE_DIR}/xD-gen-replies.sh + COMMAND env LC_ALL=C awk -f ${PROJECT_SOURCE_DIR}/xD-gen-replies.awk > xD-replies.c < ${PROJECT_SOURCE_DIR}/xD-replies DEPENDS ${PROJECT_SOURCE_DIR}/xD-replies COMMENT "Generating files from the list of server numerics") diff --git a/xD-gen-replies.awk b/xD-gen-replies.awk new file mode 100755 index 0000000..c9e8882 --- /dev/null +++ b/xD-gen-replies.awk @@ -0,0 +1,29 @@ +#!/usr/bin/awk -f +BEGIN { + # The message catalog is a by-product + msg = "xD.msg" + print "$quote \"" > msg; + print "$set 1" > msg; +} + +/^[0-9]+ *IRC_(ERR|RPL)_[A-Z]+ *".*"$/ { + match($0, /".*"/); + ids[$1] = $2; + texts[$2] = substr($0, RSTART, RLENGTH); + print $1 " " texts[$2] > msg +} + +END { + printf("enum\n{") + for (i in ids) { + if (seen_first) + printf(",") + seen_first = 1 + printf("\n\t%s = %s", ids[i], i) + } + print "\n};\n" + print "static const char *g_default_replies[] =\n{" + for (i in ids) + print "\t[" ids[i] "] = " texts[ids[i]] "," + print "};" +} diff --git a/xD-gen-replies.sh b/xD-gen-replies.sh deleted file mode 100755 index 0fcbbba..0000000 --- a/xD-gen-replies.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/sh -LC_ALL=C exec awk ' - BEGIN { - # The message catalog is a by-product - msg = "xD.msg" - print "$quote \"" > msg; - print "$set 1" > msg; - } - /^[0-9]+ *IRC_(ERR|RPL)_[A-Z]+ *".*"$/ { - match($0, /".*"/); - ids[$1] = $2; - texts[$2] = substr($0, RSTART, RLENGTH); - print $1 " " texts[$2] > msg - } - END { - printf("enum\n{") - for (i in ids) { - if (seen_first) - printf(",") - seen_first = 1 - printf("\n\t%s = %s", ids[i], i) - } - print "\n};\n" - print "static const char *g_default_replies[] =\n{" - for (i in ids) - print "\t[" ids[i] "] = " texts[ids[i]] "," - print "};" - }' |