Mercurial > hgrepos > hgweb.cgi > 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 wrap: on
line diff
--- a/s4-funcs.sh Thu Jan 14 22:45:57 2016 +0859 +++ b/s4-funcs.sh Tue Jan 19 10:23:05 2016 +0859 @@ -293,22 +293,35 @@ # ./args.rb -cmd ".timeout 3000" "$@" sqlite3 -cmd 'PRAGMA foreign_keys=ON' -cmd ".timeout 3000" "$@" } -querycat() { - echo .once $sqo > $sqi - cat $sqo & - cat > $sqi +dbsetup() { + [ -d $tmpdir ] || mkdir -m 1777 $tmpdir + [ -d $dbdir ] || mkdir -m 1775 $dbdir + sqi=$tmpdir/sqi.$$ + sqo=$tmpdir/sqo.$$ + mkfifo $sqi $sqo + #tail -f $sqi | sq $db & # "tail -f" is too heavy. DO NOT USE!! + sq $db < $sqi & + sq3pid="`jobs -p` $!" + exec 2>> $tmpdir/error.out + exec 3>> $tmpdir/debug.out + exec 5> $sqi # Turning $sqi access through fd5 for continuous open state + rm $sqi +} +cleanup() { + echo .quit >&5 + kill $sq3pid + kill $sq3pid + rm -f $sqo $sqi + rm -rf $tmpfiles } query() { - cat<<EOF > $sqi + cat<<EOF >&5 .once $sqo $@ EOF cat $sqo } -_m4() { - -} ismember() { # $1=user, $2=group err ismem: "select user from grp_mem where gname=$(sqlquote $2) and user='$1';" @@ -1014,29 +1027,14 @@ } # Do instant jobs here +dbsetup +trap cleanup INT HUP EXIT +# trap cleanup INT HUP -[ -d $tmpdir ] || mkdir -m 1777 $tmpdir -[ -d $dbdir ] || mkdir -m 1775 $dbdir -sqi=$tmpdir/sqi.$$ -sqo=$tmpdir/sqo.$$ -mkfifo $sqi $sqo -tail -f $sqi | sq $db & -sq3pid="`jobs -p` $!" -exec 2>> $tmpdir/error.out -exec 3>> $tmpdir/debug.out -cleanup() { - echo .quit > $sqi - kill $sq3pid - kill $sq3pid - rm -f $sqo $sqi - rm -rf $tmpfiles -} err() { echo "$@" 1>&3 } -trap cleanup INT HUP EXIT -# trap cleanup INT HUP cgiinit() { session=`date +%F-$$` tmpf=tmp/stream @@ -1263,7 +1261,7 @@ fi par2table $formdir/grp.def query "END TRANSACTION;" - # Remove orphant + # Remove orphan : <<EOF select a.id,b.val from (select * from blog where id in (select id from blog_s where key='owner'