


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.



96.08.24	   Public domain by Brian White			1





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


       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  variable SIGWIDTH can be used to set the desired out-
       put width of the generated signature.   By  default,  this
       variable has the value "79".


       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:








96.08.24	   Public domain by Brian White			2





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


	   % {
	   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.


       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.





96.08.24	   Public domain by Brian White			3





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


       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



96.08.24	   Public domain by Brian White			4





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


	      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!





96.08.24	   Public domain by Brian White			5





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


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			6


