s4

changeset 187:7dc0918ce321

Add PIPE to handled signals
author HIROSE Yuuji <yuuji@gentei.org>
date Tue, 29 Mar 2016 10:21:55 +0900
parents fb05a0504425
children 952e0a160efd
files s4-funcs.sh
diffstat 1 files changed, 78 insertions(+), 75 deletions(-) [+]
line diff
     1.1 --- a/s4-funcs.sh	Sat Mar 05 11:27:58 2016 +0900
     1.2 +++ b/s4-funcs.sh	Tue Mar 29 10:21:55 2016 +0900
     1.3 @@ -323,7 +323,10 @@
     1.4    fi >&5
     1.5    cat $sqo
     1.6  }
     1.7 -
     1.8 +_m4() {
     1.9 +  #_S4NAME_=f,f,f
    1.10 +  m4 ${_S4NAME_:+"-D_S4NAME_=${_S4NAME_}"} "$@"
    1.11 +}
    1.12  ismember() {
    1.13    # $1=user, $2=group
    1.14  err ismem: "select user from grp_mem where gname=$(sqlquote $2) and user='$1';"
    1.15 @@ -920,7 +923,7 @@
    1.16    
    1.17  }
    1.18  putfooter() {
    1.19 -  m4 -D_TITLE_="${TITLE:-$myname}" $layout/footer.m4.html
    1.20 +  _m4 -D_TITLE_="${TITLE:-$myname}" $layout/footer.m4.html
    1.21  }
    1.22  getcookie() (
    1.23    for kv in `echo $HTTP_COOKIE|sed 's/[;, ]/ /g'`; do
    1.24 @@ -938,7 +941,7 @@
    1.25    # $SMAIL_TO <- Recipient value of To: header
    1.26    rcpt=`echo $1`		# strip newlines
    1.27    subj=`echo $2|nkf -jM|tr -d '\n'`
    1.28 -  (m4 -D_RCPT_="${SMAIL_TO:-$rcpt}" -D_SUBJ_="\`$subj'" -D_FROM_=$admin $msgdir/mail-header.m4
    1.29 +  (_m4 -D_RCPT_="${SMAIL_TO:-$rcpt}" -D_SUBJ_="\`$subj'" -D_FROM_=$admin $msgdir/mail-header.m4
    1.30     cat $3 | nkf -jd ) | sendmail -f $admin $rcpt
    1.31  }
    1.32  setviastring() {
    1.33 @@ -974,7 +977,7 @@
    1.34    user=$1
    1.35    if ! checkdomain $user; then
    1.36      contenttype; echo
    1.37 -    m4 -D_TITLE_='Invalid email' $layout/title-only.html
    1.38 +    _m4 -D_TITLE_='Invalid email' $layout/title-only.html
    1.39      echo "ユーザ名($user)には正しいメイルアドレスが必要です。" | html p
    1.40      putfooter
    1.41      exit 0
    1.42 @@ -984,7 +987,7 @@
    1.43    encpswd=`echo $newpswd|mypwhash`
    1.44    dbsetbyid user $user pswd "$encpswd"
    1.45    # Avoid $user substitution with m4, because $url comes from user input.
    1.46 -  m4 -D_PSWD_="$newpswd" -D_URL_="$url" -D_ADMIN_="$admin" \
    1.47 +  _m4 -D_PSWD_="$newpswd" -D_URL_="$url" -D_ADMIN_="$admin" \
    1.48       $msgdir/mail-newaccount.m4 \
    1.49        | sed "s/_USER_/$user/g" \
    1.50        | smail $user "New Account"
    1.51 @@ -1017,7 +1020,7 @@
    1.52  }
    1.53  showlogin() {
    1.54    args=`echo $myargs|tr ' ' '+'`
    1.55 -  m4 -D_SYSNAME_="Welcome" -D_MYNAME_="$myname${args+?}$args" \
    1.56 +  _m4 -D_SYSNAME_="Welcome" -D_MYNAME_="$myname${args+?}$args" \
    1.57       $layout/login.m4.html
    1.58    exit 0
    1.59  }
    1.60 @@ -1026,7 +1029,7 @@
    1.61    st=$?
    1.62    if [ $st != 0 ]; then
    1.63      contenttype; echo
    1.64 -    m4 -D_USER_="$user" -D_URL_="$url" -D_ADMIN_="$admin" \
    1.65 +    _m4 -D_USER_="$user" -D_URL_="$url" -D_ADMIN_="$admin" \
    1.66         $msgdir/login-fail-$st.m4.html
    1.67      showlogin			# and EXIT
    1.68    fi
    1.69 @@ -1034,7 +1037,7 @@
    1.70  
    1.71  # Do instant jobs here
    1.72  dbsetup
    1.73 -trap cleanup INT HUP EXIT TERM
    1.74 +trap cleanup INT HUP EXIT TERM PIPE
    1.75  # trap cleanup INT HUP
    1.76  
    1.77  err() {
    1.78 @@ -1159,12 +1162,12 @@
    1.79    gecos=`gecos`
    1.80    name=$user"${gecos:+($gecos)}"
    1.81    regist="$urlbase?reg+$iss"
    1.82 -  m4 -D_URL_="$urlbase" \
    1.83 -     -D_USER_="$name" \
    1.84 -     -D_EMAIL_="$1" \
    1.85 -     -D_REGIST_="$regist" \
    1.86 -     -D_ADMIN_="$admin" \
    1.87 -     $msgdir/mail-invite.m4 \
    1.88 +  _m4 -D_URL_="$urlbase" \
    1.89 +      -D_USER_="$name" \
    1.90 +      -D_EMAIL_="$1" \
    1.91 +      -D_REGIST_="$regist" \
    1.92 +      -D_ADMIN_="$admin" \
    1.93 +      $msgdir/mail-invite.m4 \
    1.94        | smail $1 "BBSへの御招待"
    1.95    return 0
    1.96  )
    1.97 @@ -1203,13 +1206,13 @@
    1.98    if [ -n "$addr" ]; then
    1.99      susp="<h2>招待済みで加入待ちのアドレス</h2><pre>$addr</pre>"
   1.100    fi
   1.101 -  m4 -D_TITLE_="招待" -D_REPORT_="\`$repo'" -D_ACTION_="?invite" \
   1.102 -     -D_BODYCLASS_="default" -D_SUSPENDED_="$susp" \
   1.103 -     $layout/html.m4.html $layout/invite.m4.html
   1.104 +  _m4 -D_TITLE_="招待" -D_REPORT_="\`$repo'" -D_ACTION_="?invite" \
   1.105 +      -D_BODYCLASS_="default" -D_SUSPENDED_="$susp" \
   1.106 +      $layout/html.m4.html $layout/invite.m4.html
   1.107  }
   1.108  regist() {
   1.109    # $1=session-id-for-invitation
   1.110 -  m4 -D_TITLE_="Invitation" $layout/html.m4.html
   1.111 +  _m4 -D_TITLE_="Invitation" $layout/html.m4.html
   1.112    if [ -z "$1" ]; then
   1.113      echo "bye bye" | html p
   1.114      reutrn
   1.115 @@ -1232,8 +1235,8 @@
   1.116    echo "このアドレスに初期パスワードを送信しました。"	|html p
   1.117    echo "新着メイルを確認してログインしてください。"	|html p
   1.118    addsession $1			# for removal after 1 minute
   1.119 -  m4 -D_SYSNAME_="Initial Login" -D_MYNAME_="$myname?userconf" \
   1.120 -     $layout/login.m4.html
   1.121 +  _m4 -D_SYSNAME_="Initial Login" -D_MYNAME_="$myname?userconf" \
   1.122 +      $layout/login.m4.html
   1.123    return
   1.124  }
   1.125  newgrpchk() {
   1.126 @@ -1297,20 +1300,20 @@
   1.127    GF_STAGE="grpconf"
   1.128    GF_STAGE=groupupdate
   1.129    DT_VIEW=grp dumptable html grp 'gname gecos:DESC mtime:TIME' 'order by b.TIME desc' \
   1.130 -  |m4 -D_TITLE_="グループ作成" \
   1.131 -     -D_FORM_="$note`genform $formdir/grp.def`" \
   1.132 -     -D_DUMPTABLE_="syscmd(cat)" \
   1.133 -     $layout/html.m4.html $layout/form+dump.m4.html
   1.134 +  |_m4 -D_TITLE_="グループ作成" \
   1.135 +       -D_FORM_="$note`genform $formdir/grp.def`" \
   1.136 +       -D_DUMPTABLE_="syscmd(cat)" \
   1.137 +       $layout/html.m4.html $layout/form+dump.m4.html
   1.138  }
   1.139  userconf() {
   1.140    [ -n "`getpar rowid`" ] && par2table $formdir/user.def
   1.141 -  m4 -D_BODYCLASS_=userconf -D_TITLE_="ユーザ情報編集" $layout/html.m4.html
   1.142 +  _m4 -D_BODYCLASS_=userconf -D_TITLE_="ユーザ情報編集" $layout/html.m4.html
   1.143    GF_ACTION="?home" edittable "$formdir/user.def" "user" "$user"
   1.144  }
   1.145  groupconf() {
   1.146    # $1=rowid in grp (2015-07-21 changed from gname)
   1.147    [ -n "`getpar rowid`" ] && par2table $formdir/grp.def
   1.148 -  m4 -D_BODYCLASS_=groupconf -D_TITLE_="グループ情報編集" $layout/html.m4.html
   1.149 +  _m4 -D_BODYCLASS_=groupconf -D_TITLE_="グループ情報編集" $layout/html.m4.html
   1.150    #rowid=`query "select rowid from grp where gname='$1';"`
   1.151    rowid=${1%%[!A-Z0-9a-z_]*}
   1.152  err gcon \$1=$1 rowid=$rowid
   1.153 @@ -1318,18 +1321,18 @@
   1.154    GF_STAGE="groupupdate" edittable "$formdir/grp.def" "grp" "$rowid"
   1.155  }
   1.156  mems() {
   1.157 -  m4 -D_TITLE_="参加者一覧" -D_BODYCLASS_=listmember $layout/html.m4.html
   1.158 +  _m4 -D_TITLE_="参加者一覧" -D_BODYCLASS_=listmember $layout/html.m4.html
   1.159    kwd=`getpar kwd`
   1.160    listmember $kwd
   1.161  }
   1.162  grps() {
   1.163 -  m4 -D_TITLE_="グループ一覧" -D_BODYCLASS_=listgroup $layout/html.m4.html
   1.164 +  _m4 -D_TITLE_="グループ一覧" -D_BODYCLASS_=listgroup $layout/html.m4.html
   1.165    kwd=`getpar kwd`
   1.166    listgroup $kwd \
   1.167 -      | m4 -D_DUMPTABLE_="syscmd(cat)" \
   1.168 -	   -D_TITLE_="グループ関連操作" \
   1.169 -	   -D_FORM_="<a href=\"?groupman\">新規グループ作成</a>" \
   1.170 -	   $layout/form+dump.m4.html
   1.171 +      | _m4 -D_DUMPTABLE_="syscmd(cat)" \
   1.172 +	    -D_TITLE_="グループ関連操作" \
   1.173 +	    -D_FORM_="<a href=\"?groupman\">新規グループ作成</a>" \
   1.174 +	    $layout/form+dump.m4.html
   1.175  }
   1.176  grp() {	# $1=group-rowid
   1.177    gpg=`getpar grp`
   1.178 @@ -1343,7 +1346,7 @@
   1.179      [ -n "$jg" -a -n "$grp" ] &&
   1.180  	joingrp "$grp" "$user" "$jg" "`getpar email`"
   1.181    fi
   1.182 -  echo "グループ $grp"|m4 -D_TITLE_="syscmd(\`cat')" $layout/html.m4.html
   1.183 +  echo "グループ $grp"|_m4 -D_TITLE_="syscmd(\`cat')" $layout/html.m4.html
   1.184    showgroup "$grid"
   1.185  }
   1.186  listnewblogsql() { # $1=user
   1.187 @@ -1437,13 +1440,13 @@
   1.188  		val='$uname';"`
   1.189    listblog $uname			> $bf
   1.190    listgroupbytable $formdir/grp.def $cond \
   1.191 -      | m4 -D_BODYCLASS_=home -D_TITLE_="spaste(\`$tf')" \
   1.192 -	   -D_PROFILE_="spaste(\`$pf')$conflink" \
   1.193 -	   -D_PROFIMG_="spaste(\`$imf')" \
   1.194 -	   -D_BLOGS_="spaste(\`$bf')" \
   1.195 -	   -D_NBLOG_="$nblog" \
   1.196 -	   -D_GROUPS_="syscmd(\`cat')" \
   1.197 -	   $layout/html.m4.html $layout/home.m4.html
   1.198 +      | _m4 -D_BODYCLASS_=home -D_TITLE_="spaste(\`$tf')" \
   1.199 +	    -D_PROFILE_="spaste(\`$pf')$conflink" \
   1.200 +	    -D_PROFIMG_="spaste(\`$imf')" \
   1.201 +	    -D_BLOGS_="spaste(\`$bf')" \
   1.202 +	    -D_NBLOG_="$nblog" \
   1.203 +	    -D_GROUPS_="syscmd(\`cat')" \
   1.204 +	    $layout/html.m4.html $layout/home.m4.html
   1.205    
   1.206    if [ x"$user" = x"$uname" ]; then
   1.207      # Display NEWS
   1.208 @@ -1485,7 +1488,7 @@
   1.209    err commission: "$@"
   1.210    gname=`getgroupbyid $1`
   1.211    echo "グループ $gname 管理者委任" \
   1.212 -      | m4 -D_TITLE_="syscmd(\`cat')" $layout/html.m4.html
   1.213 +      | _m4 -D_TITLE_="syscmd(\`cat')" $layout/html.m4.html
   1.214    if [ -n "$2" ]; then
   1.215      grp_reg_adm "$@"
   1.216    else
   1.217 @@ -1641,7 +1644,7 @@
   1.218      files=`getvalbyid $tbl profimg $id $dir`
   1.219      # Pick up only first icon
   1.220      echo "<div class=\"iconlist xy$thumbxy\"><p class=\"tag _$tag\">$tag</p>" \
   1.221 -	| m4 $tagconv
   1.222 +	| _m4 $tagconv
   1.223      if [ -n "$files" ]; then
   1.224        icon=`echo "$files"|head -1`
   1.225        iconhref $dir/$icon "$hrb+$lnk" "$gecos"
   1.226 @@ -1680,10 +1683,10 @@
   1.227      tf=$tmpd/title.$$
   1.228      echo "グループ $grp" > $tf
   1.229      showgroupsub $formdir/grp.def "$1" | \
   1.230 -	m4 -D_TITLE_="spaste(\`$tf')" \
   1.231 -	   -D_FORM_="syscmd(\`cat')" \
   1.232 -	   -D_DUMPTABLE_="" \
   1.233 -	   $layout/form+dump.m4.html
   1.234 +	_m4 -D_TITLE_="spaste(\`$tf')" \
   1.235 +	    -D_FORM_="syscmd(\`cat')" \
   1.236 +	    -D_DUMPTABLE_="" \
   1.237 +	    $layout/form+dump.m4.html
   1.238    else				# if $grp is removed at par2table
   1.239      listgroup
   1.240    fi
   1.241 @@ -1785,7 +1788,7 @@
   1.242      echo "加入者のみに許可された操作です。" | html p; return
   1.243    fi
   1.244    echo "グループ $grp 個別選択操作" \
   1.245 -      | m4 -D_TITLE_="syscmd(\`cat')" $layout/html.m4.html
   1.246 +      | _m4 -D_TITLE_="syscmd(\`cat')" $layout/html.m4.html
   1.247  
   1.248    isowner=""
   1.249    isgrpowner "$user" "$grp" && isowner="yes"
   1.250 @@ -1902,10 +1905,10 @@
   1.251    cgi_form grpaction<<EOF \
   1.252        	| sed  -e "s|^\(<TR><TD>\)k\([0-9]*\),\([^<]*\)|\1$ba\2$b2\3$b3|" \
   1.253  	       -e "s|^\(<TR><TD>\)\([0-9]*\),\([^<]*\)|\1$b1\2$b2\3$b3|" \
   1.254 -	| m4 -D_TITLE_="spaste(\`$tf')" \
   1.255 -	     -D_SUBTITLE_="チェック後操作ボタン" \
   1.256 -	     -D_FORM_="syscmd(cat)" -D_DUMPTABLE_="" \
   1.257 -	     $layout/form+dump.m4.html
   1.258 +	| _m4 -D_TITLE_="spaste(\`$tf')" \
   1.259 +	      -D_SUBTITLE_="チェック後操作ボタン" \
   1.260 +	      -D_FORM_="syscmd(cat)" -D_DUMPTABLE_="" \
   1.261 +	      $layout/form+dump.m4.html
   1.262  <div class="fold">
   1.263  `cgi_radio rm send id="sendmsg"`<label
   1.264   for="sendmsg">下でチェックした人にメッセージを送信する</label>
   1.265 @@ -1930,11 +1933,11 @@
   1.266    owner=`getvalbyid blog owner $rowid`
   1.267    title=`getvalbyid blog title $rowid`
   1.268    GF_ACTION="?blog" edittable $formdir/blog.def blog $rowid \
   1.269 -      | m4 -D_TITLE_="修正" \
   1.270 -	   -D_SUBTITLE_="[$title]@$owner" -D_DIARY_="" \
   1.271 -	   -D_BLOGS_="" -D_DUMPTABLE_="" \
   1.272 -	   -D_FORM_="syscmd(\`cat')" \
   1.273 -	   $layout/html.m4.html $layout/form+dump.m4.html
   1.274 +      | _m4 -D_TITLE_="修正" \
   1.275 +	    -D_SUBTITLE_="[$title]@$owner" -D_DIARY_="" \
   1.276 +	    -D_BLOGS_="" -D_DUMPTABLE_="" \
   1.277 +	    -D_FORM_="syscmd(\`cat')" \
   1.278 +	    $layout/html.m4.html $layout/form+dump.m4.html
   1.279  }
   1.280  editart() {	# $1=article-rowid $2=blogrowid
   1.281    rowid=${1%%[!A-Z0-9a-z_]*}
   1.282 @@ -1960,11 +1963,11 @@
   1.283  	   > $tmpout
   1.284    rm -f /tmp/editart.out
   1.285    # Cannot use pipelining to m4 with genform() because of stdin stack
   1.286 -  m4 -D_TITLE_="コメントの修正" -D_DIARY_="" \
   1.287 -	   -D_FORM_="syscmd(cat $tmpout)" \
   1.288 -	   -D_SUBTITLE_="`gecos $owner`の「$title」" \
   1.289 -	   -D_BLOGS_= -D_DUMPTABLE_= \
   1.290 -	   $layout/html.m4.html $layout/form+dump.m4.html
   1.291 +  _m4 -D_TITLE_="コメントの修正" -D_DIARY_="" \
   1.292 +      -D_FORM_="syscmd(cat $tmpout)" \
   1.293 +      -D_SUBTITLE_="`gecos $owner`の「$title」" \
   1.294 +      -D_BLOGS_= -D_DUMPTABLE_= \
   1.295 +      $layout/html.m4.html $layout/form+dump.m4.html
   1.296  }
   1.297  send2mem() {
   1.298    rowid=`getpar grp`
   1.299 @@ -2003,7 +2006,7 @@
   1.300    t_usr=`session=$2 getpar user`
   1.301    t_grp=`session=$2 getpar group`
   1.302    err joingrpadmit: t_usr=$t_usr, t_grp=$t_grp
   1.303 -  m4 -D_TITLE_="joingrp" $layout/html.m4.html
   1.304 +  _m4 -D_TITLE_="joingrp" $layout/html.m4.html
   1.305    if [ -z "$t_usr" -o -z "$t_grp" ]; then
   1.306      echo "無効な加入依頼です。" | html p
   1.307      echo "有効期限が切れたか、
   1.308 @@ -2743,27 +2746,27 @@
   1.309    query "select rowid from $tbl order by rowid desc;" \
   1.310        | while read rowid; do
   1.311  	  viewtable $1 $tbl $rowid
   1.312 -	done | m4 -D_TITLE_="$tbl" \
   1.313 -		  -D_FORM_="`genform $1`" \
   1.314 -		  -D_DUMPTABLE_="syscmd(cat)" \
   1.315 -		  $layout/html.m4.html $layout/form+dump.m4.html
   1.316 +	done | _m4 -D_TITLE_="$tbl" \
   1.317 +		   -D_FORM_="`genform $1`" \
   1.318 +		   -D_DUMPTABLE_="syscmd(cat)" \
   1.319 +		   $layout/html.m4.html $layout/form+dump.m4.html
   1.320  }
   1.321  default_viewtext() {	# $1=def-file
   1.322    ### DT_VIEW="edittable+$tbl" dumptable html $tbl "$cols" \
   1.323    default_storedb "$@"
   1.324    DT_VIEW="viewtable+$tbl" dumptable html $tbl "name memo file" \
   1.325 -      | m4 -D_TITLE_="$tbl" \
   1.326 -	   -D_FORM_="`genform $1`" \
   1.327 -	   -D_DUMPTABLE_="syscmd(cat)" \
   1.328 -	   $layout/html.m4.html $layout/form+dump.m4.html
   1.329 +      | _m4 -D_TITLE_="$tbl" \
   1.330 +	    -D_FORM_="`genform $1`" \
   1.331 +	    -D_DUMPTABLE_="syscmd(cat)" \
   1.332 +	    $layout/html.m4.html $layout/form+dump.m4.html
   1.333  }
   1.334  default_smail() {
   1.335    default_storedb "$@"
   1.336    if [ $? -eq 2 ]; then
   1.337 -    m4 -D_TITLE_="入力" \
   1.338 -       -D_FORM_="`genform $1`" \
   1.339 -       -D_DUMPTABLE_="" \
   1.340 -       $layout/html.m4.html $layout/form+dump.m4.html
   1.341 +    _m4 -D_TITLE_="入力" \
   1.342 +	-D_FORM_="`genform $1`" \
   1.343 +	-D_DUMPTABLE_="" \
   1.344 +	$layout/html.m4.html $layout/form+dump.m4.html
   1.345      return
   1.346    fi
   1.347    cond=""
   1.348 @@ -2806,7 +2809,7 @@
   1.349    ) | (cd $tmpd &&
   1.350  	    err LS="`ls -lF`" &&
   1.351  	    $mydir/sendmultipart.sh -t "$admin" -s "$subj" $files)
   1.352 -  m4 -D_TITLE_="入力完了" $layout/html.m4.html
   1.353 +  _m4 -D_TITLE_="入力完了" $layout/html.m4.html
   1.354    echo "以下の内容で送信しました。" | html p
   1.355    viewtable $1 $tbl \
   1.356  	    `query "select rowid from $tbl order by rowid desc limit 1;"`