fish-shell/share/functions/__fish_urlencode.fish
Aaron Gyes dfb4998778 Work around absent `string' in old fishies upgrading.
Improves experience during upgrades, accidentally running
an old fish with a new environment. No errors just from
printing a prompt. Fixes #3057.

Print helpful notice also when launching mismatched fish.

Autoloadable string.fish -- only create function if not builtin.
2016-06-26 16:25:41 -07:00

27 lines
561 B
Fish

function __fish_urlencode --description "URL-encode stdin"
if not type -q string
return 1
end
set -l join ''
set -l chars
# Set locale to C and IFS to "" in order to split a line into bytes.
while begin; set -lx LC_ALL C; set -lx IFS ''; read -az chars; end
printf '%s' $join
# chomp off a trailing newline
if test "$chars[-1]" = \n
set -e chars[-1]
set join '%0A%00'
else
set join '%00'
end
for c in $chars
if string match -q -r '[/._~A-Za-z0-9-]' $c
printf '%s' $c
else
printf '%%%02X' "'$c"
end
end
end
end