summaryrefslogtreecommitdiff
path: root/gophed
diff options
context:
space:
mode:
Diffstat (limited to 'gophed')
-rwxr-xr-xgophed37
1 files changed, 31 insertions, 6 deletions
diff --git a/gophed b/gophed
index e512d25..64d9b16 100755
--- a/gophed
+++ b/gophed
@@ -14,8 +14,8 @@ go () {
usage() {
printf '%s\n' \
'usage:' \
- ' visit a resource:' \
- " $0 <path> <server> <port>" \
+ ' visit a Gopher URL:' \
+ " $0 <URL>" \
' init links:' \
" $0 -i" \
' show this help:' \
@@ -25,10 +25,35 @@ usage() {
" !./g % LINE" \
'to visit the resource at LINE, or:' \
" !./d % LINE" \
- 'to download the resource at LINE\n'
+ 'to download the resource at LINE\n'\
+ " !./v URL" \
+ 'to visit a Gopher URL'
exit 0
}
+goto_url(){
+ URL="$(echo $1 | sed 's,gopher://,,g')"
+ hostport=$(echo "$URL" | cut -d "/" -f 1)
+ host="$(echo $hostport | cut -d ":" -f 1)"
+ port="$(echo $hostport | cut -s -d ":" -f 2)"
+ [ -z "$port" ] && port='70'
+ type=$(echo "$URL" | cut -s -d "/" -f 2)
+ [ -z "$type" ] && {
+ type='1'
+ sel="/"
+ go $sel $host $port
+ return
+ }
+ [ -n "${type#?}" ] && echo "Invalid Gopher URL" >&2 && exit 1
+ ## Check if type is a valid one
+ type="$(echo $type | sed -n '/^[0-9ITghis+]$/p')"
+ [ -z "${type}" ] && echo "Invalid Gopher URL" >&2 && exit 1
+ sel=/$(echo "$URL" | cut -s -d "/" -f 3-)
+ go $sel $host $port
+}
+
+
+
trap cleanup INT QUIT HUP KILL ABRT TERM
[ "$#" -lt 1 ] || [ "$1" = "-h" ] && usage
@@ -46,8 +71,8 @@ fi
if [ "$script_name" = "gophed" ] || [ "$script_name" = "v" ]; then
sel="$(printf '%s' "$1" | sed -r 's:/:+:g')"
TMPFILE="$(mktemp "/tmp/gophed_${2}_${sel}_$3.XXXXXXXXXXXXXXXXXXX")"
- go "$1" "$2" "$3" > "$TMPFILE"
- cat "$SHOW" - | ed -p "$PROMPT" "$TMPFILE"
+ goto_url "$1" > "$TMPFILE"
+ while read line; do echo $line; done | ed -p "$PROMPT" "$TMPFILE"
cleanup
exit 0
fi
@@ -62,7 +87,7 @@ if [ "$script_name" = "g" ] || [ "$script_name" = "d" ]; then
SEL="$(printf '%s' "$RESOURCE" | sed -r 's:/:+:g')"
TMPFILE="$(mktemp "/tmp/gophed_${HOST}_${SEL}_$PORT.XXXXXXXXXXXXXXXXXXX")"
go "$RESOURCE" "$HOST" "$PORT" > "$TMPFILE"
- cat "$SHOW" - | ed -p "$PROMPT" "$TMPFILE"
+ while read line; do echo $line; done | ed -p "$PROMPT" "$TMPFILE"
fi
if [ "$script_name" = "d" ]; then
DIR_RESOURCE="$(dirname "$RESOURCE")"