[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		デバッグモード
    			（ＭＬへの配送以外すべてを実行可能）
    	-d2		debug mode level 2
    			debug message is logged to $DEBUG_LOGFILE
    			(== $DIR/log.debug in default).

    	-bt   		アドレステストモード	(Become Test)
    			メンバーチェックのところまで実行する。
    			ＭＬへの配送やコマンドは実行しない。
    			いまのところ 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	設定ファイルとコマンドラインオプション

    各ＭＬの場所に 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 も可能になるという理由もあります。