[PREVIOUS CHAPTER] [______TOC_______]
4 コマンドライン オプション

コマンドラインオプションは /etc/aliases から呼ばれる include file の

	"|/usr/libexec/fml/fml.pl $DIR $LIBDIR -option" 

のオプション部分(上の -option)の話のことです。主にデバッグ時に使うこと
を想定しています。保守の都合を考えたら $DIR/cf (config.ph) で設定する
べきです。

makefml config は $DIR/cf の中の変数を書き換えます。通常設定をいじる時
は $DIR/cf の中にデフォールトとは異なる設定を書くようにして下さい
(config.phをcfから生成することを忘れずに)。コマンドラインオプションは
デバッグ以外の目的では使わないことを推奨します。

コマンドラインは使い方(e.g. デバッグ)によってはとっても便利ですが、ど
ういうものかよくわからない人は使わないで下さい。

	***注意***

なお makefml で作る include-ctl というファイル中には --ctladdr という
オプションがついていますが、これは外さないで下さい。 このオプションだ
けは全プログラムに共通の config.ph に書けない項目だからです。

4.1	コマンドラインのシンタックス

SYNOPSIS:
   fml.pl   [ options ] $DIR [ options ]  [ $LIBDIR [ options ] ]

	fml.pl msend.pl は同じ引数のとりかたをします。
	注意:fml_local.pl は MH を意識してるので異なります。

オプションと引数が共存する時は

	引数が -ではじまるならオプション
	それ以外は directory などの変数

だと仮定します。順番は関係ありません。directory に関しては その 
directory が存在すれば引数の順に $DIR、$LIBDIR にセットされます。

[DESCRIPTION]

	-d		デバッグモード
			(MLへの配送以外すべてを実行可能)
	-d2		debug mode level 2
			debug message is logged to $DEBUG_LOGFILE
			(== $DIR/log.debug in default).

	-bt   		アドレステストモード	(Become Test)
			メンバーチェックのところまで実行する。
			MLへの配送やコマンドは実行しない。
			いまのところ debug mode とかわらへんねん:-)

	-bd		デーモンモード	(Become Daemon)

	-sOPT 		$OPT をセットする(e.g. -sdebug == -d)
	-uOPT 		$OPT をオフする(e.g. -udebug は $debug = 0; と同じ)
	-lfile		file を $LOAD_LIBRARY 変数に代入する 
			e.g. -llibfml.pl 下↓参照

**注意:-btのように『空白は無し』です。(だってその方がコードが簡単:-)**

例:
	-llibfml.pl とすると、コマンド専用アドレスのできあがりです
	# CONTROL_ADDRESS とおなじ意味ですね

	-llibftpmail.pl ftpmail 専用アドレス
	-sdebug		debug mode
	-sUSE_MIME	$USE_MIME = 1; と同じ

とかできるわけです

例:

"|/usr/local/fml/fml.pl /Baycity /Baycity/lib -d -sUSE_MIME --DUMPVAR"

デバッグモード かつ $USE_MIME =1; で 変数のダンプも行なう。

4.2	ロングラインオプション --\S+=\S+

例:
Example: eval( $MAINTAINER = "fukachan@sapporo.iij.ad.jp" ); essentially

	--MAINTAINER=fukachan@sapporo.iij.ad.jp

$MAINTAINER の値を fukachan@sapporo.iij.ad.jp で Overwrite します。
config.ph の後評価されるので、ロングラインオプションを使ってある値だけ
を変更することが可能です。

4.3	設定ファイルとコマンドラインオプション

各MLの場所に config.ph を置く代わりに FML のライブラリが置いてある場
所に config.ph もしくは sitedef.ph をひとつだけ置いてそれだけを保守す
るのも便利です。この場合評価される順番は次のようになります。
普通の program と同じようにコマンドラインが一番最後に評価されます。

   0     デフォールト設定(program 内にハードコード)
   1    (もしあれば) 共用directory の site_init.ph を loading
   2	$DIR/config.ph (このファイルは必須)
   3	(もしあれば) 共用directory の sitedef.ph を loading
   4	その後コマンドラインオプションを評価

4.4	簡易モード設定 (ロングラインオプション) --\S+

		--mode

の形で 簡単に作動モードを変更することが出来ます。同じことを config.ph 
でする時は

		--mode
は
		&DEFINE_MODE('mode');

になります。なお、コマンドラインの --mode は config.ph で指定する 
$Envelope{"mode:$mode"} と同じ意味になります。デバッグ以外では使わない
方がいいでしょう(developer 向け)。

例:
		fml.pl --ctladdr

4.5	--ctladdr 指定について (コマンド用のアドレス)

現在の makefml ではすべての設定を config.ph の値を書き直すことで行ない
ます。そのためコマンドラインオプションはいじりません。

ひとつだけ例外があります。コマンド用のアドレス listname-ctl は 
include-ctl を呼びますが、この include-ctl の中には

		--ctladdr

という『コマンド用のアドレス宛のメールを処理するという意味をfml.pl へ
伝えるためのコマンドラインオプション』があります。これは全プログラムに
共通の config.ph には記述できません。
この --ctladdr は消さないで下さい。

コマンド用のコマンド fmlcommand.pl を呼び出すようにしても同じことです
が複数のファイルを保守するのは嫌なので、FML 2.1 以降では fml.pl を用い 
--ctladdr で挙動を変える実装にしています。
#これにより、backward も可能になるという理由もあります。