home | help
RCORDER(8)		     System Manager's Manual		      RCORDER(8)

NAME
     rcorder -- print a dependency ordering of interdependent files

SYNOPSIS
     rcorder [-k keep] [-s skip] file ...

DESCRIPTION
     The rcorder utility is designed to print out a dependency ordering of a set
     of  interdependent  files.   Typically  it is used to find an execution se-
     quence for a set of shell scripts in which certain files must  be	executed
     before others.

     Each  file  passed  to  rcorder must be annotated with special lines (which
     look like comments to the shell) which indicate the dependencies the  files
     have  upon certain points in the sequence, known as "conditions", and which
     indicate, for each file, which "conditions" may be expected to be filled by
     that file.

     Within each file, a block containing  a  series  of  "REQUIRE",  "PROVIDE",
     "BEFORE"  and  "KEYWORD"  lines  must  appear.   The format of the lines is
     rigid.  Each line must begin with a single `#', followed by a single space,
     followed by "PROVIDE:", "REQUIRE:", "BEFORE:", or "KEYWORD:".  No deviation
     is permitted.  Each dependency line is then followed by a series of  condi-
     tions,  separated	by  whitespace.  Multiple "PROVIDE", "REQUIRE", "BEFORE"
     and "KEYWORD" lines may appear, but all such lines must  appear  in  a  se-
     quence  without  any intervening lines, as once a line that does not follow
     the format is reached, parsing stops.

     The options are as follows:

     -k      Add the specified keyword to the "keep list".  If any -k option  is
	     given, only those files containing the matching keyword are listed.

     -s      Add  the specified keyword to the "skip list".  If any -s option is
	     given, files containing the matching keyword are not listed.

     An example block follows:

	   # REQUIRE: networking syslog
	   # REQUIRE: usr
	   # PROVIDE: dns nscd

     This block states that the file  in  which  it  appears  depends  upon  the
     "networking",  "syslog",  and  "usr" conditions, and provides the "dns" and
     "nscd" conditions.

     A file may contain zero "PROVIDE" lines, in which case it provides no  con-
     ditions,  and may contain zero "REQUIRE" lines, in which case it has no de-
     pendencies.  There must be at least one file with no  dependencies  in  the
     set of arguments passed to rcorder in order for it to find a starting place
     in the dependency ordering.

DIAGNOSTICS
     The  rcorder utility may print one of the following error messages and exit
     with a non-zero status if it encounters an error while processing the  file
     list.

     Requirement  %s  has  no providers, aborting.  No file has a "PROVIDE" line
     corresponding to a condition present in a "REQUIRE" line in another file.

     Circular dependency on provision %s, aborting.  A set of files has a circu-
     lar dependency which was detected while processing the stated condition.

     Circular dependency on file %s, aborting.	A set of files	has  a	circular
     dependency which was detected while processing the stated file.

BUGS
     The "REQUIRE" keyword is misleading: It doesn't describe which daemons have
     to  be running before a script will be started.  It describes which scripts
     must be placed before it in the dependency ordering.  For example, if  your
     script has a "REQUIRE" on "named", it means the script must be placed after
     the  "named" script in the dependency ordering, not necessarily that it re-
     quires named(8) to be started or enabled.

SEE ALSO
     rc(8)

HISTORY
     The rcorder utility first appeared in NetBSD 1.5.

AUTHORS
     Written by Perry E.  Metzger  <perry@piermont.com>  and  Matthew  R.  Green
     <mrg@eterna.com.au>.

FreeBSD 8.2			  June 9, 2008			      RCORDER(8)

home | help