[PREVIOUS CHAPTER] [______TOC_______]

4 Command Line Options

    "Command Line Options" here is that of fml.pl which is used in include
    file such as

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

    Command line options enable you to debug fml.pl on your shell. For
    unified maintenance you should configure $DIR/cf (for makefml) or
    $DIR/config.ph (not use makefml) since "makefml" reconfigures "cf" and
    recreate "config.ph" from "cf". Command line options are useful to
    debug FML.

    I will recommend not to configure fml.pl with command line options but
    to use them only for debug.

    	*** Attention! ***

    In the file "include-ctl", FML calls "fml.pl --ctladdr" style. PLEASE
    DO NOT REMOVE --ctladdr option. This options tells fml.pl to be a
    command server which is not written in config.ph since config.ph is
    common for all programs.

    4.1	syntaxes of command line options

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

    fml.pl and msend.pl option styles are the same but fml_local.pl is
    different from them since fml_local.pl is similar to MH.
    If options and arguments co-exist, we regard a string beginning with
    "-" as an option, others as arguments.

    [DESCRIPTION]

    	-d2		debug mode level 2
    			debug message is logged to $DEBUG_LOGFILE
    			(== $DIR/log.debug in default).

    	-d		debug mode (FML does not distribute)
    	-d2		debug mode level 2
    			debug message is logged to $DEBUG_LOGFILE
    			(== $DIR/log.debug in default).

    	-bt		debug mode (address test mode)
    			now the same as -d :)

    	-bd		become daemon, detach the control tty.

    	-sOPT 		set "$OPT = 1;"
    	-uOPT 		set "$OPT = 0;"
    	-lfile		set "$LOAD_LIBRARY = file;"
    	e.g.
    	-sdebug		the same as $debug = 1;
    	-sUSE_MIME	the same as $USE_MIME = 1;
    	-uUSE_MIME	the same as $USE_MIME = 0;
    	-llibftpmail.pl	$LOAD_LIBRARY = libftpmail.pl

    *** Attention!: -bt follows an option string without spaces
    ***             since the code is easier :D

    	-sdebug		debug mode

    Example: enable a debug mode and $USE_MIME, in addition dumps
    variables.

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

    4.2	Long line option style --\S+=\S+

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

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

    4.3	configuration files and command line options

    The evaluation order of configurations are

    	set defaults in fml.pl (function InitConfig)
    	load $DIR/site_init.ph
       	load $DIR/config.ph
       	load $DIR/sitedef.ph
    	evaluate command line options

    The latter overwrites former configurations.

    4.4	simple mode setting option --\S+

    		--mode

    is to set the current mode as "mode". This is the same as
    &DEFINE_MODE('mode'); in config.ph. For unified maintenance, we do not
    recommend this style. It may be useful when debug.

    		--mode
    		&DEFINE_MODE('mode');

    		fml.pl --ctladdr

    4.5	--ctladdr

    Today you can configure FML by "makefml" interface. Makefml configures
    $DIR/cf for each ML and re-generates config.ph from cf.  makefml does
    not control command line options e.g. in $DIR/include and
    $DIR/include-ctl. For unified maintenance, you should not edit
    $DIR/include* directly and command line options. $DIR/include-ctl is
    exceptional. In it, we use --ctladdr to declare fml.pl runs as a
    command server mode since config.ph is common over programs. Please do
    not remove --ctladdr in include-ctl.

    		--ctladdr

    To use --ctladddr is same as to use a distributor program and another
    command server program.  For source maintenance and compatibility my
    choice is not to make plural programs but maintain only fml.pl as a
    kernel library for FML and options change fml.pl behavior.