Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
BUFFCHAN(8)		   InterNetNews Documentation		     BUFFCHAN(8)

NAME
     buffchan - Buffered file-writing backend for INN

SYNOPSIS
     buffchan  [-bru] [-c lines] [-C seconds] [-d directory] [-f num-fields] [-l
     lines] [-L seconds] [-m map] [-p pid-file] [-s format]

DESCRIPTION
     buffchan reads lines from standard input and copies the initial  fields  in
     each line to the files named by the remaining fields on the line.	buffchan
     is intended to be called by innd as an exploder feed.

     The  input  is  interpreted  as  a sequence 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 and do not con-
     tain any whitespace.  The default number of initial fields is one.

     For each line of input, buffchan writes the initial fields, separated by  a
     space and followed by a newline, to each of the files named in the filename
     fields.   The  output  files  are	kept open and are only flushed or closed
     based on the schedule given by the -c, -C, -l, and -L options.

     As an exploder feed (see newsfeeds(5) for an explanation), buffchan  inter-
     prets lines beginning with an exclamation point as commands.  Besides "!be-
     gin"  (which  only  marks the start of the feed), there are three supported
     commands:

     !flush [site]
	 The flush command closes and reopens all open files.  An optional  site
	 can  be specified, in which case buffchan flushes only that file.  This
	 command is analogous to the "ctlinnd flush" command.  This command  can
	 be sent via innd using "ctlinnd send buffchan-site 'flush site'".

	 Applications can tell that flush has completed by renaming the file be-
	 fore  issuing the command.  When the original file name has reappeared,
	 the flush is  complete.   If  fchmod(3)  is  available,  buffchan  also
	 changes  the  file  to  read-only while it's actively writing to it and
	 changes it back to read/write once it has been closed.  It will  change
	 the mode back to read-only only if it reopens the same file.

     !drop [site]
	 The  drop command is similar to the flush command, except that no files
	 are reopened.	If  given  an  argument,  only	the  specified	site  is
	 dropped;  otherwise,  all sites are dropped.  (Note that a site will be
	 restarted if the input stream mentions the site again.)

	 When a "ctlinnd drop site" command is	sent,  innd  will  automatically
	 forward the command to buffchan if the site is listed as a funnel feed-
	 ing  into  the buffchan exploder.  To drop all sites, use "ctlinnd send
	 buffchan-site drop".

     !readmap
	 The map file specified with the -m option, if given, will be reloaded.

     Once buffchan opens a file, it keeps it open (in the absence of a drop com-
     mand).  The input must therefore never specify more files than the  maximum
     number of files a process may open.

OPTIONS
     -b  Force	the  output to be buffered.  (This is generally the default, but
	 it may depend on the operating system.)  If -b is given, a buffer  size
	 of BUFSIZ (a constant of the system standard I/O library) is used.

     -c lines
	 If  the  -c  flag is given, buffchan will close and reopen a file after
	 every lines lines are written to the file.

     -C seconds
	 If the -C flag is given, buffchan will close and reopen a  file  if  it
	 has been open for more than seconds seconds.

     -d directory
	 By default, buffchan writes its output into the pathoutgoing directory.
	 This  flag may be used to specify a directory the program should change
	 to before starting.  If this flag is used, the default for the -s  flag
	 (see  below) is changed to be a simple %s (in other words, output files
	 are considered to be relative to directory).

     -f num-fields
	 By default, each line is expected to contain one fixed  field	followed
	 by  some  number of filename fields.  If this flag is given, num-fields
	 will be used as the number of initial fixed fields.

     -l lines
	 If the -l flag is given, buffchan will flush  the  output  after  every
	 lines lines are written to a file.

     -L seconds
	 If  the  -L  flag  is given, buffchan will flush each output file every
	 seconds seconds.

     -m map
	 Map files translate the names in the filename fields on each line  into
	 filenames  that should be used instead.  It's used primarily when short
	 names are used in newsfeeds, but the output files should use  the  full
	 domain names of remote peers.

	 In  the  map  file,  blank  lines and lines starting with a number sign
	 ("#") are ignored.  All other lines should have two  host  names  sepa-
	 rated	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
	 used in the example below to the full domain names:

	     # This is a comment
	     uunet:news.uu.net
	     foo:foo.com
	     munnari:munnari.oz.au

     -p pid-file
	 If the -p option is given, buffchan will write a  line  containing  its
	 process ID (in text) to the specified file when it starts.

     -r  By  default,  buffchan  sends its error messages to pathlog/errlog.  To
	 suppress this redirection and send error messages  to	standard  error,
	 use the -r flag.

     -s  The  -s  flag may be used to specify a format that maps a filename from
	 the filename fields at the end of each  line  to  an  actual  filename.
	 This  is  a  sprintf(3)  format string that should contain a single in-
	 stance of %s, which will be replaced with the	value  of  the	filename
	 field	(possibly after mapping with the map file from -m).  The default
	 value is pathoutgoing/%s.

     -u  If the -u flag is used, the output will be unbuffered.

EXAMPLES
     If buffchan is invoked with "-f 2" and given the following input:

	 news.software.nntp <1643@munnari.oz.au> foo uunet
	 news.software.nntp <102060@litchi.foo.com> uunet munnari
	 comp.sources.unix <999@news.foo.com> foo uunet munnari

     then the file foo in pathoutgoing will have these lines:

	 news.software.nntp <1643@munnari.oz.au>
	 comp.sources.unix <999@news.foo.com>

     the file munnari in pathoutgoing will have these lines:

	 news.software.nntp <102060@litchi.foo.com>
	 comp.sources.unix <999@news.foo.com>

     and the file uunet in pathoutgoing will have these lines:

	 news.software.nntp <1643@munnari.oz.au>
	 news.software.nntp <102060@litchi.foo.com>
	 comp.sources.unix <999@news.foo.com>

     Using buffchan this way can be done in newsfeeds with for instance:

	 foo:*,@misc.*:Ap,Tm:buffchan!
	 munnari:*,@rec.*:Ap,Tm:buffchan!
	 uunet:*:Ap,Tm:buffchan!
	 buffchan!:*:Tx,WGm*:<pathbin>/buffchan -f 2

     It will generate the examples above.  See the "W" flag in newsfeeds(5)  for
     how to parameterize the output.

HISTORY
     Written  by  Rich $alz <rsalz@uunet.uu.net> for InterNetNews.  Converted to
     POD by Russ Allbery <eagle@eyrie.org>.

SEE ALSO
     ctlinnd(8), inn.conf(5), innd(8), newsfeeds(5).

INN 2.8.0			   2023-01-18			     BUFFCHAN(8)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=buffchan&sektion=8&manpath=FreeBSD+Ports+15.1.quarterly>

home | help