25 lines
481 B
Awk
25 lines
481 B
Awk
BEGIN {
|
|
for (i = 0; i <= 255; i++)
|
|
ord[sprintf("%c", i)] = i
|
|
}
|
|
|
|
# Encode string with application/x-www-form-urlencoded escapes.
|
|
function escape(str, c, len, res) {
|
|
len = length(str)
|
|
res = ""
|
|
for (i = 1; i <= len; i++) {
|
|
c = substr(str, i, 1);
|
|
if (c ~ /[0-9A-Za-z]/)
|
|
#if (c ~ /[-._*0-9A-Za-z]/)
|
|
res = res c
|
|
#else if (c == " ")
|
|
# res = res "+"
|
|
else
|
|
res = res "%" sprintf("%02X", ord[c])
|
|
}
|
|
return res
|
|
}
|
|
|
|
# Escape every line of input.
|
|
{ print escape($0) }
|