fmttest man page on DragonFly

Man page or keyword search:  
man Server   44335 pages
apropos Keyword Search (all sections)
Output format
DragonFly logo
[printable version]

FMTTEST(1)							    FMTTEST(1)

FMTTEST
       fmttest - test tool for the mh-format(5) language

SYNOPSIS
       fmttest [-form formatfile] [-format formatstring] [-address | -raw |
	    -date | -message] [-file | -nofile] [--component component-text]
	    [-dupaddrs | -nodupaddrs] [-ccme | -noccme] [-outsize size-in-
	    characters] [-bufsize size-in-bytes] [-width column-width]
	    [-msgnum number] [-msgcur flag] [-msgsize size] [-unseen flag]
	    [-dump | -nodump] [-trace | -notrace] [+folder] [msgs | strings]

DESCRIPTION
       Fmttest is used to test programs written for the nmh format language as
       specified  by mh-format(5).  It is also intended to replace the ap, dp,
       and fmtdump programs.

   FORMAT PROGRAM SELECTION
       The -format string and -form formatfile switches may be used to specify
       a format string or a format file to read.  If given a format string, it
       must be specified as a single argument to the -format switch.  If given
       a  format file name with -form, the file is searched for using the nor‐
       mal nmh rules: absolute pathnames are accessed directly,	 tilde	expan‐
       sion  is	 done  on  usernames, and files are searched for in the user's
       Mail directory as specified in their profile.  If not found there,  the
       directory “/usr/local/etc/nmh” is checked.

   MODE SELECTION AND COMPONENT SPECIFICATION
       Fmttest	has  four  operating modes: address mode, raw mode, date mode,
       and message mode.  These modes are  selected  by	 the  -address,	 -raw,
       -date, and -message switches respectively.

       Address mode treats every argument as an email address and processes it
       with nmh's email parser.	 Each argument is processed with the specified
       format  program	with  the  parsed email address available as a special
       %{text} component escape, and the output from the program is printed on
       standard	 output.   If there was an error parsing the email address the
       error message is stored in the %{error} component escape.  If no format
       program	is given on the command line, the following default program is
       used:

	    %<{error}%{error}: %{text}%|%(putstr(proper{text}))%>

       In this mode fmttest is equivalent to ap(8).

       In raw mode, no processing of the specified arguments  is  done.	  Each
       argument	 is run against the specified format program with the argument
       text available in the %{text} component.	 You  must  specify  a	format
       with -form or -format when using raw mode.

       Date mode is identical to raw mode, with one exception: if no format is
       specified, the following format string is used:

	    %<(nodate{text})error: %{text}%|%(putstr(pretty{text}))%>

       Date mode is equivalent to dp(8).

       In message mode the arguments to fmttest are interpreted as an optional
       folder and messages.  Fmttest will read each specified message and make
       all of the components in the message available to the  format  program.
       Also,  the  appropriate	information for the %(msg), %(cur), %(unseen),
       and %(size) function escapes will be made available for	each  message.
       If  the	-file  switch is given, the arguments are interpreted as file‐
       names instead of message numbers, but otherwise	the  behavior  is  the
       same  (except  that  the %(msg), %(cur), and %(unseen) function escapes
       will not provide any useful information).

       The default format used in address mode is the default format  used  by
       scan.   The  following  command	can replicate the functionality of the
       repl command.

	    fmttest -nodupaddrs -form replcomps -outsize max [+folder] message

       Regardless of the mode, other components can be provided to the	format
       program by the use of the --component switch.  For example, the follow‐
       ing program will test out the use of the “encrypted” component:

	    fmttest --encrypted yes -message cur

       In message mode components supplied on the command line	will  override
       components from messages.

   ADDITIONAL SWITCHES
       The  -dupaddrs  and  -nodupaddrs	 switches  control  whether  duplicate
       addresses are allowed or	 suppressed  by	 the  FORMATADDR  instruction,
       which is used by the `%(formataddr)' function escape.  In normal opera‐
       tion duplicate addresses are only suppressed by repl.

       The -ccme and -noccme switches control whether  or  not	to  count  the
       user's  local  mailbox  as  a  duplicate	 address.  This replicates the
       behavior of the -cc me switch to repl, and only applies if  -nodupaddrs
       is in effect.

       The -outsize switch controls the maximum number of printable characters
       that the format engine will produce.  Characters marked as non-printing
       by the format engine with `%(zputlit)', characters with zero width, and
       extra bytes that are part of a  multibyte  character  are  not  counted
       against	this  total.   Two  special values are supported: “max”, which
       will set the value to the size of the output buffer, and “width”, which
       will  set  the  value to the width of the terminal.  In message mode it
       defaults to the terminal width, otherwise the  default  is  the	output
       buffer size.

       The -bufsize switch controls the size of the output buffer.  By default
       it is set to the size of the BUFSIZ C  preprocessor  symbol,  which  is
       system-dependent.

       The  -width  switch  controls  the  column  width  which is used by the
       `%(width)' function escape.  By default is set to the terminal width.

       The -msgnum, -msgcur, -msgsize, and the -unseen	switches  all  control
       the  values  used,  respectively,  by  the  following function escapes:
       `%(num)', `%(cur)', `%(size)', and `%(unseen)'.	If none	 are  supplied
       these  values  are taken from the message in message mode; in all other
       modes the default values are 0.

   COMPILING AND TRACING FORMAT PROGRAMS
       The -dump switch outputs the complete set of  format  instructions  for
       the  specified format program.  The -trace switch will output each for‐
       mat instruction as it is being executed, and show the values of the num
       and  str	 registers if they have changed from the previous instruction.
       The output buffer is also printed if it has changed from	 the  previous
       instruction.

   FORMAT INSTRUCTIONS
       It  should  be  noted  that  there  is  not a one-to-one correspondence
       between format escapes and format instructions; many instructions  have
       side effects.  Instructions prefixed with “LV” generally return a inte‐
       ger into the num (value) register; instructions prefixed	 with  a  “LS”
       return a string into the str register.

       Instruction   Description
       COMP	     Output component
       COMPF	     Formatted output component
       LIT	     Output literal text
       LITF	     Formatted literal text output
       CHAR	     Output single character
       NUM	     Output the num register
       NUMF	     Formatted output of the num register
       STR	     Output the str register
       STRF	     Formatted output of the str register
       STRFW	     Not used
       PUTADDR	     Output address list in str register
       STRLIT	     Output str, no space compression
       STRLITZ	     Like STRLIT, but not counted against width
       LS_COMP	     Write component to str register
       LS_LIT	     Write literal to str register
       LS_GETENV     Write environment var to str register
       LS_DECODECOMP Decode RFC 2047 encoded component to str register
       LS_DECODE     Decode RFC 2047 encoded string to str register
       LS_TRIM	     Trim trailing whitespace from str register
       LV_COMP	     Convert component to integer, store in num register
       LV_COMPFLAG   Set num to 1 if TRUE set in component
       LV_LIT	     Load literal value into num register
       LV_DAT	     Load value from dat array into num register (see note)
       LV_STRLEN     Set num to the length of str
       LV_PLUS_L     Add value to num register
       LV_MINUS_L    Substract value from num register
       LV_DIVIDE_L   Divide num register by value
       LV_MODULO_L   num modulo value
       LV_CHAR_LEFT  Store remaining number of printable chars in num
       LS_MONTH	     Write short name of month to str from date component
       LS_LMONTH     Write long name of month to str from date component
       LS_ZONE	     Write time zone offset to str from date component
       LS_DAY	     Write short name of day of week to str from date component
       LS_WEEKDAY    Write long name of day of week to str from date component
       LS_822DATE    Write RFC 822 compatible date to str from date component
       LS_PRETTY     Write date with “pretty” timezone to str
       LV_SEC	     Write date component seconds to num
       LV_MIN	     Write date component minutes to num
       LV_HOUR	     Write date component hour to num
       LV_MON	     Write date component numeric month to num (start at 1)
       LV_YEAR	     Write date component year to num
       LV_YDAY	     Write date component Julian day to num
       LV_WDAY	     Write date component day of week to num (0 == Sunday)
       LV_ZONE	     Write date component time zone offset to num
       LV_CLOCK	     Write date component in Unix epoch time to num
       LV_RCLOCK     Write offset of date component from current time to num
       LV_DAYF	     Write 1 to num if day of week is explicit
       LV_DST	     Write 1 to num if DST is in effect for date component
       LV_ZONEF	     Write 1 to num if timezone is explicit
       LS_ADDR	     Write email address of addr component to str
       LS_PERS	     Write personal name of addr component to str
       LS_MBOX	     Write mailbox (username) of addr component to str
       LS_HOST	     Write host of addr component to str
       LS_PATH	     Write host route of addr component to str
       LS_GNAME	     Write group name of addr component to str
       LS_NOTE	     Write note portion of addr component to str
       LS_822ADDR    Write “proper” RFC 822 version of addr component to str
       LS_FRIENDLY   Write friendly (name or note) of address component to str
       LS_UNQUOTE    Remove RFC 2822 quotes from string
       LV_HOSTTYPE   Set num to type of host (0=local, 1=network)
       LV_INGRPF     Set num to 1 if address was inside of group
       LV_NOHOSTF    Set num to 1 of no host was present in address component
       LOCALDATE     Convert date component to local timezone
       GMTDATE	     Convert date component to GMT
       PARSEDATE     Parse date component
       PARSEADDR     Parse address component
       FORMATADDR    Add address component to list in str
       CONCATADDR    Like FORMATADDR, but will not suppress duplicates
       MYMBOX	     Set num if address component is a local address
       SAVESTR	     Save str register temporarily
       DONE	     End program
       NOP	     No operation
       GOTO	     Jump to new instruction
       IF_S_NULL     Branch if str is NULL
       IF_S	     Branch if str is not NULL
       IF_V_EQ	     Branch if num is equal to value
       IF_V_NE	     Branch if num is not equal to value
       IF_V_GT	     Branch if num is greater than value
       IF_MATCH	     Branch if str contains string
       IF_AMATCH     Branch if str starts with string
       S_NULL	     Set num to 1 if str is NULL
       S_NONNULL     Set num to 1 if str is not NULL
       V_EQ	     Set num to 1 if num equals value
       V_NE	     Set num to 1 if num does not equal value
       V_GT	     Set num to 1 if num is greater than value
       V_MATCH	     Set num to 1 if str contains string
       V_AMATCH	     Set num to 1 if str starts with string

       The LV_DAT instruction is a bit special.	 Callers of the format library
       pass in an array of integers that are used by certain  format  escapes.
       The current list of format escapes and the indexes they use are:

	    dat[0]  %(num)
	    dat[1]  %(cur)
	    dat[2]  %(size)
	    dat[3]  %(width)
	    dat[4]  %(unseen)

SEE ALSO
       mh-format(5), repl(1), ap(8), dp(8),

DEFAULTS
       `-message'
       `-nofile'
       `-dupaddrs'

BUGS
       It shouldn't require as much code from other programs as it does.

nmh-1.6			       December 4, 2013			    FMTTEST(1)
[top]

List of man pages available for DragonFly

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net