# HG changeset patch # User HIROSE Yuuji # Date 1705704266 -32400 # Node ID 23e57a7f2bd848de94ec2ad491372e8de36fa6e5 # Parent ae88ca565d08f07345ed8a44b285445ee136b282 Preserve file name in article diff -r ae88ca565d08 -r 23e57a7f2bd8 s4-blog.sh --- a/s4-blog.sh Thu Dec 28 11:27:06 2023 +0900 +++ b/s4-blog.sh Sat Jan 20 07:44:26 2024 +0900 @@ -939,36 +939,47 @@ EOF fi query <<-EOF > $midfile # Using tempfile for quick db-unlock - SELECT a.rowid, a.id artid, a.author, hex(s.val) + SELECT a.rowid, a.id artid, a.author, + max(CASE key WHEN 'ctime' THEN hex(s.val) END) ctime, + max(CASE key WHEN 'text' THEN hex(s.val) END) text FROM article a JOIN article_s s ON a.id=s.id - WHERE blogid=(SELECT id FROM blog WHERE rowid=$rid) + WHERE blogid=(SELECT id FROM blog WHERE rowid=$rowid) + GROUP BY artid ORDER BY a.rowid; EOF - cat $midfile | while IFS='|' read rowid artid author text; do + cat $midfile | while IFS='|' read rowid artid author ctime text; do $isgrpowner || $isopenblogauthor \ || isfilereadable $user article_s $rowid || continue if [ "$by_uname" ]; then - dir=`printf $bd/%d/%s "$rid" "$author"` + dir=`printf $bd/%d/%s/%s "$rid" "$author" "$rowid"` else dir=`printf $bd/%d/%06d "$rid" "$rowid"` fi - txt=`printf %06d $rowid`.txt test -d "$dir" || mkdir -p "$dir" - echo "$author" > "$dir"/Author.txt - echo "$text" | unhexize > "$dir/$txt" i=0 query "SELECT m.rowid, m.val FROM article_m m \ WHERE id='$artid' AND m.key IN ('image', 'document', 'binary');" \ | while IFS='|' read mrowid filename; do i=$((i+1)) if [ "$by_uname" ]; then - outfile=`printf "%s/%06d-%s" "$dir" $rowid "$filename"` + outfile=`printf "%s/%s" "$dir" "$filename"` else - outfile=`printf "%s/%02d-%s" "$dir" $i "$filename"` + outfile=`printf "%s/%s" "$dir" "$filename"` fi query "SELECT quote(bin) FROM article_m WHERE rowid=$mrowid;" \ | unhexize > "$outfile" done + art=00-Article.txt + while [ -s "$dir"/$art ]; do + art=0$art + done + cat<<-EOF > "$dir/$art" + ----------------------------------------- + Author: $author + Date: `echo "$ctime" | unhexize` + ----------------------------------------- + `echo "$text" | unhexize` + EOF done if [ ! -d $bd/$rid ]; then contenttype; echo