filechan - file-writing backend for InterNetNews

     filechan [ -d directory ] [ -f fields ] [ -m mapfile ] [ -p pidfile ]

     Filechan reads lines from standard input and  copies  certain  fields  in
     each  line into files named by other fields within the line.  Filechan is
     intended to be called by innd(8)  as a channel feed.  (It is  not  a  full
     exploder and does not accept commands; see newsfeeds(5)  for a description
     of the difference and buffchan(8)  for an exploder program.)

     Filechan input is interpreted as a set of lines.  Each  line  contains  a
     fixed number of initial fields, followed by a variable number of filename
     fields.  All fields in a line are separated by whitespace.   The  default
     number of initial fields is one.

     For each line of input, filechan writes the initial fields, separated  by
     whitespace  and  followed by a newline, to each of the files named in the
     filename fields.  When writing to a file, filechan  opens  it  in  append
     mode  and tries to lock it and change the ownership to the user and group
     who owns the directory where the file is being written.


     -f   The ``-f'' flag may be used to specify a different number of fields.

     -d   By  default,  filechan  writes  its  arguments  into  the  directory
          <config$_PATH_BATCHDIR>  (typically /var/news/spool/out.going.)  The
          ``-d'' flag may be used to specify a directory  the  program  should
          change to before starting.

     -p   If the ``-p'' flag is used, the program will write a line containing
          its process ID (in text) to the specified file.

     If filechan is invoked with ``-f 2'' and given the following input:
          news/software/b/132 <> foo uunet
          news/software/b/133 <> uunet munnari
          comp/sources/unix/2002 <> foo uunet munnari

     Then the file foo will have these lines:
          news/software/b/132 <>
          comp/sources/unix/2002 <>

     the file munnari will have these lines:
          news/software/b/133 <>
          comp/sources/unix/2002 <>

     and the file uunet will have these lines:
          news/software/b/132 <>
          news/software/b/133 <>
          comp/sources/unix/2002 <>

     Because the  time  window  in  which  a  file  is  open  is  very  small,
     complicated  flushing  and  locking  protocols  are  not  needed; a mv(1)
     followed by a sleep(1) for a couple of seconds is sufficient.

     -m   A map file may be specified by using the ``-m'' flag.   Blank  lines
          and  lines  starting  with  a  number sign (``#'') are ignored.  All
          other lines should have two host names separated by  a  colon.   The
          first  field  is  the  name that may appear in the input stream; the
          second field names the file to be used when the name  in  the  first
          field  appears.   For example, the following map file may be used to
          map the short names above to the full domain names:
               # This is a comment

     Written by Robert Elz  <>,  flags  added  by  Rich  $alz
     <>.  This is revision 1.19, dated 1996/10/29.

     buffchan(8) , innd(8) , newsfeeds(5) .

You can find a summary and links related to this topic
as part of the Mib Software Usenet RKT.