]> diplodocus.org Git - nmh/blobdiff - man/mh-format.man
Don't need to cast to `char *' for free(3) these days.
[nmh] / man / mh-format.man
index 1213c99b41a621bc6e0735468f6d7766e4d53de1..28ebdadd19e0c9664b78da40324cd945c165c882 100644 (file)
@@ -1,4 +1,4 @@
-.TH MH-FORMAT %manext5% "%nmhdate%" MH.6.8 [%nmhversion%]
+.TH MH-FORMAT %manext5% "January 10, 2015" "%nmhversion%"
 .\"
 .\" %nmhwarning%
 .\"
 .\"
 .\" %nmhwarning%
 .\"
@@ -45,7 +45,8 @@ A format string consists of ordinary text, and special multi-character
 escape sequences which begin with `%'.  When specifying a format
 string, the usual C backslash characters are honored: `\\b', `\\f',
 `\\n', `\\r', and `\\t'.  Continuation lines in format files end with
 escape sequences which begin with `%'.  When specifying a format
 string, the usual C backslash characters are honored: `\\b', `\\f',
 `\\n', `\\r', and `\\t'.  Continuation lines in format files end with
-`\\' followed by the newline character.
+`\\' followed by the newline character.  A literal `%' can be inserted into
+a format file by using the sequence `%%'.
 .\" TALK ABOUT SYNTAX FIRST, THEN SEMANTICS
 .SS SYNTAX
 Format strings are built around
 .\" TALK ABOUT SYNTAX FIRST, THEN SEMANTICS
 .SS SYNTAX
 Format strings are built around
@@ -136,7 +137,7 @@ For string valued functions or components, the condition is true
 if the function return or component value is 
 a non-empty string, and false for an empty string.
 .PP
 if the function return or component value is 
 a non-empty string, and false for an empty string.
 .PP
-The `%?' control escape is optional, and may there may be more
+The `%?' control escape is optional, and there may be more
 than one `%?' control escape in a conditional block.
 The `%|' control escape
 is also optional, but may be included at most once.
 than one `%?' control escape in a conditional block.
 The `%|' control escape
 is also optional, but may be included at most once.
@@ -253,7 +254,7 @@ cur         integer message is current (0 or 1)
 unseen         integer message is unseen (0 or 1)
 size           integer size of message
 strlen         integer length of \fIstr\fR
 unseen         integer message is unseen (0 or 1)
 size           integer size of message
 strlen         integer length of \fIstr\fR
-width          integer output buffer size in bytes
+width          integer column width of terminal
 charleft               integer bytes left in output buffer
 timenow                integer seconds since the UNIX epoch
 me             string  the user's mailbox (username)
 charleft               integer bytes left in output buffer
 timenow                integer seconds since the UNIX epoch
 me             string  the user's mailbox (username)
@@ -267,6 +268,7 @@ match       literal boolean \fIstr\fR contains \fIarg\fR
 amatch literal boolean \fIstr\fR starts with \fIarg\fR
 plus   literal integer \fIarg\fR plus \fInum\fR
 minus  literal integer \fIarg\fR minus \fInum\fR
 amatch literal boolean \fIstr\fR starts with \fIarg\fR
 plus   literal integer \fIarg\fR plus \fInum\fR
 minus  literal integer \fIarg\fR minus \fInum\fR
+multiply       literal integer \fInum\fR multiplied by \fIarg\fR
 divide literal integer \fInum\fR divided by \fIarg\fR
 modulo literal integer \fInum\fR modulo \fIarg\fR
 num    literal integer Set \fInum\fR to \fIarg\fR.
 divide literal integer \fInum\fR divided by \fIarg\fR
 modulo literal integer \fInum\fR modulo \fIarg\fR
 num    literal integer Set \fInum\fR to \fIarg\fR.
@@ -285,18 +287,30 @@ void      expr            Set \fIstr\fR or \fInum\fR
 comp   comp    string  Set \fIstr\fR to component text
 compval        comp    integer Set \fInum\fR to \*(lq\fBatoi\fR(\fIcomp\fR\^)\*(rq
 .\" compflag   comp    integer Set \fInum\fR to component flags bits (internal)
 comp   comp    string  Set \fIstr\fR to component text
 compval        comp    integer Set \fInum\fR to \*(lq\fBatoi\fR(\fIcomp\fR\^)\*(rq
 .\" compflag   comp    integer Set \fInum\fR to component flags bits (internal)
-.\" decodecomp comp    string  Set \fIstr\fR to RFC-2047 decoded component text
-decode expr    string  decode \fIstr\fR as RFC-2047 (MIME-encoded) 
+.\" decodecomp comp    string  Set \fIstr\fR to RFC 2047 decoded component text
+decode expr    string  decode \fIstr\fR as RFC 2047 (MIME-encoded) 
                        component
                        component
-unquote        expr    string  remove RFC-2822 quotes from \fIstr\fR
-trim   expr            trim trailing white-space from \fIstr\fR
+unquote        expr    string  remove RFC 2822 quotes from \fIstr\fR
+trim   expr            trim trailing whitespace from \fIstr\fR
+kilo   expr    string  express in SI units: 15.9K, 2.3M, etc.
+                       %(kilo) scales by factors of 1000,
+kibi   expr    string  express in IEC units: 15.5Ki, 2.2Mi.
+                       %(kibi) scales by factors of 1024.
 putstr expr            print \fIstr\fR
 putstrf        expr            print \fIstr\fR in a fixed width
 putnum expr            print \fInum\fR
 putnumf        expr            print \fInum\fR in a fixed width
 .\" addtoseq literal    add msg to sequence (LBL option)
 putlit expr            print \fIstr\fR without space compression
 putstr expr            print \fIstr\fR
 putstrf        expr            print \fIstr\fR in a fixed width
 putnum expr            print \fInum\fR
 putnumf        expr            print \fInum\fR in a fixed width
 .\" addtoseq literal    add msg to sequence (LBL option)
 putlit expr            print \fIstr\fR without space compression
-nodate string  integer Argument not a date string (0 or 1)
+zputlit        expr            print \fIstr\fR without space compression;
+                       \fIstr\fR must occupy no width on display
+bold           string  set terminal bold mode
+underline              string  set terminal underlined mode
+standout               string  set terminal standout mode
+resetterm              string  reset all terminal attributes
+hascolor               boolean terminal supports color
+fgcolor        literal string  set terminal foreground color
+bgcolor        literal string  set terminal background color
 formataddr     expr            append \fIarg\fR to \fIstr\fR as a
                        (comma separated) address list
 concataddr     expr            append \fIarg\fR to \fIstr\fR as a
 formataddr     expr            append \fIarg\fR to \fIstr\fR as a
                        (comma separated) address list
 concataddr     expr            append \fIarg\fR to \fIstr\fR as a
@@ -353,7 +367,7 @@ mon date    integer month of the year
 month  date    string  month of the year (abbrev.)
 lmonth date    string  month of the year
 year   date    integer year (may be > 100)
 month  date    string  month of the year (abbrev.)
 lmonth date    string  month of the year
 year   date    integer year (may be > 100)
-zone   date    integer timezone in hours
+zone   date    integer timezone in minutes
 tzone  date    string  timezone string
 szone  date    integer timezone explicit?
                        (1=explicit,0=implicit,\-1=unknown)
 tzone  date    string  timezone string
 szone  date    integer timezone explicit?
                        (1=explicit,0=implicit,\-1=unknown)
@@ -362,8 +376,9 @@ date2gmt    date            coerce date to GMT
 dst    date    integer daylight savings in effect? (0 or 1)
 clock  date    integer seconds since the UNIX epoch
 rclock date    integer seconds prior to current time
 dst    date    integer daylight savings in effect? (0 or 1)
 clock  date    integer seconds since the UNIX epoch
 rclock date    integer seconds prior to current time
-tws    date    string  official 822 rendering
+tws    date    string  official RFC 822 rendering
 pretty date    string  user-friendly rendering
 pretty date    string  user-friendly rendering
+nodate date    integer returns 1 if date is invalid
 .fi
 .RE
 .PP
 .fi
 .RE
 .PP
@@ -375,13 +390,17 @@ the first address present in the header component.
 .nf
 .ta \w'Fformataddr 'u +\w'Aboolean 'u +\w'Rboolean 'u
 .I "Function   Argument        Return  Description"
 .nf
 .ta \w'Fformataddr 'u +\w'Aboolean 'u +\w'Rboolean 'u
 .I "Function   Argument        Return  Description"
-proper addr    string  official 822 rendering
+proper addr    string  official RFC 822 rendering
 friendly       addr    string  user-friendly rendering
 addr   addr    string  mbox@host or host!mbox rendering*
 pers   addr    string  the personal name*
 note   addr    string  commentary text*
 mbox   addr    string  the local mailbox*
 friendly       addr    string  user-friendly rendering
 addr   addr    string  mbox@host or host!mbox rendering*
 pers   addr    string  the personal name*
 note   addr    string  commentary text*
 mbox   addr    string  the local mailbox*
-mymbox addr    integer List has the user's address? (0 or 1)
+mymbox addr    integer list has the user's address? (0 or 1)
+getmymbox      addr    string  the user's (first) address,
+                       with personal name
+getmyaddr      addr    string  the user's (first) address,
+                       without personal name
 host   addr    string  the host domain*
 nohost addr    integer no host was present (0 or 1)*
 type   addr    integer host type* (0=local,1=network,
 host   addr    string  the host domain*
 nohost addr    integer no host was present (0 or 1)*
 type   addr    integer host type* (0=local,1=network,
@@ -424,11 +443,36 @@ the left up to the field width.
 The functions (\fIputnum\fR\^) and
 (\fIputstr\fR\^) are somewhat special: they print their result in the minimum number of characters
 required, and ignore any leading field width argument.  The (\fIputlit\fR\^)
 The functions (\fIputnum\fR\^) and
 (\fIputstr\fR\^) are somewhat special: they print their result in the minimum number of characters
 required, and ignore any leading field width argument.  The (\fIputlit\fR\^)
-function outputs the exact contents of str register without any changes
+function outputs the exact contents of the str register without any changes
 such as duplicate space removal or control character conversion.
 such as duplicate space removal or control character conversion.
+The (\fIzputlit\fR\^) function similarly outputs the exact contents of
+the str register, but requires that those contents not occupy any
+output width.  It can therefore be used for outputting terminal escape
+sequences.
+.PP
+There are a limited number of function escapes to output terminal escape
+sequences.  These sequences are retrieved from the
+.IR terminfo (5)
+database according to the current terminal setting.  The (\fIbold\fR\^),
+(\fIunderline\fR\^), and (\fIstandout\fR\^) escapes set bold mode,
+underline mode, and standout mode respectively.
+.PP
+(\fIhascolor\fR\^)
+can be used to determine if the current terminal supports color.
+(\fIfgcolor\fR\^) and (\fIbgcolor\fR\^) set the foreground and
+background colors respectively.  Both of these escapes take one literal
+argument, the color name, which can be one of: black, red, green, yellow,
+blue, magenta, cyan, white.  (\fIresetterm\fR\^) resets all terminal
+attributes back to their default setting.
+.PP
+All of these terminal escape should be used in conjunction with
+(\fIzputlit\fR\^) (preferred) or (\fIputlit\fR\^), as the normal
+(\fIputstr\fR\^) function will strip out control characters.
 .PP
 The available output width is kept in an internal register; any output
 .PP
 The available output width is kept in an internal register; any output
-past this width will be truncated.
+past this width will be truncated.  The one exception to this is
+(\fIzputlit\fR\^) functions will still be executed in case a terminal reset
+code is being placed at the end of the line.
 .SS Special Handling
 A few functions have different behavior depending on what command they are
 being invoked from.
 .SS Special Handling
 A few functions have different behavior depending on what command they are
 being invoked from.
@@ -505,16 +549,14 @@ clause sets the
 register.
 .PP
 As an additional note, the (\fIformataddr\fR\^) and (\fIconcataddr\fR\^)
 register.
 .PP
 As an additional note, the (\fIformataddr\fR\^) and (\fIconcataddr\fR\^)
-functions have some behavior when it comes to the
+functions have special behavior when it comes to the
 .I str
 register.  The starting point of the register is saved and is used to
 build up entries in the address list.
 .PP
 You will find the
 .I str
 register.  The starting point of the register is saved and is used to
 build up entries in the address list.
 .PP
 You will find the
-.B ap
-and
-.B fmtdump
-utilities invaluable in debugging problems with format strings.
+.B fmttest
+utility invaluable when debugging problems with format strings.
 .SS Examples
 With all this in mind,
 here's the default format string for
 .SS Examples
 With all this in mind,
 here's the default format string for
@@ -541,7 +583,7 @@ a space should be printed.  Next:
 .RE
 .PP
 the month and date are printed in two digits (zero filled) separated by
 .RE
 .PP
 the month and date are printed in two digits (zero filled) separated by
-a slash. Next,
+a slash.  Next,
 .PP
 .RS 5
 .nf
 .PP
 .RS 5
 .nf
@@ -652,7 +694,7 @@ If a
 switch was given to
 .B repl
 (see
 switch was given to
 .B repl
 (see
-.BR repl (1)
+.IR repl (1)
 for more details about %{\fIfcc\fR\^}),
 an \*(lqFcc:\*(rq header is output.
 .PP
 for more details about %{\fIfcc\fR\^}),
 an \*(lqFcc:\*(rq header is output.
 .PP
@@ -715,7 +757,7 @@ to have far more than 10000 messages.
 .\" process 200 messages a day and still get some real work
 .\" done."  The authors apparently only planned to get
 .\" real work done for about 50 days per folder.)
 .\" process 200 messages a day and still get some real work
 .\" done."  The authors apparently only planned to get
 .\" real work done for about 50 days per folder.)
-Nontheless (as noted above)
+Nonetheless (as noted above)
 the various scan format strings are inherited
 from older MH versions, and are generally hard-coded to 4
 digits of message number before formatting problems
 the various scan format strings are inherited
 from older MH versions, and are generally hard-coded to 4
 digits of message number before formatting problems
@@ -744,7 +786,6 @@ at 4 digits.
 .SH "SEE ALSO"
 .IR scan (1),
 .IR repl (1),
 .SH "SEE ALSO"
 .IR scan (1),
 .IR repl (1),
-.IR ap (8),
-.IR dp (8)
+.IR fmttest (1),
 .SH CONTEXT
 None
 .SH CONTEXT
 None