s4

changeset 163:87e679d3c993

Avoid using "tail -f"
author HIROSE Yuuji <yuuji@gentei.org>
date Tue, 19 Jan 2016 10:23:05 +0859
parents 1ec02d6f9bf3
children 0cc22764899e
files s4-funcs.sh
diffstat 1 files changed, 25 insertions(+), 27 deletions(-) [+]
line diff
     1.1 --- a/s4-funcs.sh	Thu Jan 14 22:45:57 2016 +0859
     1.2 +++ b/s4-funcs.sh	Tue Jan 19 10:23:05 2016 +0859
     1.3 @@ -293,22 +293,35 @@
     1.4    # ./args.rb -cmd ".timeout 3000" "$@"
     1.5    sqlite3 -cmd 'PRAGMA foreign_keys=ON' -cmd ".timeout 3000" "$@"
     1.6  }
     1.7 -querycat() {
     1.8 -  echo .once $sqo > $sqi
     1.9 -  cat $sqo &
    1.10 -  cat > $sqi
    1.11 +dbsetup() {
    1.12 +  [ -d $tmpdir ] || mkdir -m 1777 $tmpdir
    1.13 +  [ -d $dbdir ] || mkdir -m 1775 $dbdir
    1.14 +  sqi=$tmpdir/sqi.$$
    1.15 +  sqo=$tmpdir/sqo.$$
    1.16 +  mkfifo $sqi $sqo
    1.17 +  #tail -f $sqi | sq $db &	# "tail -f" is too heavy. DO NOT USE!!
    1.18 +  sq  $db < $sqi &
    1.19 +  sq3pid="`jobs -p` $!"
    1.20 +  exec 2>> $tmpdir/error.out
    1.21 +  exec 3>> $tmpdir/debug.out
    1.22 +  exec 5> $sqi	# Turning $sqi access through fd5 for continuous open state
    1.23 +  rm $sqi
    1.24 +}
    1.25 +cleanup() {
    1.26 +  echo .quit >&5
    1.27 +  kill $sq3pid
    1.28 +  kill $sq3pid
    1.29 +  rm -f $sqo $sqi
    1.30 +  rm -rf $tmpfiles
    1.31  }
    1.32  query() {
    1.33 -  cat<<EOF > $sqi
    1.34 +  cat<<EOF >&5
    1.35  .once $sqo
    1.36  $@
    1.37  EOF
    1.38    cat $sqo
    1.39  }
    1.40  
    1.41 -_m4() {
    1.42 -  
    1.43 -}
    1.44  ismember() {
    1.45    # $1=user, $2=group
    1.46  err ismem: "select user from grp_mem where gname=$(sqlquote $2) and user='$1';"
    1.47 @@ -1014,29 +1027,14 @@
    1.48  }
    1.49  
    1.50  # Do instant jobs here
    1.51 +dbsetup
    1.52 +trap cleanup INT HUP EXIT
    1.53 +# trap cleanup INT HUP
    1.54  
    1.55 -[ -d $tmpdir ] || mkdir -m 1777 $tmpdir
    1.56 -[ -d $dbdir ] || mkdir -m 1775 $dbdir
    1.57 -sqi=$tmpdir/sqi.$$
    1.58 -sqo=$tmpdir/sqo.$$
    1.59 -mkfifo $sqi $sqo
    1.60 -tail -f $sqi | sq $db &
    1.61 -sq3pid="`jobs -p` $!"
    1.62 -exec 2>> $tmpdir/error.out
    1.63 -exec 3>> $tmpdir/debug.out
    1.64 -cleanup() {
    1.65 -  echo .quit > $sqi
    1.66 -  kill $sq3pid
    1.67 -  kill $sq3pid
    1.68 -  rm -f $sqo $sqi
    1.69 -  rm -rf $tmpfiles
    1.70 -}
    1.71  err() {
    1.72    echo "$@" 1>&3
    1.73  }
    1.74  
    1.75 -trap cleanup INT HUP EXIT
    1.76 -# trap cleanup INT HUP
    1.77  cgiinit() {
    1.78    session=`date +%F-$$`
    1.79    tmpf=tmp/stream
    1.80 @@ -1263,7 +1261,7 @@
    1.81      fi
    1.82      par2table $formdir/grp.def
    1.83      query "END TRANSACTION;"
    1.84 -    # Remove orphant
    1.85 +    # Remove orphan
    1.86      : <<EOF
    1.87  	select a.id,b.val from (select * from blog where id in
    1.88  	 (select id from blog_s where key='owner'