#!/bin/sh cd `dirname $0` . ./cgilib2-sh myname=`basename $0` query "CREATE TABLE IF NOT EXISTS blog( datetime UNIQUE, body, filename, filecontent);" case "$1" in # miniblog1.cgi catfile/《rowid》で起動するとその行の画像を出力 catfile/*) rowid=${1#catfile/} from="FROM blog WHERE rowid=$rowid" # FROM句以下を変数に echo -n "Content-type: " # 中味を調べて Content-type ヘッダ出力 query "SELECT hex(filecontent) $from" | unhexize \ | file --mime-type - | cut -d' ' -f2 fn=`query "SELECT filename $from;"| tr -d '\n'` # 改行あれば除去 echo "Content-Disposition: filename=\"$fn\"" # ファイル名と長さ出力 query "SELECT 'Content-Length: ' || length(filecontent) $from;" echo "" query "SELECT hex(filecontent) $from" | unhexize # 画像を書き出して終了 exit ;; esac htmlhead "一言日記" # ヘッダから h1 要素まで出力(cgilib2内) putform() { # HTTPヘッダから入力フォームHTMLまで出力 cat<<-EOF
EOF } addnew() { if [ -n "$CONTENT_LENGTH" ]; then # データが送信された場合の登録処理 now=`date '+%F %T'` # datetime は現在時刻から自動生成 query<<-EOF REPLACE INTO blog /* (日時, 一言, ファイル名, ファイル内容) を合成して挿入 */ SELECT '$now', max(CASE name WHEN 'hitokoto' THEN val END), max(CASE name WHEN 'attach' THEN filename END), max(CASE name WHEN 'attach' THEN val END) FROM cgipars WHERE tag='$_tag' GROUP BY tag; EOF fi } putblog() { # 既存のエントリをtableで出力 href="[12]:, | ," \ -e "s, | 3:\([0-9]*\):\(.*\)<,$href," .mode html .header ON SELECT '1:' || datetime '日時', '2:' || body '一言', CASE WHEN filename IS NOT NULL THEN '3:' || rowid || ":" || filename ELSE '' -- filenameが非NULLのときのみ出力 END '添付ファイル' FROM blog; EOF echo ' |