summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2024-10-23 11:35:30 -0300
committerEuAndreh <eu@euandre.org>2024-10-23 11:35:30 -0300
commit97e4a9b6cb942c04f96e6b0677619d6ce2b283d2 (patch)
treea5b9f87c6e6b8b5eec4a1b7d7a4429fb632a4e3f
parentsrc/htmlesc: Migrate over from dotfiles (diff)
downloadeut-97e4a9b6cb942c04f96e6b0677619d6ce2b283d2.tar.gz
eut-97e4a9b6cb942c04f96e6b0677619d6ce2b283d2.tar.xz
Add AWK version of uri(1) Perl utility
-rw-r--r--deps.mk1
-rwxr-xr-xsrc/uri17
2 files changed, 18 insertions, 0 deletions
diff --git a/deps.mk b/deps.mk
index a4831c0..c1eb55c 100644
--- a/deps.mk
+++ b/deps.mk
@@ -16,6 +16,7 @@ sources.sh = \
src/tempname \
src/timestamp \
src/untill \
+ src/uri \
src/uuid \
src/varlist \
diff --git a/src/uri b/src/uri
new file mode 100755
index 0000000..39f1409
--- /dev/null
+++ b/src/uri
@@ -0,0 +1,17 @@
+#!/bin/sh
+set -eu
+
+awk '
+BEGIN {
+ for (i = 0; i < 256; i++) {
+ hex[sprintf("%c", i)] = sprintf("%%%02X", i)
+ }
+}
+
+{
+ for (i = 1; i < length($0); i++) {
+ c = substr($0, i, 1)
+ printf "%s", (c ~ /^[-._a-zA-Z0-9]$/ ? c : hex[c])
+ }
+}
+'