about summary refs log tree commit diff
path: root/Src/Modules/errnames2.awk
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2003-08-30 19:06:06 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2003-08-30 19:06:06 +0000
commitc9c5f9da9366d1587c588507433cec35ef243579 (patch)
tree99d69de0866c36adf40dc516c8ab3ab64ad480ce /Src/Modules/errnames2.awk
parentc016b2dcdc7faade5b279c279b2d506b9ea22bf7 (diff)
downloadzsh-c9c5f9da9366d1587c588507433cec35ef243579.tar.gz
zsh-c9c5f9da9366d1587c588507433cec35ef243579.tar.xz
zsh-c9c5f9da9366d1587c588507433cec35ef243579.zip
18980: new zsh/system module
Diffstat (limited to 'Src/Modules/errnames2.awk')
-rw-r--r--Src/Modules/errnames2.awk42
1 files changed, 42 insertions, 0 deletions
diff --git a/Src/Modules/errnames2.awk b/Src/Modules/errnames2.awk
new file mode 100644
index 000000000..60969b423
--- /dev/null
+++ b/Src/Modules/errnames2.awk
@@ -0,0 +1,42 @@
+# Edited version of Src/signames2.awk.
+#
+# {g,n}awk script to generate errnames.c
+# This version relies on the previous output of the preprocessor
+# on sigtmp.c, sigtmp.out, which is in turn generated by errnames1.awk.
+#
+# NB: On SunOS 4.1.3 - user-functions don\'t work properly, also \" problems
+# Without 0 + hacks some nawks compare numbers as strings
+#
+/^XXNAMES XXE[A-Z0-9]*[\t ][\t ]*[1-9][0-9]*/ {
+    eindex = index($0, "E")
+    etail = substr($0, 11, 80)
+    split(etail, tmp)
+    enam = tmp[1]
+    enum = tmp[2]
+    if (errname[enum] == "") {
+	errname[enum] = enam
+	if (0 + max < 0 + enum && enum < 1024)
+	    max = enum
+    }
+}
+
+END {
+    ps = "%s"
+    printf "/** errnames.c                                 **/\n"
+    printf "/** architecture-customized errnames.c for zsh **/\n"
+    printf "\n"
+    printf "#define ERRCOUNT\t%d\n", max
+    printf "\n"
+    printf "#include %csystem.mdh%c\n", 34, 34
+    printf "\n"
+    printf "/**/\n"
+    printf "const char *sys_errnames[ERRCOUNT+1] = {\n"
+
+    for (i = 1; i <= 0 + max; i++)
+	if (errname[i] == "")
+	    printf("\t%cE%d%c,\n", 34, i, 34)
+	else
+	    printf("\t%c%s%c,\n", 34, errname[i], 34)
+    print "\tNULL"
+    print "};"
+}