# HG changeset patch # User HIROSE Yuuji # Date 1552535287 -32400 # Node ID 2a70b6c7ffad91c21348a7343be4e0d3a90bc312 # Parent d34b8f36501c705fd5b2cf4eb107ba2b4fc6631d Add search-log and %-escaping diff -r d34b8f36501c -r 2a70b6c7ffad s4-blog.sh --- a/s4-blog.sh Thu Mar 14 10:28:42 2019 +0900 +++ b/s4-blog.sh Thu Mar 14 12:48:07 2019 +0900 @@ -775,11 +775,18 @@ } searchart() { kwd=`getpar kwd|nkf -wZ1` # Convert Zenkaku-SPC to ASCII-SPC + bloglist=`getpar bloglist|sed 's/[^0-9,]//g'` kwdgrp="" authcond="" if [ -z "$kwd" ]; then echo "検索語を指定してください" | html p; return fi + if logstart "$searchlog"; then + { echo "kwd=$kwd" + test -n "$bloglist" && echo "bloglist=$bloglist" + } >> $searchlog + logend "$searchlog" + fi if expr x"$kwd" : 'x#[1-9][0-9]*$' >/dev/null 1>&2; then # Like '#1234', assume as artID rowid=$((${kwd#\#} + 0)) # Force to be a number @@ -820,7 +827,13 @@ if [ -n "$ctime" ]; then kc=$kc${kc:+" AND "}"ctime > '${ctime}'" else - kc=$kc${kc:+" AND "}"content LIKE '%$k%'" + e="" + case "$k" in + *${likeesc}*) e="" ;; # Giving up char-escaping + *%*|*_*) k=`echo "$k"|sed "s/\([%_]\)/${likeesc}\1/g"` + e=" ESCAPE '$likeesc'" ;; + esac + kc=$kc${kc:+" AND "}"content LIKE '%$k%'$e" fi done fi @@ -844,7 +857,6 @@ msg="(`linkhome $author` さんの書き込みから)" fi fi - bloglist=`getpar bloglist|sed 's/[^0-9,]//g'` if [ -n "$bloglist" ]; then blogcond="AND bl.rid IN ($bloglist)" fi diff -r d34b8f36501c -r 2a70b6c7ffad s4-funcs.sh --- a/s4-funcs.sh Thu Mar 14 10:28:42 2019 +0900 +++ b/s4-funcs.sh Thu Mar 14 12:48:07 2019 +0900 @@ -33,12 +33,14 @@ blogreadflagrowid=0 blogcutoffflagrowid=-1 querylog=$tmpdir/query.log +searchlog=$tmpdir/search.log tconfs="" imgcached=cache/img.`date +%Y/%m` conftbl=_tblconf nl=" " +likeesc=`printf '\037'` # ESCAPE char of LIKE operator iconcachekey="profimgcache_S" case "$HTTP_USER_AGENT" in *i[Pp]hone*|*[Aa]ndroid*) touchpanel=1 ;; @@ -309,9 +311,22 @@ EOF +logstart() { + echo "`date '+%F %T'`:[${user:-NULL}] <<<" >> ${1:-$querylog} +} +logend() { + echo ">>>" >> ${1:-$querylog} +} sq() { # ./args.rb -cmd ".timeout 3000" "$@" - sqlite3 -cmd 'PRAGMA foreign_keys=ON' -cmd ".timeout 3000" "$@" + logstart + if [ -z "$1" ]; then + tee -a $querylog|sqlite3 -cmd 'PRAGMA foreign_keys=ON' -cmd ".timeout 3000" + else + echo "$@" >> $querylog + sqlite3 -cmd 'PRAGMA foreign_keys=ON' -cmd ".timeout 3000" "$@" + fi + logend } dbsetup() { [ -d $tmpdir ] || mkdir -m 1777 $tmpdir @@ -343,7 +358,7 @@ # simple redirection for the sake of speed. query() { echo ".once $sqo" >&5 - echo "`date '+%F %T'`:[${user:-NULL}] <<<" >> $querylog + logstart if [ -z "$1" ]; then tee -a $querylog else @@ -351,7 +366,7 @@ echo "$@" fi >&5 cat $sqo - echo '>>>' >> $querylog + logend } _m4() { #_S4NAME_=f,f,f