Provided by: smail_3.2.0.115-7_i386 bug


       mkpath - make a pathalias output file


       /usr/lib/smail/mkpath [-v] [-V] [-x] [-e] [-n] [ -t trace ] [
       path_config ]
       /usr/lib/smail/dcasehost [ -c ]


       Mkpath creates pathalias(8) output  given  a  configuration  file  that
       describes  the various sources of input that will be used in generating
       this output, and how these sources of input are to be used.   The  name
       of  this  configuration  file is given as the path_config argument.  If
       path_config is -, then a specification will be taken from the  standard
       input.   If  path_config  is  omitted,  then  the default specification
       /etc/smail/maps/mkpath.conf  is  used.   Unless   redirected   in   the
       configuration file, path data is written to the standard output.

       Dcasehost  converts the hostname in a stream of pathalias data to lower
       case.  Normally, dcasehost assumes that the hostname is  in  the  first
       field  in  each line, where a field is delimited by whitespace.  If the
       -c option is specified, then the hostname  is  assumed  to  be  in  the
       second  field.   This  is  for  compatibility  with  the  -c  option to
       pathalias(8).  See the pathalias man page for more information.

       The dcasehost command is intended to be used  only  within  the  mkpath


       The  format of the path configuration file is a set of lines containing
       directives.  Blank lines are ignored and the character ‘‘#’’  begins  a
       comment  which  continues  until  the  end  of  the  line.  The various
       possible directives are described below.

       In these directive descriptions, an argument of arg refers  to  one  of
       the following types of arguments:

       ’literal’        Literal data specified inline.  (single quotes)

       ‘shell-command‘  Take  data  from  the  standard  output  of this shell
                        command.  (back quotes)

       filename ...     Take data from the named file or files.  Files may  be
                        specified using shell globbing notation, with * ?  and

       The ‘shell-command‘ form preserves newlines and whitespace and is  thus
       not  entirely equivalent to usage in sh(1).  The following lines result
       in the same input to pathalias:

              map  ‘cat food‘     # ackpft!
              map  food # oop ack!

       For the ‘shell-command‘ and ’literal’  forms,  the  filename  used  for
       error messages is [stdin].

       map arg
              Specify  map  data to be given as input to pathalias.  Each file
              is preceded by a line containing:
                   file { pathname }
              where pathname is the full pathname  to  the  file.   This  will
              cause  error  messages  from  pathalias  to refer to the correct
              file.  Each file is followed by the line containing:
                   private {}
              to force the end of scope for any private directives within  the
              map files.

       safemap   arg
              This  is  similar to the map directive, and can be used when you
              do not have sufficient control over what the files contain.   If
              a  map file contains the pathalias directives delete and adjust,
              those directives are removed and flagged as errors,  before  the
              file  is  passed to pathalias.  If a map file contains pathalias
              file directives, those directives are simply removed.  No  error
              message is produced in this case.

       delete arg
              Specify hosts, links or networks which are to be deleted at this
              point.  That is, all previous references to any of  these  items
              will be forgotten.

       adjust arg
              Specify  hosts  or networks that add on a surcharge to any route
              though them.  By default, this surcharge  is  4000.   Costs  can
              also  be added to each site as with pathalias.  For example, the
              following is a valid adjust file:
                   walldrug glotz              # default surcharge of 4000
                   kgbvax(1000), kremvax(DEAD) # surcharge of 1000 & DEAD
                   nsavax(FAST)                # reduces cost, FAST < 0
              Be careful when using negative adjust surcharges.  The pathalias
              program will complain if a cost of a link drops below zero.

       dead arg
              Specify hosts, links or networks which are to be assigned a cost
              of DEAD.

       text arg
              Within an execution block, described in  a  later  section,  the
              given  specified  text  is  sent  as  the  standard  input  to a
              pathalias command.  Otherwise, it is  written  to  the  standard
              output for the mkpath command.

       file filename
              Set  the  file  to  be  used  by  pathalias  for error messages,
              starting on the next line of pathalias  input.   The  next  line
              will  be  reported as if it came from the first line of the file
              filename.  The file command does not change where pathalias will
              read  next,  only  what pathalias calls the line should an error

       cd [ dir ]
              By default, the current directory used by mkpath begins  in  the
              directory of the configuration file, or in the current directory
              if the configuration is read from the standard  input.   The  cd
              command  without  a  dir  argument changes to the directory from
              which mkpath was invoked.  A dir arg of - changes the  directory
              to  the default directory based on the name of the configuration
              file.  Otherwise, dir becomes the current directory for file and
              shell command references.

       sh cmd The given shell command is executed.

       pathalias flags
              Process  the pathalias input directives that have been collected
              since the last pathalias or pathsort directive and  execute  the
              pathalias(8)  command  with this input.  The specified flags are
              given as arguments to pathalias.  These flags can  also  contain
              i/o redirection, or pipes to other shell commands.  For example,
              the following is an acceptable use of the pathalias directive:
                   pathalias -l hostname | mkdbm -o paths

       pathsort [ flags ]
              This is equivalent to the following directive:
                   pathalias -i -D | dcasehost | sort -T  /var/mail/tmp  flags
              An example of a potentially useful pathsort directive is:
                   pathsort | sed ’s/!foo!/!foobar!/’
              A  pathsort  directive  is  assumed  to  follow  the  end  of  a
              configuration file if an execution block is not terminated prior
              to the end of file.


       Directives  are  executed  in  blocks.  A map, safemap, delete, adjust,
       dead or file directive starts a block.  Successive directives  continue
       it.  A pathalias or pathsort directive ends a block.  The end of a file
       can end a block, generating an implicit pathsort directive.

       Encountering the end of a block normally results in the execution of  a
       pathalias(8)  command.  The exception is when a end of block command is
       read when no block was started.  In this case the block is ignored.

       When the start of a block is seen, all directives up to the end of  the
       block  are  collected  and fed into the resulting pathalias(8) command.
       Directives such as cd, sh or text  within  a  block  only  effect  that
       block.   Therefore,  a cd directive within a block will only change the
       directory for the remainder of  that  block,  whereas  a  cd  directive
       outside of a block has a global effect.

       Additionally  a text or sh directive will feed its standard output into
       the block’s pathalias command when it is inside a block, while  a  text
       or  sh  directive outside of a block will send its output direct to the
       standard output of the mkpath command.  This later  effect  allows  for
       the injection of literal pathalias output into the output stream.


       The following options are recognized by mkpath:

       -v     The  internal sh(1) commands are executed with a -v option, thus
              echoing the commands that are piped to the shell prior to  their
              being processed.

       -V     Tell any pathalias commands to produce verbose messages.

       -x     Pass  the  -x flag to invocations of the shell, causing commands
              which are about to execute to be echoed.

       -e     Pass the -e flag to invocations of the shell, causing shells  to
              exit  whenever  a  command  returns  a non-zero exit status.  In
              addition, the mkpath program will  exit  when  it  encounters  a
              syntax error or unknown directive.

       -n     Disable   the  execution  of  any  shell  commands  that  mkpath
              generates.  This is useful with the -v option and  disables  the
              -x, -e and -V options.

       -t trace
              Cause the input to pathalias to be copied into the file trace.


       Here is a simple example of a mkpath configuration file:
              # world.conf - configure our map setup to build

              # get the usenet world maps
              cd      /usr/spool/uumaps
              safemap [ud].*

              # merge in the new maps
              cd      /usr/lib/smail/maps
              safemap newmap/*.map

              # delete our site and merge our private map data
              delete  ‘uuname -l‘
       This configuration file can be used for a UUCP gateway host:
              # Pathalias database for a UUCP gateway

              # map information is stored under this directory
              cd /usr/lib/smail

              # build paths to USENET hosts
              map       usenet/[du].*     # grab all published maps, start of block
              delete    ‘uuname -l‘       # delete published references to our site
              dead      dead              # links and sites with cost of DEAD
              map       ourmap            # add our up-to-date map file
              pathsort  >    # end of block

              # build paths for our local domain
              map         # major domain info, start of block
              cd        ../uts            # cd only affects this block
              map        # map for domain
              adjust    ’flaky’           # add 4000 to routes thru flaky
              adjust    ’flako(HOURLY)’   # add HOURLY to routes thru flako
              pathsort  > paths.local     # end of block

              # build a sorted forces file, from the source forces file
              sh        mkline -t forces | dcasehost | sort -u +0 -1 > forces.sort

              # output paths and clean up
              sh        pathmerge forces.sort paths.local
              sh        rm -f forces.sort paths.local  # cleanup


       pathalias(8),  mkline(8),  mkdbm(8),  mkhpath(8),  mkuuwho(8), sort(1),
       sh(1), smail(5), smail(8) and pathmerge(8).


       The first ‘‘#’’ character on a line  begins  a  comment  regardless  of
       whether or not it is within quotes.

       The  -e  option  does  not  stop  all execution, only command execution
       within an instance of the shell created by mkpath.

       Continuation lines are not currently allowed in the configuration file.
       Each command must be on a single line.

       For  errors  reported  by  pathalias  for  input  that  came  from  the
       configuration file itself, the line number reported  is  likely  to  be
       incorrect,  because  the  pathalias  file  cannot be used to set a line
       number within the file.

       If both -V and -t are used, the -V option must precede -t .


       Copyright(C)1987, 1988 Ronald S. Karr and Landon Curt Noll
       Copyright(C)1992 Ronald S. Karr
       See a file COPYING, distributed with the source code, or type smail -bc
       for distribution rights and restrictions associated with this software.