#!/bin/sh # $Id: surfraw.in,v 1.3 2001/10/25 00:04:43 proff Exp $ # Surfraw -- Shell Users' Revolutionary Front Against the World wide web # # (c) 2000-2001 Julian Assange, placed into the public domain # (c) 2000 Melbourne Institute for Advanced Study, placed into the public domain # # see the file COPYING for further copyright details # # @configure_input@ surfraw_version=@VERSION@ surfraw_api_version=1.0 w3_argv0=`basename "$0"` # defaults w3_config_hook () { return 1 } w3_config () { prefix=@prefix@ def SURFRAW_global_conf @sysconfdir@/surfraw.conf def SURFRAW_conf $HOME/.surfraw.conf test -e "$SURFRAW_global_conf" || err "couldn't source SURFRAW_global_conf ($SURFRAW_global_conf)" . "$SURFRAW_global_conf" w3_config_hook test -e "$SURFRAW_conf" && . "$SURFRAW_conf" } warn () { echo "$w3_argv0 WARNING: ""$@" } err () { echo "$w3_argv0 ERROR: ""$@" exit 1 } yesno () { eval value=\$${1} case "$value" in # "yes", "true", "on", or "1" [Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|[Oo][Nn]|1) return 0 ;; # "no", "false", "off", or "0" [Nn][Oo]|[Ff][Aa][Ll][Ss][Ee]|[Oo][Ff][Ff]|0) return 1 ;; *) err "\"$1\" is not set correctly. Should be (yes|on|1|no|off|0). Is \"$value\"" ;; esac } ifyes () { yesno "$@" && return 0 return 1 } ifno () { yesno "$@" && return 1 return 0 } ok () { yesno "$@" } null () { test -z "$@" && return 0 return 1 } def () { eval value=\$${1} test -z "$value" || return 0 eval ${1}="$2" return 0 } defyn () { eval value=\$${1} test -z "$value" && eval ${1}="$2" yesno "$1" } setopt () { eval value=\$${1} eval ${1}="$2" } setoptyn () { eval value=\$${1} eval ${1}="$2" yesno "$1" } w3_find_prog () { prog="$1" old_ifs="${IFS:-\" \"}" IFS=":" path_ifs="$PATH" for dir in $path_ifs; do test -z "$dir" && dir=. if test -e "$dir/$prog"; then echo "$dir/$prog" IFS="$old_ifs" return 0 fi done IFS="$old_ifs" return 1 } w3_url_escape () { echo "$@" | sed 's/%/%25/g; s/+/%2B/g; # s/ /+/g; s/ /%20/g; s/"/%22/g; s/#/%23/g; s/\$/%24/g; s/&/%26/g; s/,/%2C/g; s/\./%2E/g; sx/x%2Fx; s/:/%3A/g; s/;/%3B/g; s//%3E/g; s/?/%3F/g; s/@/%40/g; s/\[/%5B/g; s/\\/%74/g; s/\]/%5D/g; s/\^/%5E/g; s/{/%7B/g; s/|/%7C/g; s/}/%7D/g; s/~/%7E/g; '"s/'/%60/g" } w3_url_of_arg () { if ok SURFRAW_quote_args; then args=\""$@"\" else args="$@" fi if ok SURFRAW_escape_url_args; then w3_url_escape "$args" else echo "$@" fi } true () { return 0 } false () { return 1 } w3_global_usage () { # style: keep sorted #-------------------------------------79 cols---------------------------------- cat < Copyright (c) 2001 Australian Institute for Collaborative Research Copyright (c) 2000 Melbourne Institute for Advanced Study EOF } w3_usage_hook () { echo "Usage: $w3_argv0 [options] [args...]" w3_global_usage } w3_bad_option () { err "bad option \"${opt}\". Try ${w3_argv0} -help for usage information" } w3_parse_option_hook () { return 1 } w3_parse_option () { opt="$1" case "$opt" in -*=*) optarg=`echo "$opt" | sed 's/[-_a-zA-Z0-9]*=//'` esac w3_parse_option_hook "$opt" "$optarg" && return 0 case "$opt" in -browser=*) setopt SURFRAW_browser $optarg ;; -elvi) cat "$SURFRAW_elvi_list"; exit 0 ;; -escape-url-args=*) setoptyn SURFRAW_escape_url_args $optarg ;; -g | -graphical) setoptyn SURFRAW_graphical yes ;; -p0rn=*) setoptyn SURFRAW_p0rn $optarg ;; -help | --help) do_help=1 ;; -quiet=*) setoptyn SURFRAW_quiet $optarg ;; -q | -quote) setoptyn SURFRAW_quote_args yes ;; -new) setoptyn SURFRAW_new_window yes ;; -new=*) setoptyn SURFRAW_new_window $optarg ;; -t | -text) setoptyn SURFRAW_graphical no ;; -version) echo $surfraw_version; exit 0 ;; --) return 1 ;; -*) w3_bad_option "$opt" ;; *) return 1 ;; esac return 0 } w3_parse_args () { w3_args= SURFRAW_browser=none SURFRAW_browser_args=none do_help=0 for arg in "$@"; do w3_parse_option "$arg" || w3_args="$w3_args $arg" done if test $SURFRAW_browser = none; then if ok SURFRAW_graphical; then SURFRAW_browser=$SURFRAW_graphical_browser SURFRAW_browser_args=$SURFRAW_graphical_browser_args else SURFRAW_browser=$SURFRAW_text_browser SURFRAW_browser_args=$SURFRAW_text_browser_args fi fi if ok do_help; then w3_usage_hook exit 0 fi } w3_browse_url () { if ok SURFRAW_new_screen && ! test -z "$STY" && ! ok SURFRAW_graphical; then screen=yes else screen=no fi if ok screen; then if test $SURFRAW_browser_args = "none"; then $SURFRAW_screen $SURFRAW_browser "$@" else $SURFRAW_screen $SURFRAW_browser $SURFRAW_browser_args "$@" fi else if ok SURFRAW_graphical_remote && ok SURFRAW_graphical; then if ok SURFRAW_new_window; then newwin=", new-window" else newwin="" fi if test $SURFRAW_browser_args = "none"; then $SURFRAW_browser -remote "openURL($*$newwin)" 2>/dev/null || $SURFRAW_browser "$@" & else $SURFRAW_browser -remote "openURL($*$newwin)" 2>/dev/null || $SURFRAW_browser $SURFRAW_browser_args "$@" & fi else if test $SURFRAW_browser_args = "none"; then $SURFRAW_browser "$@" else $SURFRAW_browser $SURFRAW_browser_args "$@" fi fi fi # ifno SURFRAW_quiet && echo "Thank you for supporting the Shell Users' Revolutionary Front Rage Against the Web" } case "$w3_argv0" in surfraw) w3_config w3_parse_option -elvi ;; esac