Skip to content

Commit a23cd6f

Browse files
committed
Bug fix
1 parent 23dd01a commit a23cd6f

File tree

8 files changed

+96
-63
lines changed

8 files changed

+96
-63
lines changed

source/.w3mplus/bin/cgi-bin/w3mplus

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,9 +125,9 @@ readonly 'VERSION=w3mplus 2.0.2'
125125
: ${W3MPLUS_SIDEBAR_POSITION:='left'}
126126
: ${W3MPLUS_UNDOREDO:='UNDO'}
127127

128-
: ${W3MPLUS_TEMPLATE_HTTP:=}
129-
: ${W3MPLUS_TEMPLATE_HTML:=}
130-
: ${W3MPLUS_TEMPLATE_FRAMESET:=}
128+
: ${W3MPLUS_HTTP_PROGRAM:=}
129+
: ${W3MPLUS_HTML_PROGRAM:=}
130+
: ${W3MPLUS_FRAMESET_PROGRAM:=}
131131

132132
: ${SCRIPT_NAME:="cgi-bin/${0##*/}"}
133133
: ${QUERY_STRING:=''}

source/.w3mplus/bin/htmlframe

Lines changed: 34 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
##
99
## id - 389e2c50-477c-4e4e-b999-a6459ca96e46
1010
## author - <qq542vev at https://purl.org/meta/me/>
11-
## version - 1.0.2
12-
## date - 2022-10-20
11+
## version - 1.2.0
12+
## date - 2022-10-23
1313
## since - 2022-06-28
1414
## copyright - Copyright (C) 2022-2022 qq542vev. Some rights reserved.
1515
## license - <CC-BY at https://creativecommons.org/licenses/by/4.0/>
@@ -64,7 +64,7 @@
6464
## 143 - received SIGTERM
6565
## ------------------
6666

67-
readonly 'VERSION=htmlframe 1.0.2'
67+
readonly 'VERSION=htmlframe 1.2.0'
6868

6969
. 'initialize.sh'
7070
. 'option_error.sh'
@@ -74,6 +74,21 @@ readonly 'VERSION=htmlframe 1.0.2'
7474
. 'html_escape.sh'
7575
. 'safe_string.sh'
7676

77+
### Function: html_safetext
78+
##
79+
## HTML での安全な文字列に変換する。
80+
##
81+
## Parameters:
82+
##
83+
## $1 - 結果を代入する変数名。
84+
## $2 - 対象の文字列。
85+
86+
html_safetext() {
87+
eval "${1}=\"\${2}\""
88+
eval 'safe_string "${1}"' "\"\${${1}}\""
89+
eval 'html_escape "${1}"' "\"\${${1}}\""
90+
}
91+
7792
# @getoptions
7893
parser_definition() {
7994
setup REST plus:true abbr:true error:option_error no:0 help:usage \
@@ -82,12 +97,12 @@ parser_definition() {
8297

8398
param :'append_array_posix attribute "${OPTARG%%=*}" "${OPTARG#*=}"' -a --attribute validate:'regex_match "${OPTARG}" "^[A-Za-z-]+="' var:'NANE=VALUE' -- 'frameset要素に属性を追加する'
8499
flag attribute --no-attribute init:@no on: no: -- '-a, --attribute をリセットする'
85-
param :'append_string "head" "${OPTARG}"' -H --head var:ELEMENT -- 'head要素内に ELEMENT を追加する'
86-
flag head --no-head init:@no on: no: -- '-H, --head をリセットする'
87-
param title -t --title init:='No Title' var:TEXT -- 'フレームページのタイトルを指定する'
100+
param :'append_string "HEAD_CONTENT" "${OPTARG}"' -H --head-content var:ELEMENT -- 'head要素内に ELEMENT を追加する'
101+
flag HEAD_CONTENT --no-head-content init:@no on: no: -- '-H, --head-content をリセットする'
102+
param :'html_safetext "TITLE" "${OPTARG}"' -t --title init:='No Title' var:TEXT -- 'フレームページのタイトルを指定する'
88103
param W3MPLUS_TEMPLATE_FRAMESET -T --template init:@none var:FILE -- 'テンプレートファイルを指定する'
89-
param :'eval "${1#--}=\"\${OPTARG}\""' --n1 --n2 --n3 --n4 --n5 --n6 --n7 --n8 --n9 validate:'regex_match "${OPTARG}" "^([A-Za-z][0-9A-Za-z\\-_:.]*)?$"' var:NAME -- 'n個目の URI に対応するname属性を指定する'
90-
param :'eval "${1#--}=\"\${OPTARG}\""' --t1 --t2 --t3 --t4 --t5 --t6 --t7 --t8 --t9 var:TEXT -- 'n個目の URI に対応するタイトルを指定する'
104+
param :'eval "${1#--}=\"\${OPTARG}\""' --n1 --n2 --n3 --n4 --n5 --n6 --n7 --n8 --n9 validate:'regex_match "${OPTARG}" "^([A-Za-z][0-9A-Za-z\\-_:.]*)?$"' var:NAME -- 'n個目の URI に対応するname属性を指定する'
105+
param :'html_safetext "${1#--}" "${OPTARG}"' --t1 --t2 --t3 --t4 --t5 --t6 --t7 --t8 --t9 var:TEXT -- 'n個目の URI に対応するタイトルを指定する'
91106
disp :usage -h --help -- 'このヘルプを表示して終了する'
92107
disp VERSION -v --version -- 'バージョン情報を表示して終了する'
93108

@@ -112,6 +127,9 @@ parser_definition() {
112127
' 130 - received SIGINT' \
113128
' 131 - received SIGQUIT' \
114129
' 143 - received SIGTERM'
130+
131+
msg -- '' 'Environment Variables:' \
132+
' W3MPLUS_FRAMESET_PROGRAM - HTML フレーム用の呼び出しコマンド'
115133
}
116134
# @end
117135

@@ -141,9 +159,6 @@ awkScript=$(
141159
__EOF__
142160
)
143161

144-
safe_string 'title' "${title}"
145-
html_escape 'title' "${title}"
146-
147162
for uri in ${@+"${@}"}; do
148163
i=$((${i-0} + 1))
149164

@@ -155,16 +170,14 @@ for uri in ${@+"${@}"}; do
155170

156171
case "${name}" in
157172
?*)
158-
safe_string 'name' "${name}"
159-
html_escape 'name' "${name}"
173+
eval export '"FRAME${i}_NAME=${name}"'
160174
nameAttr=" name=\"${name}\""
161175
;;
162176
esac
163177

164178
case "${ftitle}" in
165179
?*)
166-
safe_string 'ftitle' "${ftitle}"
167-
html_escape 'ftitle' "${ftitle}"
180+
eval export '"FRAME${i}_TITLE=${ftitle}"'
168181
titleAttr=" title=\"${ftitle}\""
169182
list="${list-}<li><a href=\"${uri}\">${ftitle}</a></li>"
170183
;;
@@ -174,13 +187,15 @@ for uri in ${@+"${@}"}; do
174187
frame="${frame-}<frame${nameAttr-}${titleAttr-} src=\"${uri}\" />"
175188
done
176189

177-
attribute=$(eval "awk -- \"\${awkScript}\" ${attribute}")
190+
ATTRIBUTES=$(eval "awk -- \"\${awkScript}\" ${attribute}")
191+
192+
export 'ATTRIBUTES' 'HEAD_CONTENT' 'TITLE' 'W3MPLUS_TEMPLATE_FRAMESET'
178193

179-
frameset="<frameset${attribute}>${frame-}<noframes><body><p>The frame cannot be displayed on your Web browser.</p><p>Please enable HTML Frame.</p><p>Frame page list</p><ul>${list-}</ul></body></noframes></frameset>"
194+
frameset="<frameset${ATTRIBUTES}>${frame-}<noframes><body><p>The frame cannot be displayed on your Web browser.</p><p>Please enable HTML Frame.</p><p>Frame page list</p><ul>${list-}</ul></body></noframes></frameset>"
180195

181196
case "${W3MPLUS_TEMPLATE_FRAMESET-}" in
182197
'')
183-
printf '<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>%s</title>%s</head>%s</html>' "${title}" "${head}" "${frameset}"
198+
printf '<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>%s</title>%s</head>%s</html>' "${TITLE}" "${HEAD_CONTENT}" "${frameset}"
184199
;;
185-
*) . "${W3MPLUS_TEMPLATE_FRAMESET}";;
200+
*) sh -c "${W3MPLUS_FRAMESET_PROGRAM} \${@+\"\${@}\"}" 'sh' ${@+"${@}"};;
186201
esac

source/.w3mplus/bin/httpresponse

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
##
99
## id - c1098c4b-f92d-40a2-bf99-dcfae2c9bed8
1010
## author - <qq542vev at https://purl.org/meta/me/>
11-
## version - 2.0.1
12-
## date - 2022-10-20
11+
## version - 2.1.0
12+
## date - 2022-10-26
1313
## since - 2019-07-15
1414
## copyright - Copyright (C) 2019-2022 qq542vev. Some rights reserved.
1515
## license - <CC-BY at https://creativecommons.org/licenses/by/4.0/>
@@ -59,7 +59,7 @@
5959
## 143 - received SIGTERM
6060
## ------------------
6161

62-
readonly 'VERSION=httpresponse 2.0.1'
62+
readonly 'VERSION=httpresponse 2.1.0'
6363

6464
. 'initialize.sh'
6565
. 'option_error.sh'
@@ -73,12 +73,12 @@ parser_definition() {
7373
-- 'Usage:' " ${2##*/} [OPTION]... [FILE]..." \
7474
'' 'Options:'
7575

76-
param :'append_string "header" "${OPTARG}${CHAR_CR}${CHAR_LF}"' -H --header validate:'regex_match "${OPTARG}" "^[!#-'"'"'*+.0-9A-Z/^_\\`a-z|~-]+:[\\\\t -~]+$"' var:HEADER_FIELD -- 'HTTP ヘッダフィールドを追加する'
77-
flag header --no-header init:@no on: no: -- '-H, --header をリセットする'
78-
param statusLine -s --status-line init:='HTTP/1.1 200 OK' validate:'regex_match "${OPTARG}" "^HTTP/[0-9]\\.[0-9] [0-9]{3} [ -~]*$"' var:STATUS_LINE -- 'HTTP のステータスラインを指定する'
76+
param :'append_string "HEADER_FIELDS" "${OPTARG}${CHAR_CR}${CHAR_LF}"' -H --header-field validate:'regex_match "${OPTARG}" "^[!#-'"'"'*+.0-9A-Z/^_\\`a-z|~-]+:[\\\\t -~]+$"' var:HEADER_FIELD -- 'HTTP ヘッダフィールドを追加する'
77+
flag HEADER_FIELDS --no-header-field init:@no on: no: -- '-H, --header-field をリセットする'
78+
param STATUS_LINE -s --status-line init:='HTTP/1.1 200 OK' validate:'regex_match "${OPTARG}" "^HTTP/[0-9]\\.[0-9] [0-9]{3} [ -~]*$"' var:STATUS_LINE -- 'HTTP のステータスラインを指定する'
7979
param W3MPLUS_TEMPLATE_HTTP -T --template init:@none var:FILE -- 'テンプレートファイルを指定する'
80-
disp :usage -h --help -- 'このヘルプを表示して終了する'
81-
disp VERSION -v --version -- 'バージョン情報を表示して終了する'
80+
disp :usage -h --help -- 'このヘルプを表示して終了する'
81+
disp VERSION -v --version -- 'バージョン情報を表示して終了する'
8282

8383
msg -- '' 'Exit Status:' \
8484
' 0 - successful termination' \
@@ -101,12 +101,11 @@ parser_definition() {
101101
' 130 - received SIGINT' \
102102
' 131 - received SIGQUIT' \
103103
' 143 - received SIGTERM'
104-
}
105-
# @end
106104

107-
option_header() {
108-
header="${header-}${OPTARG}${CHAR_CR}${CHAR_LF}"
105+
msg -- '' 'Environment Variables:' \
106+
' W3MPLUS_HTTP_PROGRAM - HTTP レスポンス用の呼び出しコマンド'
109107
}
108+
# @end
110109

111110
# @gengetoptions parser -i parser_definition parse "${1}"
112111
# @end
@@ -115,17 +114,19 @@ eval "$(getoptions parser_definition parse "${0}")"
115114
parse ${@+"${@}"}
116115
eval "set -- ${REST}"
117116

117+
export 'HEADER_FIELDS' 'STATUS_LINE' 'W3MPLUS_TEMPLATE_HTTP'
118+
118119
case "${W3MPLUS_TEMPLATE_HTTP-}" in
119120
'')
120121
cat <<-__EOF__
121-
${statusLine}${CHAR_CR}
122+
${STATUS_LINE}${CHAR_CR}
122123
Date: $(date -u -- '+%a, %d %b %Y %H:%M:%S GMT')${CHAR_CR}
123-
${header}${CHAR_CR}
124+
${HEADER_FIELDS}${CHAR_CR}
124125
__EOF__
125126

126127
case "${#}" in
127128
[!0]) cat -- ${@+"${@}"};;
128129
esac
129130
;;
130-
*) . "${W3MPLUS_TEMPLATE_HTTP}";;
131+
*) sh -c "${W3MPLUS_HTTP_PROGRAM} \${@+\"\${@}\"}" 'sh' ${@+"${@}"};;
131132
esac

source/.w3mplus/bin/printhtml

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
##
99
## id - 5ab6e89a-d4eb-4c8d-b1bc-02bab2962639
1010
## author - <qq542vev at https://purl.org/meta/me/>
11-
## version - 3.0.1
12-
## date - 2022-10-20
11+
## version - 3.1.0
12+
## date - 2022-10-23
1313
## since - 2019-07-29
1414
## copyright - Copyright (C) 2019-2022 qq542vev. Some rights reserved.
1515
## license - <CC-BY at https://creativecommons.org/licenses/by/4.0/>
@@ -57,23 +57,38 @@
5757
## 143 - received SIGTERM
5858
## ------------------
5959

60-
readonly 'VERSION=printhtml 3.0.1'
60+
readonly 'VERSION=printhtml 3.1.0'
6161

6262
. 'initialize.sh'
6363
. 'option_error.sh'
6464
. 'append_string.sh'
6565
. 'html_escape.sh'
6666
. 'safe_string.sh'
6767

68+
### Function: html_safetext
69+
##
70+
## HTML での安全な文字列に変換する。
71+
##
72+
## Parameters:
73+
##
74+
## $1 - 結果を代入する変数名。
75+
## $2 - 対象の文字列。
76+
77+
html_safetext() {
78+
eval "${1}=\"\${2}\""
79+
eval 'safe_string "${1}"' "\"\${${1}}\""
80+
eval 'html_escape "${1}"' "\"\${${1}}\""
81+
}
82+
6883
# @getoptions
6984
parser_definition() {
7085
setup REST abbr:true error:option_error plus:true no:0 help:usage \
7186
-- 'Usage:' " ${2##*/} [OPTION]... [FILE]..." \
7287
'' 'Options:'
7388

74-
param :'append_string "head" "${OPTARG}"' -H --head var:ELEMENT -- 'head要素内に ELEMENT を追加する'
75-
flag head --no-head init:@no on: no: -- '-H, --head をリセットする'
76-
param title -t --title init:='No Title' var:TEXT -- 'ページのタイトルを指定する'
89+
param :'append_string "HEAD_CONTENT" "${OPTARG}"' -H --head-content var:ELEMENT -- 'head要素内に ELEMENT を追加する'
90+
flag HEAD_CONTENT --no-head-content init:@no on: no: -- '-H, --head-content をリセットする'
91+
param :'html_safetext "TITLE" "${OPTARG}"' -t --title init:='No Title' var:TEXT -- 'ページのタイトルを指定する'
7792
param W3MPLUS_TEMPLATE_HTML -T --template init:@none var:FILE -- 'テンプレートファイルを指定する'
7893
disp :usage -h --help -- 'このヘルプを表示して終了する'
7994
disp VERSION -v --version -- 'バージョン情報を表示して終了する'
@@ -99,6 +114,9 @@ parser_definition() {
99114
' 130 - received SIGINT' \
100115
' 131 - received SIGQUIT' \
101116
' 143 - received SIGTERM'
117+
118+
msg -- '' 'Environment Variables:' \
119+
' W3MPLUS_HTML_PROGRAM - HTML 用の呼び出しコマンド'
102120
}
103121
# @end
104122

@@ -109,18 +127,17 @@ eval "$(getoptions parser_definition parse "${0}")"
109127
parse ${@+"${@}"}
110128
eval "set -- ${REST}"
111129

112-
safe_string 'title' "${title}"
113-
html_escape 'title' "${title}"
130+
export 'HEAD' 'TITLE' 'W3MPLUS_TEMPLATE_HTML'
114131

115132
case "${W3MPLUS_TEMPLATE_HTML-}" in
116133
'')
117-
printf '<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><meta charset="UTF-8" /><title>%s</title>%s</head><body><main>' "${title}" "${head}"
134+
printf '<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><meta charset="UTF-8" /><title>%s</title>%s</head><body><main>' "${TITLE}" "${HEAD_CONTENT}"
118135

119136
case "${#}" in
120137
[!0]) cat -- ${@+"${@}"} | tr -d '\000-\010\013\014\016-\037\177-\214';;
121138
esac
122139

123140
printf '</main></body></html>'
124141
;;
125-
*) . "${W3MPLUS_TEMPLATE_HTML}";;
142+
*) sh -c "${W3MPLUS_HTML_PROGRAM} \${@+\"\${@}\"}" 'sh' ${@+"${@}"};;
126143
esac

source/.w3mplus/bin/setquickmark

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
##
99
## id - 435aa761-cbac-4614-9d14-84962f131d16
1010
## author - <qq542vev at https://purl.org/meta/me/>
11-
## version - 2.0.1
12-
## date - 2022-10-12
11+
## version - 2.0.2
12+
## date - 2022-10-26
1313
## since - 2019-07-29
1414
## copyright - Copyright (C) 2019-2022 qq542vev. Some rights reserved.
1515
## license - <CC-BY at https://creativecommons.org/licenses/by/4.0/>
@@ -58,7 +58,7 @@
5858
## 143 - received SIGTERM
5959
## ------------------
6060

61-
readonly 'VERSION=setquickmark 2.0.1'
61+
readonly 'VERSION=setquickmark 2.0.2'
6262

6363
. 'initialize.sh'
6464
. 'option_error.sh'
@@ -134,7 +134,7 @@ fi
134134

135135
case "${#}" in
136136
'0')
137-
${VISUAL:-${EDITOR:-vi --}} "${config}"
137+
sh -c "${VISUAL:-${EDITOR:-vi --}} \"\${1}\"" 'sh' "${config}"
138138
exit
139139
;;
140140
esac

source/.w3mplus/bin/setregister

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
##
99
## id - d9bf1ef3-3e53-4b44-bfe0-3ba4620016b5
1010
## author - <qq542vev at https://purl.org/meta/me/>
11-
## version - 2.0.0
12-
## date - 2022-07-13
11+
## version - 2.0.1
12+
## date - 2022-10-26
1313
## since - 2020-04-06
1414
## copyright - Copyright (C) 2020-2022 qq542vev. Some rights reserved.
1515
## license - <CC-BY at https://creativecommons.org/licenses/by/4.0/>
@@ -54,7 +54,7 @@
5454
## 143 - received SIGTERM
5555
## ------------------
5656

57-
readonly 'VERSION=setregister 2.0.0'
57+
readonly 'VERSION=setregister 2.0.1'
5858

5959
. 'initialize.sh'
6060
. 'option_error.sh'
@@ -126,7 +126,7 @@ fi
126126

127127
case "${#}" in
128128
'0')
129-
${VISUAL:-${EDITOR:-vi --}} "${config}"
129+
sh -c "${VISUAL:-${EDITOR:-vi --}} \"\${1}\"" 'sh' "${config}"
130130
exit
131131
;;
132132
esac

source/.w3mplus/bin/setusercommand

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
##
99
## id - bc9554d8-7a8a-4e78-91f2-4aa37f12a21e
1010
## author - <qq542vev at https://purl.org/meta/me/>
11-
## version - 1.1.3
12-
## date - 2022-07-13
11+
## version - 1.2.0
12+
## date - 2022-10-26
1313
## since - 2019-12-15
1414
## copyright - Copyright (C) 2019-2022 qq542vev. Some rights reserved.
1515
## license - <CC-BY at https://creativecommons.org/licenses/by/4.0/>
@@ -54,7 +54,7 @@
5454
## 143 - received SIGTERM
5555
## ------------------
5656

57-
readonly 'VERSION=setusercommand 1.1.3'
57+
readonly 'VERSION=setusercommand 1.2.0'
5858

5959
. 'initialize.sh'
6060
. 'option_error.sh'
@@ -83,7 +83,7 @@ parser_definition() {
8383
-- 'Usage:' " ${2##*/} [OPTION]... [CALL] [COMMAND_ARG]..." \
8484
'' 'Options:'
8585

86-
param config -c --config init:'config="${HOME}/.w3mplus/autocmd"' var:FILE -- '設定ファイルを指定する'
86+
param config -c --config init:'config="${HOME}/.w3mplus/usercommand"' var:FILE -- '設定ファイルを指定する'
8787
disp :usage -h --help -- 'このヘルプを表示して終了する'
8888
disp VERSION -v --version -- 'バージョン情報を表示して終了する'
8989

@@ -143,7 +143,7 @@ fi
143143

144144
case "${#}" in
145145
'0')
146-
${VISUAL:-${EDITOR:-vi --}} "${config}"
146+
sh -c "${VISUAL:-${EDITOR:-vi --}} \"\${1}\"" 'sh' "${config}"
147147
exit
148148
;;
149149
esac

0 commit comments

Comments
 (0)