#!/bin/bash
-# Copyright (C) 2009 Andy Spencer
+# Copyright (C) 2009-2011 Andy Spencer
#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
+# This program is free software: you can redistribute it and/or modify it under
+# the terms of the GNU Affero General Public License as published by the Free
+# Software Foundation, either version 3 of the License, or (at your option) any
+# later version.
#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
+# details.
# Remove url codings from stdin
function get_modeline {
modeline=$(
- echo "$QUERY_STRING" |
+ echo "$QUERY_STRING" |
sed -e 's/%\([0-9A-F][0-9A-F]\)/\\\\\x\1/g; s/[,&]/ /g' |
xargs echo -e
)
# Extract an uploaded file from standard input
# $2 is the name of the input to extract
function cut_file {
- bnd="${CONTENT_TYPE/*boundary\=/}"
- awk -v "want=$1" -v "bnd=$bnd" '
- BEGIN { RS="\r\n" }
+ bnd="${CONTENT_TYPE/*boundary\=/}"
+ awk -v "want=$1" -v "bnd=$bnd" '
+ BEGIN { RS="\r\n" }
- # reset based on boundaries
- $0 == "--"bnd"" { st=1; next; }
- $0 == "--"bnd"--" { st=0; next; }
- $0 == "--"bnd"--\r" { st=0; next; }
+ # reset based on boundaries
+ $0 == "--"bnd"" { st=1; next; }
+ $0 == "--"bnd"--" { st=0; next; }
+ $0 == "--"bnd"--\r" { st=0; next; }
# search for wanted file
- st == 1 && $0 ~ "^Content-Disposition:.* name=\""want"\"" { st=2; next; }
- st == 1 && $0 == "" { st=9; next; }
+ st == 1 && $0 ~ "^Content-Disposition:.* name=\""want"\"" { st=2; next; }
+ st == 1 && $0 == "" { st=9; next; }
# wait for newline, then start printing
- st == 2 && $0 == "" { st=3; next; }
- st == 3 { print $0 }
- ' | head -c $((128*1024)) # Limit size to 128K
+ st == 2 && $0 == "" { st=3; next; }
+ st == 3 { print $0 }
+ ' | head -c $((128*1024)) # Limit size to 128K
}
# Print out a generic header
header text/plain
case "$1" in
head)
- for i in $(ls -t db/*); do
+ for i in $(ls -t db/*); do
basename $i
basename $i | sed 's/./-/g'
sed '1,/^$/d; /^\s*$/d' $i | sed -n '1,5s/\(.\{0,60\}\).*/\1/p'
esac
}
-# Format a file for viewing
+# Format a file for viewing
function do_print {
if [ -f "./$1" ]; then
input="$1"
# Create a temp file with the provided modeline
output="$(mktemp)"
tmp="$(mktemp)"
- sed "1a$(get_modeline)" "$input" > "$tmp"
+ sed "\$a$(get_modeline)" "$input" > "$tmp"
# - I have some plugins in ~/.vim
# - Run ex in screen to trick it into thinking that it
'+sil! set iconstring= ruf= stl= tal=' \
"+sil! set titlestring=$1\ -\ vpaste.net" \
'+sil! set noml' \
- '+sil! 2d|'$trim \
+ '+sil! $d|'$trim \
'+sil! %s/\r//g' \
'+sil! TOhtml' \
"+sav! $output" \
"$tmp"
header text/html
- cat "$output"
+ cat "$output"
rm "$tmp" "$output"
else
header text/plain