aboutsummaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorTom Ryder <tom@sanctum.geek.nz>2016-12-03 02:02:16 +1300
committerTom Ryder <tom@sanctum.geek.nz>2016-12-03 02:02:16 +1300
commita03e011345413a9b3749deb9da895bb4e8ec9974 (patch)
tree98a96bbddff100bd896af48c9fa2215d5e0ee742 /bin
parentRemove setterm(1) call (diff)
downloaddotfiles-a03e011345413a9b3749deb9da895bb4e8ec9974.tar.gz
dotfiles-a03e011345413a9b3749deb9da895bb4e8ec9974.zip
Rewrite unf(1df) in awk
Also update manual page references to it, and improve it by making it ignore body content
Diffstat (limited to 'bin')
-rw-r--r--bin/unf.awk34
-rw-r--r--bin/unf.sed17
2 files changed, 34 insertions, 17 deletions
diff --git a/bin/unf.awk b/bin/unf.awk
new file mode 100644
index 00000000..22a10aa8
--- /dev/null
+++ b/bin/unf.awk
@@ -0,0 +1,34 @@
+# Unfold header lines in an internet message, don't touch the body
+
+# Function to write and empty the buffer
+function wrbuf() {
+ if (length(buf))
+ print buf
+ buf = ""
+}
+
+# Flag to stop processing once we hit the first blank line
+!length {
+ wrbuf()
+ body = 1
+}
+body {
+ print
+ next
+}
+
+# Write any buffer contents once we hit a line not starting with a space
+/^[^ \t]/ {
+ wrbuf()
+}
+
+# Append the current line to the buffer
+{
+ sub(/^[ \t]+/, " ")
+ buf = buf $0
+}
+
+# Write the buffer out again when we hit the end
+END {
+ wrbuf()
+}
diff --git a/bin/unf.sed b/bin/unf.sed
deleted file mode 100644
index 23270fc6..00000000
--- a/bin/unf.sed
+++ /dev/null
@@ -1,17 +0,0 @@
-# Unfold lines with leading spaces (e.g. RFC 822 headers)
-/^[ \t]/!{
- 1!{
- x
- p
- x
- }
- h
-}
-/^[ \t]/{
- H
- x
- s/[\r\n]//g
- x
-}
-$!d
-x