s4

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 diff
     1.1 --- a/s4-blog.sh	Thu Mar 14 10:28:42 2019 +0900
     1.2 +++ b/s4-blog.sh	Thu Mar 14 12:48:07 2019 +0900
     1.3 @@ -775,11 +775,18 @@
     1.4  }
     1.5  searchart() {
     1.6    kwd=`getpar kwd|nkf -wZ1`		# Convert Zenkaku-SPC to ASCII-SPC
     1.7 +  bloglist=`getpar bloglist|sed 's/[^0-9,]//g'`
     1.8    kwdgrp=""
     1.9    authcond=""
    1.10    if [ -z "$kwd" ]; then
    1.11      echo "検索語を指定してください" | html p; return
    1.12    fi
    1.13 +  if logstart "$searchlog"; then
    1.14 +    { echo "kwd=$kwd"
    1.15 +      test -n "$bloglist" && echo "bloglist=$bloglist"
    1.16 +    } >> $searchlog
    1.17 +    logend "$searchlog"
    1.18 +  fi
    1.19    if expr x"$kwd" : 'x#[1-9][0-9]*$' >/dev/null 1>&2; then
    1.20      # Like '#1234', assume as artID
    1.21      rowid=$((${kwd#\#} + 0))	# Force to be a number
    1.22 @@ -820,7 +827,13 @@
    1.23        if [ -n "$ctime" ]; then
    1.24  	kc=$kc${kc:+" AND "}"ctime > '${ctime}'"
    1.25        else
    1.26 -	kc=$kc${kc:+" AND "}"content LIKE '%$k%'"
    1.27 +	e=""
    1.28 +	case "$k" in
    1.29 +	  *${likeesc}*) e="" ;;		# Giving up char-escaping
    1.30 +	  *%*|*_*) k=`echo "$k"|sed "s/\([%_]\)/${likeesc}\1/g"`
    1.31 +	       e=" ESCAPE '$likeesc'" ;;
    1.32 +	esac
    1.33 +	kc=$kc${kc:+" AND "}"content LIKE '%$k%'$e"
    1.34        fi
    1.35      done
    1.36    fi
    1.37 @@ -844,7 +857,6 @@
    1.38        msg="(`linkhome $author` さんの書き込みから)"
    1.39      fi
    1.40    fi
    1.41 -  bloglist=`getpar bloglist|sed 's/[^0-9,]//g'`
    1.42    if [ -n "$bloglist" ]; then
    1.43      blogcond="AND bl.rid IN ($bloglist)"
    1.44    fi
     2.1 --- a/s4-funcs.sh	Thu Mar 14 10:28:42 2019 +0900
     2.2 +++ b/s4-funcs.sh	Thu Mar 14 12:48:07 2019 +0900
     2.3 @@ -33,12 +33,14 @@
     2.4  blogreadflagrowid=0
     2.5  blogcutoffflagrowid=-1
     2.6  querylog=$tmpdir/query.log
     2.7 +searchlog=$tmpdir/search.log
     2.8  
     2.9  tconfs=""
    2.10  imgcached=cache/img.`date +%Y/%m`
    2.11  conftbl=_tblconf
    2.12  nl="
    2.13  "
    2.14 +likeesc=`printf '\037'`		# ESCAPE char of LIKE operator
    2.15  iconcachekey="profimgcache_S"
    2.16  case "$HTTP_USER_AGENT" in
    2.17    *i[Pp]hone*|*[Aa]ndroid*)	touchpanel=1 ;;
    2.18 @@ -309,9 +311,22 @@
    2.19  
    2.20  EOF
    2.21  
    2.22 +logstart() {
    2.23 +  echo "`date '+%F %T'`:[${user:-NULL}] <<<" >> ${1:-$querylog}
    2.24 +}
    2.25 +logend() {
    2.26 +  echo ">>>" >> ${1:-$querylog}
    2.27 +}
    2.28  sq() {
    2.29    # ./args.rb -cmd ".timeout 3000" "$@"
    2.30 -  sqlite3 -cmd 'PRAGMA foreign_keys=ON' -cmd ".timeout 3000" "$@"
    2.31 +  logstart
    2.32 +  if [ -z "$1" ]; then
    2.33 +    tee -a $querylog|sqlite3 -cmd 'PRAGMA foreign_keys=ON' -cmd ".timeout 3000"
    2.34 +  else
    2.35 +    echo "$@" >> $querylog
    2.36 +    sqlite3 -cmd 'PRAGMA foreign_keys=ON' -cmd ".timeout 3000" "$@"
    2.37 +  fi
    2.38 +  logend
    2.39  }
    2.40  dbsetup() {
    2.41    [ -d $tmpdir ] || mkdir -m 1777 $tmpdir
    2.42 @@ -343,7 +358,7 @@
    2.43  # simple redirection for the sake of speed.
    2.44  query() {
    2.45    echo ".once $sqo" >&5
    2.46 -  echo "`date '+%F %T'`:[${user:-NULL}] <<<" >> $querylog
    2.47 +  logstart
    2.48    if [ -z "$1" ]; then
    2.49      tee -a $querylog
    2.50    else
    2.51 @@ -351,7 +366,7 @@
    2.52      echo "$@"
    2.53    fi  >&5
    2.54    cat $sqo
    2.55 -  echo '>>>' >> $querylog
    2.56 +  logend
    2.57  }
    2.58  _m4() {
    2.59    #_S4NAME_=f,f,f