diff options
author | Florian Pritz <f-p@gmx.at> | 2008-11-02 23:52:22 +0100 |
---|---|---|
committer | Florian Pritz <f-p@gmx.at> | 2008-11-02 23:52:22 +0100 |
commit | e443ba89d07541516d7bd80f78cb0e16e535e870 (patch) | |
tree | d725affed1d77cf96d8f06c3cabd7103112c41a3 /wgetpaste | |
parent | c43273a5984ddd658d2b2e40892120e39ba99218 (diff) | |
download | bin-e443ba89d07541516d7bd80f78cb0e16e535e870.tar.gz bin-e443ba89d07541516d7bd80f78cb0e16e535e870.tar.xz |
added wgetpaste and copy of extract.sh
Diffstat (limited to 'wgetpaste')
-rwxr-xr-x | wgetpaste | 711 |
1 files changed, 711 insertions, 0 deletions
diff --git a/wgetpaste b/wgetpaste new file mode 100755 index 0000000..f39f012 --- /dev/null +++ b/wgetpaste @@ -0,0 +1,711 @@ +#!/usr/bin/env bash +# A Script that automates pasting to a number of pastebin services +# relying only on bash, sed, coreutils (mktemp/sort/tr/wc/whoami/tee) and wget +# Copyright (c) 2007 Bo Ørsted Andresen <bo.andresen@zlin.dk> +# Distributed as-is. With no warranties. + +VERSION="2.11" + +# don't inherit LANGUAGE from the env +unset LANGUAGE + +# escape and new line characters +E=$'\e' +N=$'\n' + +### services +SERVICES="ca rafb osl" +# ca +ENGINE_ca=ca +URL_ca="http://pastebin.ca/" +SIZE_ca="1024000 1%MB" +# rafb +ENGINE_rafb=rafb +URL_rafb="http://rafb.net/paste/ paste.php" +SIZE_rafb="800000 800%kB" +LINES_rafb=10000 +TOOFAST_rafb="http://rafb.net/p/toofast.html You must wait at least 10 seconds between each paste! Try again in 10 seconds." +TOOBIG_rafb="http://rafb.net/p/toobig.html The paste is too big. Try another service or paste smaller chunks of data." +EXPIRATION_INFO_rafb="Pastes on rafb: http://rafb.net/paste/ expire after 24 hours.$N" +# osl +ENGINE_osl=osl +URL_osl="http://pastebin.osuosl.org/ pastebin.php" +# tinyurl +ENGINE_tinyurl=tinyurl +URL_tinyurl="http://tinyurl.com/ create.php" + +### engines +# ca +LANGUAGES_ca="Plain%Text Asterisk%Configuration C C++ PHP Perl Java VB C# Ruby Python Pascal \ +mIRC PL/I XML SQL Scheme ActionScript Ada Apache%Configuration Assembly%(NASM) ASP Bash CSS \ +Delphi HTML%4.0%Strict JavaScript LISP Lua Microprocessor%ASM Objective%C VB.NET" +LANGUAGE_COUNT_ca=0 +EXPIRATIONS_ca="Never 5%minutes 10%minutes 15%minutes 30%minutes 45%minutes 1%hour 2%hours \ +4%hours 8%hours 12%hours 1%day 2%days 3%days 1%week 2%weeks 3%weeks 1%month 2%months \ +3%months 4%months 5%months 6%months 1%year" +POST_ca="s=Submit+Post name description type expiry % content" +REGEX_URL_ca='s|^.*content="[0-9]*;\(http://[^/]*/[0-9]*\)".*$|\1|p' +REGEX_RAW_ca='s|^\(http://[^/]*/\)\([0-9]*\)$|\1raw/\2|' +# rafb +LANGUAGES_rafb="C C89 C99 C++ C# Java Pascal Perl PHP PL/I Python Ruby SQL VB Plain%Text" +POST_rafb="% nick desc lang % cvt_tabs text" +REGEX_RAW_rafb='s|html\?$|txt|' +# osl +LANGUAGES_osl="Plain%Text ActionScript Ada Apache%Log%File AppleScript Assembly%(NASM) \ +ASP Bash C C%for%Macs CAD%DCL CAD%Lisp C++ C# ColdFusion CSS D Delphi Diff DOS Eiffel Fortran \ +FreeBasic Game%Maker HTML%4.0%Strict INI%file Java Javascript Lisp Lua MatLab Microprocessor%ASM \ +MySQL NullSoft%Installer Objective%C OCaml Openoffice.org%BASIC Oracle%8 Pascal Perl PHP Python \ +QBasic Robots.txt Ruby Scheme Smarty SQL TCL VB VB.NET VisualFoxPro XML" +LANGUAGE_VALUES_osl="text actionscript ada apache applescript asm asp bash c c_mac caddcl \ +cadlisp cpp csharp cfm css d delphi diff dos eiffel fortran freebasic gml html4strict ini java \ +javascript lisp lua matlab mpasm mysql nsis objc ocaml oobas oracle8 pascal perl php python \ +qbasic robots ruby scheme smarty sql tcl vb vbnet visualfoxpro xml" +EXPIRATIONS_osl="Never 1%day 1%month" +EXPIRATION_VALUES_osl="f d m" +POST_osl="paste=Send poster % format expiry % code2" +REGEX_RAW_osl='s|^\(http://[^/]*/\)\([0-9]*\)$|\1pastebin.php?dl=\2|' +# tinyurl +POST_tinyurl="submit=Make+TinyURL! % % % % % url" +REGEX_URL_tinyurl='s|^<input type=hidden name=tinyurl value="\?\([^"]*\)"\?>$|\1|p' + +### errors +die() { + echo "$@" >&2 + exit 1 +} + +requiredarg() { + [[ -z $2 ]] && die "$0: option $1 requires an argument" + ((args++)) +} + +notreadable() { + die "The input source: \"$1\" is not readable. Please specify a readable input source." +} + +noxclip() { + cat <<EOF >&2 +Could not find xclip on your system. In order to use --x$1 you must +either emerge x11-misc/xclip or define x_$1() globally in /etc/wgetpaste +or per user in ~/.wgetpaste to use another program (such as e.g. xcut or +klipper) to $2 your clipboard. + +EOF + exit 1 +} + +### conversions + +# escape % (used for escaping), & (used as separator in POST data), + (used as space in POST data) and space +escape() { + sed -e 's|%|%25|g' -e 's|&|%26|g' -e 's|+|%2b|g' -e 's| |+|g' <<< "$*" || die "sed failed" +} + +# if possible convert URL to raw +converttoraw() { + local regex + regex=REGEX_RAW_$ENGINE + if [[ -n ${!regex} ]]; then + RAWURL=$(sed -e "${!regex}" <<< "$URL") + [[ -n $RAWURL ]] && return 0 + echo "Convertion to raw url failed." >&2 + else + echo "Raw download of pastes is not supported by $(getrecipient)." >&2 + fi + return 1 +} + +### verification +verifyservice() { + for s in $SERVICES; do + [[ $s == $* ]] && return 0 + done + echo "\"$*\" is not a supported service.$N" >&2 + showservices >&2 + exit 1 +} + +verifylanguage() { + local i j l lang count v values + lang=LANGUAGES_$ENGINE + count=LANGUAGE_COUNT_$ENGINE + values=LANGUAGE_VALUES_$ENGINE + if [[ -n ${!lang} ]]; then + ((i=0)) + for l in ${!lang}; do + if [[ $LANGUAGE == ${l//\%/ } ]]; then + if [[ -n ${!count} ]]; then + ((LANGUAGE=i+1)) + elif [[ -n ${!values} ]]; then + ((j=0)) + for v in ${!values}; do + [[ i -eq j ]] && LANGUAGE=${v//\%/ } && break + ((j++)) + done + fi + return 0 + fi + ((i++)) + done + else + [[ $LANGUAGESET = 0 ]] || return 0 + fi + echo "\"$LANGUAGE\" is not a supported language for $(getrecipient).$N" >&2 + showlanguages >&2 + exit 1 +} + +verifyexpiration() { + local i j e expiration count v values + expiration=EXPIRATIONS_$ENGINE + count=EXPIRATION_COUNT_$ENGINE + values=EXPIRATION_VALUES_$ENGINE + if [[ -n ${!expiration} ]]; then + ((i=0)) + for e in ${!expiration}; do + if [[ ${EXPIRATION} == ${e//\%/ } ]]; then + if [[ -n ${!count} ]]; then + ((EXPIRATION=i+1)) + elif [[ -n {!values} ]]; then + ((j=0)) + for v in ${!values}; do + [[ i -eq j ]] && EXPIRATION=${v//\%/ } && break + ((j++)) + done + fi + return 0 + fi + ((i++)) + done + else + [[ $EXPIRATIONSET = 0 ]] || return 0 + fi + echo "\"$EXPIRATION\" is not a supported expiration option for $(getrecipient).$N" >&2 + showexpirations >&2 + exit 1 +} + +# verify that the pastebin service did not return a known error url. otherwise print a helpful error message +verifyurl() { + dieifknown() { + [[ -n ${!1%% *} && ${!1%% *} == $URL ]] && die "${!1#* }" + } + local t + for t in ${!TOO*}; do + [[ $t == TOO*_$SERVICE ]] && dieifknown "$t" + done +} + +# print a warning if failure is predictable due to the mere size of the paste. note that this is only a warning +# printed. it does not abort. +warnings() { + warn() { + if [[ -n $2 && $1 -gt $2 ]]; then + echo "Pasting > ${3//\%/ } often tend to fail with $SERVICE. Use --verbose or --debug to see the" + echo "error output from wget if it fails. Alternatively use another pastebin service." + fi + } + local size lines + size=SIZE_$SERVICE + warn "$SIZE" "${!size% *}" "${!size#* }" + lines=LINES_$SERVICE + warn "$LINES" "${!lines}" "${!lines} lines" +} + +### input +getfilenames() { + for f in "$@"; do + [[ -f $f ]] || die "$0: $f No such file found." + SOURCE="files" + FILES[${#FILES[*]}]="$f" + done +} + +x_cut() { + if [[ -x $(type -P xclip) ]]; then + xclip -o || die "xclip failed." + else + noxclip cut "read from" + fi +} + +### output +usage() { + cat <<EOF +Usage: $0 [options] [file[s]] + +Options: + -l, --language LANG set language (defaults to "$DEFAULT_LANGUAGE") + -d, --description DESCRIPTION set description (defaults to "stdin" or filename) + -n, --nick NICK set nick (defaults to your username)) + -s, --service SERVICE set service to use (defaults to "$DEFAULT_SERVICE") + -e, --expiration EXPIRATION set when it should expire (defaults to "$DEFAULT_EXPIRATION") + + -S, --list-services list supported pastebin services + -L, --list-languages list languages supported by the specified service + -E, --list-expiration list expiration setting supported by the specified service + + -u, --tinyurl URL convert input url to tinyurl + + -c, --command COMMAND paste COMMAND and the output of COMMAND + -i, --info append the output of \`$INFO_COMMAND\` + -I, --info-only paste the output of \`$INFO_COMMAND\` only + -x, --xcut read input from clipboard (requires x11-misc/xclip) + -X, --xpaste write resulting url to clipboard (requires x11-misc/xclip) + + -r, --raw show url for the raw paste (no syntax highlighting or html) + -t, --tee use tee to show what is being pasted + -v, --verbose show wget stderr output if no url is received + --debug be *very* verbose (implies -v) + + -h, --help show this help + -g, --ignore-configs ignore /etc/wgetpaste, ~/.wgetpaste etc. + --version show version information + +Defaults (DEFAULT_{NICK,SERVICE,LANGUAGE,EXPIRATION}[_\${SERVICE}]) can be overridden +globally in /etc/wgetpaste or /etc/wgetpaste.d/*.bash or per user in any of ~/.wgetpaste +or ~/.wgetpaste.d/*.bash. +EOF +} + +showservices() { + echo "Services supported: (case sensitive):" + local max s IND INDV engine url d + max=0 + for s in $SERVICES; do + [[ ${#s} -gt $max ]] && max=${#s} + done + ((IND=6+max)) + if [[ $VERBOSE ]]; then + max=0 + for s in $SERVICES; do + s=URL_$s + s=${!s% *} + [[ ${#s} -gt $max ]] && max=${#s} + done + ((INDV=3+max+IND)) + fi + for s in $SERVICES; do + [[ $s = $DEFAULT_SERVICE ]] && d="*" || d=" " + [[ $VERBOSE ]] && engine=ENGINE_$s && engine="$E[${INDV}G- ${!engine}" + url=URL_$s + url=${!url% *} + echo " $d$s $E[${IND}G- $url$engine" + done | sort +} + +showlanguages() { + echo "Languages supported by $(getrecipient) (case sensitive):" + local l lang d + lang=LANGUAGES_$ENGINE + [[ -z ${!lang} ]] && echo "$N\"$ENGINE\" has no support for setting language." >&2 + for l in ${!lang}; do + [[ ${l//\%/ } = $DEFAULT_LANGUAGE ]] && d="*" || d=" " + echo " $d${l//\%/ }" + done | sort +} + +showexpirations() { + echo "Expiration options supported by $(getrecipient) (case sensitive):" + local e expiration info d + expiration=EXPIRATIONS_$ENGINE + info=EXPIRATION_INFO_$SERVICE + [[ -z ${!expiration} ]] && echo "$N${!info}\"$ENGINE\" has no support for setting expiration." >&2 + for e in ${!expiration}; do + [[ ${e//\%/ } = $DEFAULT_EXPIRATION ]] && d="*" || d=" " + echo " $d${e//\%/ }" + done +} + +showurl() { + echo "Your ${2}paste can be seen here: $1" + [[ $XPASTE ]] && x_paste "$1" +} + +x_paste() { + if [[ -x $(type -P xclip) ]]; then + xclip -loops 10 &>/dev/null <<< "$*" || die "xclip failed." + else + noxclip paste "write to" + fi +} + +### Posting helper functions + +# get the url to post to +getrecipient() { + local urls target serv + for s in $SERVICES tinyurl; do + if [[ $s == $SERVICE ]]; then + urls=URL_$SERVICE + if [[ RAW == $1 ]]; then + [[ ${!urls} = ${!urls#* } ]] || target=${!urls#* } + else + serv="$SERVICE: " + fi + echo "${serv}${!urls% *}${target}" + return 0 + fi + done + die "Failed to get url for \"$SERVICE\"." +} + +# generate POST data +postdata() { + local post nr extra f + post=POST_$ENGINE + nr=${!post//[^ ]} + [[ 6 = ${#nr} ]] || die "\"${SERVICE}\" is not supported by ${FUNCNAME}()." + extra=${!post%% *} + [[ '%' = $extra ]] || echo -n "$extra&" + e() { + post="$1" + shift + while [[ -n $1 ]]; do + f=${post%% *} + [[ '%' != $f ]] && echo -n "$f=${!1}" && [[ $# -gt 1 ]] && echo -n "&" + shift + post=${post#$f } + done + } + e "${!post#$extra }" NICK DESCRIPTION LANGUAGE EXPIRATION CVT_TABS INPUT +} + +# get url from response from server +geturl() { + local regex + regex=REGEX_URL_$ENGINE + if [[ -n ${!regex} ]]; then + [[ needstdout = $1 ]] && return 0 + sed -n -e "${!regex}" <<< "$*" + else + [[ needstdout = $1 ]] && return 1 + sed -n -e 's|^.*Location: \(http://[^ ]*\).*$|\1|p' <<< "$*" + fi +} + +### read cli options + +# separate groups of short options. replace --foo=bar with --foo bar +while [[ -n $1 ]]; do + case "$1" in + -- ) + for arg in "$@"; do + ARGS[${#ARGS[*]}]="$arg" + done + break + ;; + --debug ) + set -x + DEBUG=0 + ;; + --*=* ) + ARGS[${#ARGS[*]}]="${1%%=*}" + ARGS[${#ARGS[*]}]="${1#*=}" + ;; + --* ) + ARGS[${#ARGS[*]}]="$1" + ;; + -* ) + for shortarg in $(sed -e 's|.| -&|g' <<< "${1#-}"); do + ARGS[${#ARGS[*]}]="$shortarg" + done + ;; + * ) + ARGS[${#ARGS[*]}]="$1" + esac + shift +done + +# set the separated options as input options. +set -- "${ARGS[@]}" + +while [[ -n $1 ]]; do + ((args=1)) + case "$1" in + -- ) + shift && getfilenames "$@" && break + ;; + -c | --command ) + requiredarg "$@" + SOURCE="command" + COMMANDS[${#COMMANDS[*]}]="$2" + ;; + -d | --description ) + requiredarg "$@" + DESCRIPTION="$2" + ;; + -e | --expiration ) + requiredarg "$@" + EXPIRATIONSET=0 + EXPIRATION="$2" + ;; + -E | --list-expiration ) + LISTEXPIRATION=0 + ;; + -h | --help ) + USAGE=0 + ;; + -g | --ignore-configs ) + IGNORECONFIGS=0 + ;; + -i | --info ) + INFO=0 + ;; + -I | --info-only ) + SOURCE=info + ;; + -l | --language ) + requiredarg "$@" + LANGUAGESET=0 + LANGUAGE="$2" + ;; + -L | --list-languages ) + LISTLANGUAGES=0 + ;; + -n | --nick ) + requiredarg "$@" + NICK=$(escape "$2") + ;; + -r | --raw ) + RAW=0 + ;; + -s | --service ) + requiredarg "$@" + SERVICESET="$2" + ;; + -S | --list-services ) + SHOWSERVICES=0 + ;; + -t | --tee ) + TEE=0 + ;; + -u | --tinyurl ) + SERVICE=tinyurl + ;; + -v | --verbose ) + VERBOSE=0 + ;; + --version ) + echo "$0, version $VERSION" && exit 0 + ;; + -x | --xcut ) + SOURCE=xcut + ;; + -X | --xpaste ) + XPASTE=0 + ;; + -* ) + die "$0: unrecognized option \`$1'" + ;; + *) + getfilenames "$1" + ;; + esac + shift $args +done + +### defaults +[[ $IGNORECONFIGS ]] || for f in {/etc/,~/.}wgetpaste{.d/*.bash,}; do + if [[ -f $f ]]; then + . "$f" || die "Failed to source $f" + fi +done +[[ $SERVICESET ]] && verifyservice "$SERVICESET" && SERVICE=$(escape "$SERVICESET") +DEFAULT_NICK=${DEFAULT_NICK:-$(whoami)} || die "whoami failed" +DEFAULT_SERVICE=${DEFAULT_SERVICE:-rafb} +DEFAULT_LANGUAGE=${DEFAULT_LANGUAGE:-Plain Text} +DEFAULT_EXPIRATION=${DEFAULT_EXPIRATION:-1 month} +SERVICE=${SERVICE:-${DEFAULT_SERVICE}} +ENGINE=ENGINE_$SERVICE +ENGINE="${!ENGINE}" +default="DEFAULT_NICK_$SERVICE" && [[ -n ${!default} ]] && DEFAULT_NICK=${!default} +default="DEFAULT_LANGUAGE_$SERVICE" && [[ -n ${!default} ]] && DEFAULT_LANGUAGE=${!default} +default="DEFAULT_EXPIRATION_$SERVICE" && [[ -n ${!default} ]] && DEFAULT_EXPIRATION=${!default} +NICK=${NICK:-$(escape "${DEFAULT_NICK}")} +[[ -z $SOURCE ]] && SOURCE="stdin" && FILES[${#FILES[*]}]="/dev/stdin" +CVT_TABS=No + +INFO_COMMAND=${INFO_COMMAND:-"emerge --info"} +INFO_ARGS=${INFO_ARGS:-"--ignore-default-opts"} + +### everything below this should be independent of which service is being used... + +# show listings if requested +[[ $USAGE ]] && usage && exit 0 +[[ $SHOWSERVICES ]] && showservices && exit 0 +[[ $LISTLANGUAGES ]] && showlanguages && exit 0 +[[ $LISTEXPIRATION ]] && showexpirations && exit 0 + +# language and expiration need to be verified before they are escaped but after service and defaults +# have been selected +LANGUAGE=${LANGUAGE:-${DEFAULT_LANGUAGE}} +verifylanguage +LANGUAGE=$(escape "$LANGUAGE") +EXPIRATION=${EXPIRATION:-${DEFAULT_EXPIRATION}} +verifyexpiration +EXPIRATION=$(escape "$EXPIRATION") + +# set prompt +if [[ 0 -eq $UID ]]; then + PS1="#" +else + PS1=$ +fi + +# set default description +if [[ -z $DESCRIPTION ]]; then + case "$SOURCE" in + info ) + DESCRIPTION="$PS1 $INFO_COMMAND;" + ;; + command ) + DESCRIPTION="$PS1" + for c in "${COMMANDS[@]}"; do + DESCRIPTION="$DESCRIPTION $c;" + done + ;; + files ) + DESCRIPTION="${FILES[@]}" + ;; + * ) + DESCRIPTION="$SOURCE" + ;; + esac +fi + +# create tmpfile for use with tee +if [[ $TEE ]]; then + TMPF=$(mktemp /tmp/wgetpaste.XXXXXX) + [[ -f $TMPF ]] || die "Could not create a temporary file for use with tee." +fi + +# read input +case "$SOURCE" in + command ) + for c in "${COMMANDS[@]}"; do + if [[ $TEE ]]; then + echo "$PS1 $c$N$(bash -c "$c" 2>&1)$N" | tee -a "$TMPF" + else + INPUT="$INPUT$PS1 $c$N$(bash -c "$c" 2>&1)$N$N" + fi + done + ;; + info ) + if [[ $TEE ]]; then + echo "$PS1 $INFO_COMMAND$N$($INFO_COMMAND $INFO_ARGS 2>&1)" | tee "$TMPF" + else + INPUT="$PS1 $INFO_COMMAND$N$($INFO_COMMAND $INFO_ARGS 2>&1)" + fi + ;; + xcut ) + if [[ $TEE ]]; then + x_cut | tee "$TMPF" + else + INPUT="$(x_cut)" + fi + ;; + files | stdin ) + if [[ ${#FILES[@]} -gt 1 ]]; then + for f in "${FILES[@]}"; do + [[ -r $f ]] || notreadable "$f" + if [[ $TEE ]]; then + echo "$PS1 cat $f$N$(<"$f")$N" | tee -a "$TMPF" + else + INPUT="$INPUT$PS1 cat $f$N$(<"$f")$N$N" + fi + done + else + [[ -r $FILES ]] || notreadable "$FILES" + if [[ $TEE ]]; then + tee "$TMPF" < "$FILES" + else + INPUT=$(<"$FILES") + fi + fi + ;; +esac +NOINPUT="No input read. Nothing to paste. Aborting." +if [[ $TEE ]]; then + [[ 0 -eq $(wc -c < "$TMPF") ]] && die "$NOINPUT" +else + [[ -z $INPUT ]] && die "$NOINPUT" +fi + +# append info if needed +if [[ $INFO ]]; then + DESCRIPTION="$DESCRIPTION $PS1 $INFO_COMMAND;" + if [[ $TEE ]]; then + echo "$N$PS1 $INFO_COMMAND$N$($INFO_COMMAND $INFO_ARGS 2>&1)" | tee -a "$TMPF" + else + INPUT="$INPUT$N$PS1 $INFO_COMMAND$N$($INFO_COMMAND $INFO_ARGS 2>&1)" + fi +fi + +# now that tee has done its job read data into INPUT +[[ $TEE ]] && INPUT=$(<"$TMPF") && echo + +# escape DESCRIPTION and INPUT +DESCRIPTION=$(escape "$DESCRIPTION") +INPUT=$(escape "$INPUT") + +# print friendly warnings if max sizes have been specified for the pastebin service and the size exceeds that +SIZE=$(wc -c <<< "$INPUT") +LINES=$(wc -l <<< "$INPUT") +warnings >&2 + +# create temp file (wget is much more reliable reading large input via --post-file rather than --post-data) +[[ -f $TMPF ]] || TMPF=$(mktemp /tmp/wgetpaste.XXXXXX) +if [[ -f $TMPF ]]; then + postdata > "$TMPF" || die "Failed to write to temporary file: \"$TMPF\"." + WGETARGS="--post-file=$TMPF" +else + # fall back to using --post-data if the temporary file could not be created + # TABs and new lines need to be escaped for wget to interpret it as one string + WGETARGS="--post-data=$(postdata | sed -e 's|$|%0a|g' -e 's|\t|%09|g' | tr -d '\n')" +fi + +# set recipient +RECIPIENT=$(getrecipient RAW) + +# paste it +WGETARGS="--tries=5 --timeout=60 $WGETARGS" +if geturl needstdout || [[ $DEBUG || ! -w /dev/null ]]; then + OUTPUT=$(LC_ALL=C wget -O - $WGETARGS $RECIPIENT 2>&1) +else + OUTPUT=$(LC_ALL=C wget -O /dev/null $WGETARGS $RECIPIENT 2>&1) +fi + +# clean temporary file if it was created +if [[ -f $TMPF ]]; then + if [[ $DEBUG ]]; then + echo "Left temporary file: \"$TMPF\" alone for debugging purposes." + else + rm "$TMPF" || echo "Failed to remove temporary file: \"$TMPF\"." >&2 + fi +fi + +# get the url +URL=$(geturl "$OUTPUT") + +# verify that the pastebin service did not return a known error url such as toofast.html from rafb +verifyurl + +# handle the case when there was no location returned +if [[ -z $URL ]]; then + if [[ $DEBUG || $VERBOSE ]]; then + die "Apparently nothing was received. Perhaps the connection failed.$N$OUTPUT" + else + echo "Apparently nothing was received. Perhaps the connection failed. Enable --verbose or" >&2 + die "--debug to get the output from wget that can help diagnose it correctly." + fi +fi + +# converttoraw() sets RAWURL upon success. +if [[ $RAW ]] && converttoraw; then + showurl "$RAWURL" "raw " +else + showurl "$URL" +fi + +exit 0 |