$book = '..'?>
include "$book/mh.php"; includeHeader('finnam.html', 'maimhm.html'); ?>I hate to experiment when I have folders full of important mail. I've made another MH directory named Mail_test. It has a duplicate set of files like replcomps, some folders with useless messages, and so on.
Whenever I want to test commands, I edit my MH profile and change the Path: entry to read:
    Path: Mail_test
    
    Until I change that entry back, MH commands use
    my Mail_test directory.
    If I inc some messages that I want to keep, I just refile them into my "real" MH directory with a command like:
    % refile +$HOME/Mail/inbox
    
    and read them after I change the Path: back.
    Another way to change your MH setup is by defining the MH environment variable. If it's defined, MH will use it as the location of the MH profile file -- otherwise, MH defaults to .mh_profile in your home directory. You can make an MH profile with a name like tmpMHprofile in your home directory and set MH to $HOME/tmpMHprofile.
CAUTION: Some versions of xmh ignore the MH environment variable. See the Section Conflicts Between xmh and MH Customization for a workaround.
An easy way to make test messages is by linking to one message over and over. This is easiest if you create a test folder, then change your shell's current directory to it. After that, use cp to copy in a test message from some other folder. For example, to copy message number 100 from inbox into a new test folder:
    % folder +test
    Create folder "/yourMHdir/test"? y
    % cd `mhpath +test`
    % pwd
    /yourMHdir/test
    % cp `mhpath cur +inbox` 100
    % scan 100
     100  04/01 Steven Dommer      Re: meeting minutes<<> A while b
    
    Be sure not to link (ln) this first message to the other
    folder. Use cp as shown above. That's because any changes
    you make to a link will appear in the original message too!
    Now you're ready to make your links to this test message. The easiest way is with a shell loop (the Section Sorting Messages: sortm has another example). Each shell has a different way to do this; for the C shell, see the next Example.
    Example: C shell loop to make 100 test
    messages
    
    % @ num=1
    % while ($num < 100)
    ? ln 100 $num
    ? echo made link $num
    ? @ num++
    ? end
    made link 1
        ...
    made link 99
    %
    
    The at sign (@) operator in
    the Example above is the C shell's way of
    doing arithmetic. The command line @ num=1
    sets $num to 1, and @ num++
    increments $num by one. The loop makes the first link,
    adds 1 to num, then tests to see if $num is
    still less than 100.
    The links save filesystem space. If you want individual copies instead of links, though, use cp instead of ln.
The standard Bourne shell doesn't have built-in arithmetic. To speed things up, the Example below shows a tricky way to get numbers from the Bourne shell without addition. This set of nested loops does the same thing as the C shell loop above. They're indented for clarity.
    Example: Bourne shell nested loop to make
    100 test messages
    
    $ for t in "" 1 2 3 4 5 6 7 8 9
    > do
    >   for o in 0 1 2 3 4 5 6 7 8 9
    >   do
    >       ln 100 $t$o
    >       echo made link $t$o
    >   done
    > done
    made link 0
    made link 1
        ...
    made link 99
    $ rm 0
    
    The loop in the Example above is a little
    messy, and the echo command will slow it down if your shell
    doesn't have echo built in. It has an outer loop that
    sets $t, the "tens" place. The inner loop
    sets $o, the "ones" place. The loops are messy because
    they create a link named 0 which MH won't like; you can
    remove it with rm 0.
    
      includeFooter('$Date: 2006-05-31 15:13:43 -0700 (Wed, 31 May 2006) $',
        'OReilly: 1991, 1992, 1995; Jerry: 1996, 1997, 1998, 1999, 2000, 2002, 2004');
    ?>