diff s4-funcs.sh @ 163:87e679d3c993

Avoid using "tail -f"
author HIROSE Yuuji <yuuji@gentei.org>
date Tue, 19 Jan 2016 10:23:05 +0859
parents 511406c0cbbe
children 0cc22764899e
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'

yatex.org