changeset 510:2a70b6c7ffad

Add search-log and %-escaping
author HIROSE Yuuji <yuuji@gentei.org>
date Thu, 14 Mar 2019 12:48:07 +0900
parents d34b8f36501c
children f2dec8025291
files s4-blog.sh s4-funcs.sh
diffstat 2 files changed, 32 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- 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
--- 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

yatex.org