diff --git a/NEWS b/NEWS index 1d3cd4a..803dc03 100644 --- a/NEWS +++ b/NEWS @@ -29,6 +29,8 @@ * Added a web frontend for xC called xP + * Added a Go port of xD called xS + 1.5.0 (2021-12-21) "The Show Must Go On" diff --git a/README.adoc b/README.adoc index 3c09ba7..8d61855 100644 --- a/README.adoc +++ b/README.adoc @@ -47,8 +47,9 @@ What it notably doesn't support is online changes to configuration, any limits besides the total number of connections and mode `+l`, or server linking (which also means no services). -This program has been https://git.janouch.name/p/haven/src/branch/master/hid[ -ported to Go] in a different project, and development continues over there. +xS +-- +The IRC daemon again, this time ported to Go, additionally supporting WEBIRC. xB -- diff --git a/xD-gen-replies.awk b/xD-gen-replies.awk index c9e8882..015e743 100755 --- a/xD-gen-replies.awk +++ b/xD-gen-replies.awk @@ -2,14 +2,14 @@ BEGIN { # The message catalog is a by-product msg = "xD.msg" - print "$quote \"" > msg; - print "$set 1" > 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); + match($0, /".*"/) + ids[$1] = $2 + texts[$2] = substr($0, RSTART, RLENGTH) print $1 " " texts[$2] > msg } diff --git a/xP/Makefile b/xP/Makefile index 34de55a..c0198aa 100644 --- a/xP/Makefile +++ b/xP/Makefile @@ -1,5 +1,6 @@ .POSIX: .SUFFIXES: +AWK = env LC_ALL=C awk outputs = xP proto.go public/proto.js public/mithril.js all: $(outputs) public/ircfmt.woff2 @@ -7,11 +8,11 @@ all: $(outputs) public/ircfmt.woff2 xP: xP.go proto.go go build -o $@ proto.go: ../xC-gen-proto.awk ../xC-gen-proto-go.awk ../xC-proto - awk -f ../xC-gen-proto.awk -f ../xC-gen-proto-go.awk ../xC-proto > $@ + $(AWK) -f ../xC-gen-proto.awk -f ../xC-gen-proto-go.awk ../xC-proto > $@ public/proto.js: ../xC-gen-proto.awk ../xC-gen-proto-js.awk ../xC-proto - awk -f ../xC-gen-proto.awk -f ../xC-gen-proto-js.awk ../xC-proto > $@ + $(AWK) -f ../xC-gen-proto.awk -f ../xC-gen-proto-js.awk ../xC-proto > $@ public/ircfmt.woff2: gen-ircfmt.awk - awk -v Output=$@ -f gen-ircfmt.awk + $(AWK) -v Output=$@ -f gen-ircfmt.awk public/mithril.js: curl -Lo $@ https://unpkg.com/mithril/mithril.js clean: diff --git a/xS/.gitignore b/xS/.gitignore new file mode 100644 index 0000000..4f7b84d --- /dev/null +++ b/xS/.gitignore @@ -0,0 +1,2 @@ +/xS +/xS-replies.go diff --git a/xS/Makefile b/xS/Makefile new file mode 100644 index 0000000..55ad4d2 --- /dev/null +++ b/xS/Makefile @@ -0,0 +1,13 @@ +.POSIX: +.SUFFIXES: +AWK = env LC_ALL=C awk + +outputs = xS xS-replies.go +all: $(outputs) + +xS: xS.go xS-replies.go + go build -o $@ +xS-replies.go: xS-gen-replies.awk xS-replies + $(AWK) -f xS-gen-replies.awk xS-replies > $@ +clean: + rm -f $(outputs) diff --git a/xS/go.mod b/xS/go.mod new file mode 100644 index 0000000..9752c95 --- /dev/null +++ b/xS/go.mod @@ -0,0 +1,3 @@ +module janouch.name/xK/xS + +go 1.19 diff --git a/xS/xS-gen-replies.awk b/xS/xS-gen-replies.awk index fce7b50..94a338f 100755 --- a/xS/xS-gen-replies.awk +++ b/xS/xS-gen-replies.awk @@ -1,15 +1,19 @@ #!/usr/bin/awk -f /^[0-9]+ *(ERR|RPL)_[A-Z]+ *".*"$/ { - match($0, /".*"/); - ids[$1] = $2; - texts[$2] = substr($0, RSTART, RLENGTH); + match($0, /".*"/) + ids[$1] = $2 + texts[$2] = substr($0, RSTART, RLENGTH) } END { - print "package " ENVIRON["GOPACKAGE"] "\n\nconst (" + print "package main" + print "" + print "const (" for (i in ids) printf("\t%s = %s\n", ids[i], i) - print ")\n\nvar defaultReplies = map[int]string{" + print ")" + print "" + print "var defaultReplies = map[int]string{" for (i in ids) print "\t" ids[i] ": " texts[ids[i]] "," print "}" diff --git a/xS/main.go b/xS/xS.go similarity index 99% rename from xS/main.go rename to xS/xS.go index 21851f1..e6c3b3c 100644 --- a/xS/main.go +++ b/xS/xS.go @@ -460,8 +460,6 @@ func (fd *floodDetector) check() bool { // --- IRC protocol ------------------------------------------------------------ -//go:generate sh -c "LC_ALL=C awk -f xS-gen-replies.awk > xS-replies.go < xS-replies" - func ircToLower(c byte) byte { switch c { case '[': diff --git a/xS/main_test.go b/xS/xS_test.go similarity index 100% rename from xS/main_test.go rename to xS/xS_test.go