summaryrefslogtreecommitdiffstats
path: root/wgetpaste
diff options
context:
space:
mode:
authorFlorian Pritz <bluewind@xinu.at>2014-04-13 21:43:44 +0200
committerFlorian Pritz <bluewind@xinu.at>2014-04-13 21:43:44 +0200
commit2469d49396a13aeef8e26d8f12162e3be91c445a (patch)
treee58eefae83393536fddb2b22c256a1ba29b0870a /wgetpaste
parentc11ef74879171dc631ceb227e53d6403719b5c38 (diff)
downloadbin-2469d49396a13aeef8e26d8f12162e3be91c445a.tar.gz
bin-2469d49396a13aeef8e26d8f12162e3be91c445a.tar.xz
remove a; using apack from atool now
Signed-off-by: Florian Pritz <bluewind@xinu.at>
Diffstat (limited to 'wgetpaste')
-rwxr-xr-xwgetpaste711
1 files changed, 0 insertions, 711 deletions
diff --git a/wgetpaste b/wgetpaste
deleted file mode 100755
index f39f012..0000000
--- a/wgetpaste
+++ /dev/null
@@ -1,711 +0,0 @@
-#!/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