SIGNIFY(1)	 Generate Semi-Random Signatures       SIGNIFY(1)



NAME
       signify - Program to generate semi-random signatures


SYNOPSIS
       signify [--fifo=$HOME/.signature] [--input=file] [--debug]


DESCRIPTION
       Signify will take a signature description file  (  ~/.sig-
       nify  or  whatever file is specified by the --input=<file>
       option ) and create a random signature based on the infor-
       mation  contained  therein.  This allows the ability to do
       such things as pick a random quote for each message  sent.

       Signify, by default, will write the generated signature to
       standard output from where it can be redirected	to  over-
       write  the  .signature  file.   Alternatively, Signify can
       pipe it's output to a given 'fifo'.  Each read  from  that
       file will return a different signature.

       To use the FIFO feature, delete the current "$HOME/.signa-
       ture" file and start Signify in the background like  "sig-
       nify  --fifo=$HOME/.signature  &".  With this running, try
       "cat $HOME/.signature" a few times.  A different signature
       will  be  returned  each  time.	 (Note: This feature will
       probably work only on unix systems.)

       The --debug switch causes Signify to generate messages  on
       what  it is doing to stderr.  This switch is only meant to
       be useful to the program's maintainers.


CONFIGURATION
       The definition for the generated signatures  is	contained
       entirely  within the .signify file contained in the user's
       home directory.	Any completely empty  lines  (lines  with
       even  a	single space are considered part of the signature
       data) and those lines starting with a hash  character  (#)
       are  completely ignored.  Those lines starting with a per-
       cent sign (%) are considered commands and affect  the  way
       Signify behaves.


       Perl Command Substitution

       Signify can execute an arbitrary perl code fragment during
       the initial reading of the configuration file.	This  can
       be  used,  for example, to choose values or text depending
       on the environment in which Signify is being run.  To  use
       this  feature,  simply  enclose	the  desired perl code in
       back-tics (i.e. `perl  code`).	Whatever  the  perl  code
       evaluates to will be substituted in that spot.  No further
       variable substitutions are made	on  the  resulting  text.
       Signify	is  intelligent enough to recognize two back-tics
       together (often used as a better looking  quotation  mark)
       as  not	being  a code fragment.  Thus, writting something
       like "``Stop,'' she said." will appear as expected.  Note:
       The  entire  code  fragment  must be contained on a single
       line of the input file.



       Defining Variables

       Signify will substitute variables within each line of  the
       signature  in  much  the same way as the shell would.  Any
       sequence of $WORD; will be replaced by  the  value  corre-
       sponding  to the name "WORD".  Case is significant but the
       trailing semicolon may be omitted if the next character is
       not  a  letter,	digit,	or underscore.	By default, these
       variables look up values inside the environment variables,
       but  can  also be defined or redefined within the .signify
       file itself with a command such as:

	   % $email=myid@mycompany.com

       Everything after the equal sign (=) is considered part  of
       the  value.   Variables	can  be used in the definition of
       other variables.  As a special case, $$ will evaluate to a
       single dollar sign ($).

       The  special  variable  SIGWIDTH  can  be  used to set the
       desired output  width  of  the  generated  signature.   By
       default,  this variable has the value "79".  There is also
       a BLANK variable you can place  on  a  line  to	create	a
       totally empty line when the signature is output.


       Including Other Files

       You  can tell Signify to read another file in place of the
       current line with a command like:

	   % include $HOME/.signify-quotes

       For convienence, you can use a tilde (~) instead of  $HOME
       to read a file relative to your home directory.


       Creating Alternates

       An  unlimited  number  of "alternates" can be specified by
       using the "{", "|", and "}" commands.  When the	signature
       is generated, only one of all the possible alternates will
       be output.  For example:

	   % {
	   This is the first possibility.
	   % |
	   This is the second possibility.
	   % |
	   This is the third (and last) possibility.
	   Note that alternatives can span multiple lines.
	   % }


       Creating Columns

       Signify will  automatically  create  side-by-side  columns
       with  nice,  even  spacing  by using the "(", "|", and ")"
       commands.  When output, everything will be padded out with
       spaces to fit nicely on the line.  For example:





	   % (
	   This is the
	   first column.
	   % |
	   This is the second.
	   % |
	   This is the third
	   (and last) column.
	   % )


       Nesting Sections

       Alternates  and columns can be nested to any depth, though
       this can quickly become unwieldy and may not work  exactly
       as  expected, especially with columns.  As a general rule,
       only supply alignment options (eg. "center",  "right")  at
       the  most  outside  level  to do any text formatting.  For
       example, if supplying multiple "alternates" within a  col-
       umn,  put  the  alignment options on the column and not on
       the alternates.


       Section Command Options

       The "alternates" and "columns" commands can  take  options
       to alter how they behave.  The following is a list of sup-
       ported options and what they do, though not all have mean-
       ing  for  both  types of section.  Multiple options can be
       specified by separating them with a comma (,).


       bottom push the following lines of text to the bottom of a
	      column  should it have fewer lines than the longest
	      column.  This option has no meaning to "alternates"
	      sections.


       center adjust  the  following  lines to be centered on the
	      page or in the column.  When  used  in  an  "alter-
	      nates"  section,	an  additional "=<number>" can be
	      used  to	specify  what  column  to  center  around
	      instead of the middle of the page.


       exec   treat  the  following  lines  not  as  text  to  be
	      included in the column or alternate,  but  as  com-
	      mands  to  be executed by the shell.  For each com-
	      mand executed, if its return status is 0	then  the
	      output  it produced is included at that point, oth-
	      erwise the output is discarded.  Any included  text
	      is  then	aligned,  etc. as usual.  This command is
	      most useful for inserting random	quotes	generated
	      by programs such as fortune(6).


       left   adjust  the following lines so they sit at the left
	      margin.  This is the default  horizontal	alignment
	      and most closely reflects how the lines are entered
	      into the	.signify  file	itself.   Note	that  pad
	      spaces will still be placed on both sides of a col-
	      umn with this type of alignment unless the minwidth
	      option is also specified.




       minwidth
	      do  not pad the left and right sides of this column
	      when placing next to other columns.  This is useful
	      for  building  column  separator lines and the like
	      that are not really  part  of  the  content.   This
	      option has no meaning to "alternates" sections.


       repeat output  the  following lines multiple times to fill
	      all lines in the column.	This is useful for build-
	      ing  column  separator  lines and the like that are
	      just a repeated sequence.   A  multi-line  sequence
	      can  be specified and only those lines necessary to
	      fill  the  column  will  be  output.   The   entire
	      sequence	will  be  output in its entirety at least
	      once, however.   This  option  has  no  meaning  to
	      "alternates" sections.


       right  adjust the following lines so they sit at the right
	      margin.  Note that pad spaces will still be  placed
	      on  both sides of a column with this type of align-
	      ment unless the minwidth option is also  specified.


       top    push  the  following  lines of text to the top of a
	      column should it have fewer lines than the  longest
	      column.	This is the default action if no vertical
	      centering is specified.  This option has no meaning
	      to "alternates" sections.


       vcenter
	      push  the  following  lines of text in the vertical
	      center of a column should it have fewer lines  than
	      the  longest column.  This option has no meaning to
	      "alternates" sections.


       weight=<number>
	      change the likelihood a  given  alternate  will  be
	      chosen.  The chance of any specific alternate being
	      chosen is the given <number> divided by  the  total
	      of  all  weights.   If  not  specified,  the weight
	      defaults to 1.0.	Decimal numbers and numbers  less
	      that  1.0  are allowed.  This option has no meaning
	      to "columns" sections.


THE COST OF FREE SOFTWARE
       Let's face it: Somebody has to pay for all  software  that
       gets  written.  Whether it is the time donated by the pro-
       grammer or the salary donated by the  company,  everything
       has its cost.  Signify has been made available to the gen-
       eral public in the hope that it will be	useful	and  thus
       help raise the visibility of the people that sponsored its
       creation.  In this way, the cost of  creating  Signify  is
       offset  by  the publicity gained.  If you use this program
       and would like to further the development  of  such  soft-
       ware,  it is asked (but by no means required) that you put
       something like the following in the quotes section of your
       .signify file.

	   % | center, weight=0.1
	   Generated by $PROGRAM.  For this and more, visit $WEBSITE

       (for single-line quote)	or  (for multi-line in a column)

	   % | weight=0.1
	   This signature was automatically generated with
	   $PROGRAM.  For this and other cool products,
	   check out $WEBSITE

       These are weighted very low (though you are more than wel-
       come to increase these weightings :-) and will  thus  show
       up in your signature only occasionally.	The variables are
       defined internal to Signify and provide the  program  name
       (including  version  number) and the web site where it can
       be found.  We thank you for your support!


BUGS
       Please report any bugs to: bcwhite@pobox.com


AUTHOR
       Signify	was  written  and  documented  by   Brian   White
       <bcwhite@pobox.com> on August 24th, 1996.

COPYRIGHT
       Signify	has  been  placed  in the public domain, the only
       true "free".  It would be  apprecated  if  copies  of  any
       improvements  or  bug-fixes would be sent to the author in
       order to be incorporated into the main upstream	code  and
       propogated to all users of this software.



96.08.24	   Public domain by Brian White        SIGNIFY(1)
