[PREVIOUS CHAPTER] [______TOC_______]

6 Several Utilities (bin/, lib/Utilities/ ...)

    In this chapter we describe utility programs under bin/ and
    contrib/Utilities/.

    6.1	analyze_mail_error.pl (replaced to libexec/mead.pl)

    use libexec/mead.pl.

    6.2	Archive Generator

    Please see the chapter of "archive" (../daily 3.0).

    6.3	base64decode.pl base64encode.pl

    BASE64 encoder and decoder. A part of library uses this.

    6.4	cron (bin/cron.pl)

    cron is a tiny program which is almost compatible of Vixie Cron.
    Please see cron chapter (../digest 2.17).

    6.5	Daemon-ize programs

    Example:

    	% bin/daemon.pl cron.pl $PWD

    to make cron.pl a daemon. perl version of the following C program.
    This may work on BSD's.

    #include <stdio.h>
    #include <sys/ioctl.h>
    #include <sgtty.h>
    #include <sys/file.h>

    void usage()
    {
      char *string="USAGE: targetprogram";
      fputs(string,stderr);
      exit(0);
    }

    main(argc, argv)
         int argc;
         char **argv;
    {
      int f;

      f = open( "/dev/tty", O_RDWR, 0);
      if( -1 == ioctl(f ,TIOCNOTTY, NULL))
        exit(1);
      close(f);

      if( argc > 1 )
        execvp(*(++argv), argv);
      else
        usage();

      exit(0);
    }

    6.6	daily, log analyzer

    	% bin/daily.pl -f etc/daily.ignore log

    which shows ambiguous yesterday lines in the log file($LOGFILE).

    	/usr/local/fml/etc/daily.ignore

    	/usr/local/fml/etc/daily.ignore
    	("FML installed directory"/etc/daily.ignore)

    determines which lines daily.pl ignores. This file contains key
    phrases regarded as valid in the context of FML operations. We
    recommend you run daily.pl and check the output. If it has superfluous
    lines, you add needless phrase patterns to "daily.ignore". It is good
    to run daily.pl each morning by cron.

    	daily.pl [-hd] [-f patfile] [-t trap_patfile] [-p days]

    	-h        this message
    	-d        debug mode

    	-f file   pattern file to ignore
    	-t file   pattern file to trap (evaluated before ignore list)
    	-p days   scan at which day (default is 1, that is "yesterday")

    Example: for elena ML (/var/spool/ml/elena)

    [$HOME/sbin/daily.sh]

    	#!/bin/sh
    	/usr/local/fml/bin/daily.pl -f $HOME/etc/daily.ignore \
    		-t $HOME/etc/daily.trap /var/spool/ml/elena/log

    [crontab]
    0 5 * * * /bin/sh $HOME/sbin/daily.sh

    6.7	Checking DNS

    A small program to check DNS values.

    	% make dns_check

    runs this program.

    6.8	emumail.pl

    Emulation program of output from sendmail into fml.pl which is for
    debug only.

    "makefml test <ML>" is the same function and more useful I believe.

    6.9	Expire

    6.10	WIX Language Formatter  (bin/fwix.pl)

    Please see the chapter ../documentation 2.0

    6.11	gen_summary.pl (summary re-creator)

    When summary file is broken, you can re-create summary file with this
    program from ML articles in the spool.

    in fml-support ML's Count: 02393

       gen_summary.pl -I /usr/local/fml Mailing List's spool > summary

    	-I lib*.pl locations (required)
    	-m MIME decoding

    6.12	bin/msend_master.sh

    example of control over multiple msending processes.
    See also INSTALL file.

    6.13	bin/more_secure_cf.pl

    a real program of "make secure" operation.

    6.14	Multipart Canceler Filter (bin/multipart.pl)

    Author: Yuao TANIGAWA <yuao@infonia.or.jp>

    You can use "| multipart.pl | fml.pl" in include file.
    This cancels out multipart mails to inject it to fml.pl since
    commands in multipart mails could fail.

    From:    Yuao TANIGAWA <yuao@infonia.or.jp>
    Subject: Multipart Canceler
    To:      fml-support@axion.phys.titech.ac.jp (fml supporting ML)
    Date:    Fri, 10 Jan 1997 21:09:03 +0200
    X-Mail-Count: 01937

    6.15	NEWSYSLOG SHELL VERSION (bin/newsyslog.sh)

    Inheritance in the age without libnewsyslog.pl

    6.16	A demo of SMTP library

    A demo.

    6.17	initialize and change password  (bin/passwd.pl)

    Please use "makefml passwd ML ...", which is more useful today.

    FML saves crypted passwords for remote administration authentication
    in $DIR/etc/passwd. So you should use a special program to encrypt
    passwords for initialization and change.

     passwd.pl [-i] [-f password-file] user password

       -i initialize
       -f password file

    Example:

    	% passwd.pl -i fukachan@phys.titech.ac.jp

    shows

    	Address: fukachan@phys.titech.ac.jp
    	Password:

    Please input your password. The password file contains

    	fukachan@phys.titech.ac.jp 32ZrV/XvYj1kY

    where this "32ZrV/XvYj1kY" is a crypted password.

    6.18	get mails via POP3

    This gets mails from a mail server via POP3 and injects them into
    fml.pl and runs ML. The real program is libexec/popfml.pl, others is a
    link to it.

    6.19	split and send files (bin/split_and_msend.pl)

    Obsolete.

    6.20	SPOOL -> HTML Hierarchy (bin/spool2html.pl)

    make HTML style articles of ML. In default this generates index.html,
    thread.html (thread) and each article.html. Please run this program in
    ML's HOME DIRECTORY ($DIR) or define -D $DIR.

    SYNOPSIS:

      spool2html.pl [-h] [-I INC] [-f cf] [-d HTML_DIR] [-t TYPE] [-D DIR] SPOOL

        -h    this message
        -d    $HTML_DIR
        -t    number of day ($HTML_INDEX_UNIT)

        -h    this message
        -d    $HTML_DIR
        -f    config.ph location
        -t    number of day ($HTML_INDEX_UNIT)
        -D    $DIR
        -I    path; add path to @INC

        SPOOL $SPOOL_DIR

    Example:
       % cd /var/spool/ml/elena
       % spool2html.pl -I /usr/local/fml -d /htdocs /var/spool/ml/elena/spool

    Attention: Without -D, $DIR == $PWD.

    6.21	MH scan.format (lib/Utilities/scan.format)

    Please input lib/Utilities/scan.format to your ~/Mail, MH scan shows
    the following

      65 -06/14 Horaki Hikari fml-su Subject uja  <<UJA
         Date:  From:         X-ML-Name: Subject:

    It must be useful. You can write MH scan.format if you understand

    	if	%<
    	elif	%?
    	else	%|
    	fi	%>

    Statement Examples:

    %?{X-Mailinglist-Name}%6{X-Mailinglist-Name}\

    %?(match NetBSD.ORG)NetBSD\

    6.22	to make articles by "mget" mbox style (lib/Utilities/packmbox.pl)

    packmbox.pl	(by ukai@hplj.hpl.hp.com)

    By lib/Utilities/packmbox.pl, you do to make mbox style file.

    	(cd spool; packmbox.pl ) > ~/mbox

    You can incorporate mails to your ~/Mail/inbox if with MH

    	inc -file ~/mbox -truncate

    6.23	RMAIL -> fml.pl

    Rmail2fml.pl	(yamane@ngi.co.jp)

    	RMAIL file -> fml.pl

    6.24	Stardate (STAR TREK)

    Add a special header field Stardate which is STAR TREK's date:-).

    	X-Stardate: [-31]8122.12

    If you use MH, you can replace MH post by my-mh-post.pl (perl) or
    my-mh-post(shell) to add Stardate in your mail when sending.

    libstardate.pl is stardate library.

    * This algorithm is one of stardate calculation. Several
    interpretation are available for stardate, but I choice one of them.

    6.25	weekend-msend.sh

    FML drives Matomeokuri / Digest in the interval 24 hours, so FML does
    not implement sending once in a week.  To send articles in a week once
    in a week, you run weekend-msend.sh once in a week where you set m=1u
    as a digest parameter.

    In default you cannot configure FML to control weekly digest
    configurations for each address by remote (e.g. command).
    # Of course, you can hack FML.

    The heart of weekly-msend is

            MSEND_RC=$DIR/weekend/msendrc
            ACTIVE_LIST=$DIR/weekend/actives
            MEMBER_LIST=$DIR/weekend/members

    and "address option" in actives or members (depended on modes).  You
    require "1" of "m=1" as an option since we require msend.pl works
    always.

    	address m=1u

    6.26	Append X-Stardate: (Emacs Lisp)

    Please load contrib/Utilities/stardate.el and add the following codes
    to your ~/.emacs. mh-comp generates draft buffer with X-Stardate:.  I
    check this code on mule-2.3.

    (load-library "stardate")
    (setq startrek-stardate-process "/some-directory-path/libstardate.pl")