1*045e0ed3SDavid van Moolenbroek.\" $NetBSD: rcorder.8,v 1.10 2014/03/18 18:20:39 riastradh Exp $ 2*045e0ed3SDavid van Moolenbroek.\" 3*045e0ed3SDavid van Moolenbroek.\" Copyright (c) 1998 4*045e0ed3SDavid van Moolenbroek.\" Perry E. Metzger. All rights reserved. 5*045e0ed3SDavid van Moolenbroek.\" 6*045e0ed3SDavid van Moolenbroek.\" Redistribution and use in source and binary forms, with or without 7*045e0ed3SDavid van Moolenbroek.\" modification, are permitted provided that the following conditions 8*045e0ed3SDavid van Moolenbroek.\" are met: 9*045e0ed3SDavid van Moolenbroek.\" 1. Redistributions of source code must retain the above copyright 10*045e0ed3SDavid van Moolenbroek.\" notice, this list of conditions and the following disclaimer. 11*045e0ed3SDavid van Moolenbroek.\" 2. Redistributions in binary form must reproduce the above copyright 12*045e0ed3SDavid van Moolenbroek.\" notice, this list of conditions and the following disclaimer in the 13*045e0ed3SDavid van Moolenbroek.\" documentation and/or other materials provided with the distribution. 14*045e0ed3SDavid van Moolenbroek.\" 3. All advertising materials mentioning features or use of this software 15*045e0ed3SDavid van Moolenbroek.\" must display the following acknowledgment: 16*045e0ed3SDavid van Moolenbroek.\" This product includes software developed for the NetBSD Project 17*045e0ed3SDavid van Moolenbroek.\" by Perry E. Metzger. 18*045e0ed3SDavid van Moolenbroek.\" 4. The name of the author may not be used to endorse or promote products 19*045e0ed3SDavid van Moolenbroek.\" derived from this software without specific prior written permission. 20*045e0ed3SDavid van Moolenbroek.\" 21*045e0ed3SDavid van Moolenbroek.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 22*045e0ed3SDavid van Moolenbroek.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 23*045e0ed3SDavid van Moolenbroek.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 24*045e0ed3SDavid van Moolenbroek.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 25*045e0ed3SDavid van Moolenbroek.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 26*045e0ed3SDavid van Moolenbroek.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27*045e0ed3SDavid van Moolenbroek.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28*045e0ed3SDavid van Moolenbroek.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29*045e0ed3SDavid van Moolenbroek.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 30*045e0ed3SDavid van Moolenbroek.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31*045e0ed3SDavid van Moolenbroek.\" 32*045e0ed3SDavid van Moolenbroek.\" 33*045e0ed3SDavid van Moolenbroek.Dd April 23, 2003 34*045e0ed3SDavid van Moolenbroek.Dt RCORDER 8 35*045e0ed3SDavid van Moolenbroek.Os 36*045e0ed3SDavid van Moolenbroek.Sh NAME 37*045e0ed3SDavid van Moolenbroek.Nm rcorder 38*045e0ed3SDavid van Moolenbroek.Nd print a dependency ordering of interdependent files 39*045e0ed3SDavid van Moolenbroek.Sh SYNOPSIS 40*045e0ed3SDavid van Moolenbroek.Nm 41*045e0ed3SDavid van Moolenbroek.Op Fl k Ar keep 42*045e0ed3SDavid van Moolenbroek.Op Fl s Ar skip 43*045e0ed3SDavid van Moolenbroek.Ar 44*045e0ed3SDavid van Moolenbroek.Sh DESCRIPTION 45*045e0ed3SDavid van Moolenbroek.Nm 46*045e0ed3SDavid van Moolenbroekis designed to print out a dependency ordering of a set of 47*045e0ed3SDavid van Moolenbroekinterdependent files. 48*045e0ed3SDavid van MoolenbroekTypically it is used to find an execution sequence for a set of 49*045e0ed3SDavid van Moolenbroekshell scripts in which certain files must be executed before others. 50*045e0ed3SDavid van Moolenbroek.Pp 51*045e0ed3SDavid van MoolenbroekEach file passed to 52*045e0ed3SDavid van Moolenbroek.Nm 53*045e0ed3SDavid van Moolenbroekshould be annotated with special lines (which look like comments to the 54*045e0ed3SDavid van Moolenbroekshell) which indicate the dependencies the files have upon certain 55*045e0ed3SDavid van Moolenbroekpoints in the sequence, known as 56*045e0ed3SDavid van Moolenbroek.Dq conditions , 57*045e0ed3SDavid van Moolenbroekand which indicate, for each file, which 58*045e0ed3SDavid van Moolenbroek.Dq conditions 59*045e0ed3SDavid van Moolenbroekmay be expected to be filled by that file. 60*045e0ed3SDavid van Moolenbroek.Pp 61*045e0ed3SDavid van MoolenbroekWithin each file, a block containing a series of 62*045e0ed3SDavid van Moolenbroek.Dq REQUIRE , 63*045e0ed3SDavid van Moolenbroek.Dq PROVIDE , 64*045e0ed3SDavid van Moolenbroek.Dq BEFORE 65*045e0ed3SDavid van Moolenbroekand 66*045e0ed3SDavid van Moolenbroek.Dq KEYWORD 67*045e0ed3SDavid van Moolenbroeklines should appear. 68*045e0ed3SDavid van MoolenbroekThe format of the lines is rigid. 69*045e0ed3SDavid van MoolenbroekEach line must begin with a single 70*045e0ed3SDavid van Moolenbroek.Dq # , 71*045e0ed3SDavid van Moolenbroekfollowed by a single space, followed by 72*045e0ed3SDavid van Moolenbroek.Dq PROVIDE: , 73*045e0ed3SDavid van Moolenbroek.Dq REQUIRE: , 74*045e0ed3SDavid van Moolenbroek.Dq BEFORE: , 75*045e0ed3SDavid van Moolenbroekor 76*045e0ed3SDavid van Moolenbroek.Dq KEYWORD: . 77*045e0ed3SDavid van MoolenbroekNo deviation is permitted. 78*045e0ed3SDavid van MoolenbroekEach dependency line is then followed by a series of conditions, 79*045e0ed3SDavid van Moolenbroekseparated by whitespace. 80*045e0ed3SDavid van MoolenbroekMultiple 81*045e0ed3SDavid van Moolenbroek.Dq PROVIDE , 82*045e0ed3SDavid van Moolenbroek.Dq REQUIRE , 83*045e0ed3SDavid van Moolenbroek.Dq BEFORE 84*045e0ed3SDavid van Moolenbroekand 85*045e0ed3SDavid van Moolenbroek.Dq KEYWORD 86*045e0ed3SDavid van Moolenbroeklines may appear, but all such lines must appear in a sequence without 87*045e0ed3SDavid van Moolenbroekany intervening lines, as once a line that does not follow the format 88*045e0ed3SDavid van Moolenbroekis reached, parsing stops. 89*045e0ed3SDavid van Moolenbroek.Pp 90*045e0ed3SDavid van MoolenbroekThe options are as follows: 91*045e0ed3SDavid van Moolenbroek.Bl -tag -width Ds 92*045e0ed3SDavid van Moolenbroek.It Fl k 93*045e0ed3SDavid van MoolenbroekAdd the specified keyword to the 94*045e0ed3SDavid van Moolenbroek.Dq keep list . 95*045e0ed3SDavid van MoolenbroekIf any 96*045e0ed3SDavid van Moolenbroek.Fl k 97*045e0ed3SDavid van Moolenbroekoption is given, only those files containing the matching keyword are listed. 98*045e0ed3SDavid van Moolenbroek.It Fl s 99*045e0ed3SDavid van MoolenbroekAdd the specified keyword to the 100*045e0ed3SDavid van Moolenbroek.Dq skip list . 101*045e0ed3SDavid van MoolenbroekIf any 102*045e0ed3SDavid van Moolenbroek.Fl s 103*045e0ed3SDavid van Moolenbroekoption is given, files containing the matching keyword are not listed. 104*045e0ed3SDavid van Moolenbroek.El 105*045e0ed3SDavid van Moolenbroek.Pp 106*045e0ed3SDavid van Moolenbroek An example block follows: 107*045e0ed3SDavid van Moolenbroek.Bd -literal -offset indent 108*045e0ed3SDavid van Moolenbroek# REQUIRE: networking syslog 109*045e0ed3SDavid van Moolenbroek# REQUIRE: usr 110*045e0ed3SDavid van Moolenbroek# PROVIDE: dns nscd 111*045e0ed3SDavid van Moolenbroek.Ed 112*045e0ed3SDavid van Moolenbroek.Pp 113*045e0ed3SDavid van MoolenbroekThis block states that the file in which it appears depends upon the 114*045e0ed3SDavid van Moolenbroek.Dq networking , 115*045e0ed3SDavid van Moolenbroek.Dq syslog , 116*045e0ed3SDavid van Moolenbroekand 117*045e0ed3SDavid van Moolenbroek.Dq usr 118*045e0ed3SDavid van Moolenbroekconditions, and provides the 119*045e0ed3SDavid van Moolenbroek.Dq dns 120*045e0ed3SDavid van Moolenbroekand 121*045e0ed3SDavid van Moolenbroek.Dq nscd 122*045e0ed3SDavid van Moolenbroekconditions. 123*045e0ed3SDavid van Moolenbroek.Pp 124*045e0ed3SDavid van MoolenbroekA file may contain zero 125*045e0ed3SDavid van Moolenbroek.Dq PROVIDE 126*045e0ed3SDavid van Moolenbroeklines, in which case it provides no conditions, and may contain zero 127*045e0ed3SDavid van Moolenbroek.Dq REQUIRE 128*045e0ed3SDavid van Moolenbroeklines, in which case it has no dependencies. 129*045e0ed3SDavid van MoolenbroekA file containing no 130*045e0ed3SDavid van Moolenbroek.Dq PROVIDE , 131*045e0ed3SDavid van Moolenbroek.Dq REQUIRE , 132*045e0ed3SDavid van Moolenbroekor 133*045e0ed3SDavid van Moolenbroek.Dq BEFORE 134*045e0ed3SDavid van Moolenbroeklines may be output at an arbitrary position in the dependency 135*045e0ed3SDavid van Moolenbroekordering. 136*045e0ed3SDavid van Moolenbroek.Pp 137*045e0ed3SDavid van MoolenbroekThere must be at least one file with no dependencies in the set of 138*045e0ed3SDavid van Moolenbroekarguments passed to 139*045e0ed3SDavid van Moolenbroek.Nm 140*045e0ed3SDavid van Moolenbroekin order for it to find a starting place in the dependency ordering. 141*045e0ed3SDavid van Moolenbroek.Sh DIAGNOSTICS 142*045e0ed3SDavid van Moolenbroek.Nm 143*045e0ed3SDavid van Moolenbroekmay print one of the following error messages and exit with a non-zero 144*045e0ed3SDavid van Moolenbroekstatus if it encounters an error while processing the file list. 145*045e0ed3SDavid van Moolenbroek.Bl -diag 146*045e0ed3SDavid van Moolenbroek.It "Requirement %s has no providers, aborting." 147*045e0ed3SDavid van MoolenbroekNo file has a 148*045e0ed3SDavid van Moolenbroek.Dq PROVIDE 149*045e0ed3SDavid van Moolenbroekline corresponding to a condition present in a 150*045e0ed3SDavid van Moolenbroek.Dq REQUIRE 151*045e0ed3SDavid van Moolenbroekline in another file. 152*045e0ed3SDavid van Moolenbroek.It "Circular dependency on provision %s, aborting." 153*045e0ed3SDavid van MoolenbroekA set of files has a circular dependency which was detected while 154*045e0ed3SDavid van Moolenbroekprocessing the stated condition. 155*045e0ed3SDavid van Moolenbroek.It "Circular dependency on file %s, aborting." 156*045e0ed3SDavid van MoolenbroekA set of files has a circular dependency which was detected while 157*045e0ed3SDavid van Moolenbroekprocessing the stated file. 158*045e0ed3SDavid van Moolenbroek.El 159*045e0ed3SDavid van Moolenbroek.Sh SEE ALSO 160*045e0ed3SDavid van Moolenbroek.Xr rc 8 161*045e0ed3SDavid van Moolenbroek.Sh HISTORY 162*045e0ed3SDavid van MoolenbroekThe 163*045e0ed3SDavid van Moolenbroek.Nm 164*045e0ed3SDavid van Moolenbroekprogram first appeared in 165*045e0ed3SDavid van Moolenbroek.Nx 1.5 . 166*045e0ed3SDavid van Moolenbroek.Sh AUTHORS 167*045e0ed3SDavid van Moolenbroek.An -nosplit 168*045e0ed3SDavid van MoolenbroekWritten by 169*045e0ed3SDavid van Moolenbroek.An Perry E. Metzger Aq Mt perry@piermont.com 170*045e0ed3SDavid van Moolenbroekand 171*045e0ed3SDavid van Moolenbroek.An Matthew R. Green Aq Mt mrg@eterna.com.au . 172