Logo address

CGI ツール

目次

2002/08/30

ここでは Pegasus 1.2 に添付されている CGI ツールを紹介する。
Pegasus 1.2 で使用可能な CGI ツールは、ここに紹介するもの以外に多数存在するはずである。それらの例については後述する。

qsparse

用法: qsparse [-r] [-s size] [query]

このプログラムは x-www-form-urlencoded 形式に基づく query を解析し、結果を環境変数に入れる。

例えば

	qsparse 'name=alice&age=18'
を実行する事によって、環境変数 QS_nameQS_age
が生成され、その内容は各々 alice および 18 となる。
この例に見られる様に環境変数の前に QS_ が付け加えられる。このような仕様にしてあるのは、クライアントの操作によってシステム定義の環境変数が置き換えられる危険性を避けるためである。

-rオプションは環境変数の値から CR コードを除去する。
query を省略すると標準入力から query を読み取る。これは POST メソッドで使用する。
-s sizeオプションで標準入力から query を読み取る場合のバッファの大きさを指定できる。[省略値=16KB]

qsparse は簡単な query を処理するのに適している。つまり、

  1. query の中で同一の変数が複数回現れた場合には、配列として扱われる。
  2. 環境変数の値は 16KB までしか許されない。(Plan9 の制限)
  3. 環境変数は英数字と下線記号だけから構成されると仮定している。
それでも query は非常に多くの場合をカバーするはずである。

formparse

用法: formparse [-r] [-o dir] [query]
このプログラムは x-www-form-urlencoded 形式に基づく query を解析し、結果を指定されたディレクトリのファイルに入れる。
-r オプションが指定された場合には CR コードを取り除く。
-o dir は出力するディレクトリを指定する。[省略値="/tmp"]
query が省略された場合には標準入力から query を読み取る。

formparseqsparse よりも大きなデータを扱うのに適している。

同じ変数が現れる事を想定してformparseは次の例に示すようなファイルを作成する。

	/tmp/name/0
	/tmp/name/1
	/tmp/name/2
	/tmp/name/clone
ここに name は変数の名前であり、それをディレクトリの名称として、その下に 0, 1, 2, ... の名前のファイルを作成する。これらのファイルの内容が変数の値である。

注意: formparse は現在のところ、multipart/form-data に対応していません。次のリリースでは対応したいと思います。(これはファイルを送信する時に使用します)