.TH PROTO 6.SH NAMEproto \- file system prototype.SH DESCRIPTIONA.I protofile defines a file system hierarchy, forprograms that create, copy or operate on them,such as.IR fs (1)or.IR mkfs (8).The.I protofile defines the hierarchy as a set of names relative to anexisting hierarchy, for instance in an existing file system or a list of path namesin an archive.Files in the existing hierarchy that are not specified in the.I protofileare ignored..IR Fsproto (2)provides functions to read a prototype file and enumerate the names it selects in anexisting hierarchy..PPEach line of the.I protofile specifies a file (where the term `file' includes directories).Indentation is significant,with each level of indentation corresponding to a level in the file tree.Each line contains up to five fields separated by white space:.IP.EX.I "name perm uid gid source".EE.PP.I Nameis the last path element in the resulting file tree..I Permspecifies the permissions, as described below..I Uidis the owner of the file,and.I gidis the group owning the file..I Sourceis the name of a file in the current name space(not the source file tree) from which to copy.IR name 'scontent.All fields except.I nameare optional.If a field such as.I permor.I uidis not given, or is given as.LR - ,its value is taken from the existing file..PPA.I namestarting with.L $is taken as a reference to an environment variable (see.IR sh (1)and.IR env (3))and replaced by the value of that variable.If the first.I namein a directory is.LR + ,all of the files are represented, and all subdirectories recursively.If the first.I nameis.LR * ,all of the names in the corresponding existing directory are represented,but only the names of subdirectories, not their content.If the first.I nameis.LR % ,only non-directory names are represented excluding both the names and contentof subdirectories..PP.I Permhas the form:.IP.RB [ d ].RB [ a ].RB [ l ].I oct.PPwhere the optional letters set file attributes.RL ( ddirectory,.L aappend-only, and.L lexclusive-use),and.I octis an octal number giving the permissions for user, group and others(see.IR chmod (1))..SH EXAMPLES.PPDenote all files in a given file system:.IP.EX+.EE.PPDenote all files in the current user's home directory:.IP.EXusr $user.EE.PPSpecify a subset of files in.BR /dis :.IP.EXdis * install * lib arg.dis names.dis.EE.SH FILES.TF /lib/proto/portproto.TP.B /lib/protodirectory of prototype files.TP.B /lib/proto/allprototype for whole hierarchy (ie, line containing.LR + ).TP.B /lib/proto/portprotogeneric prototype file.SH "SEE ALSO".IR fs (1),.IR fsproto (2),.IR kfs (4),.IR mkfs (8)
.TH PROTO 6
.SH NAME
proto \- file system prototype
.SH DESCRIPTION
A
.I proto
file defines a file system hierarchy, for
programs that create, copy or operate on them,
such as
.IR fs (1)
or
.IR mkfs (8).
The
.I proto
file defines the hierarchy as a set of names relative to an
existing hierarchy, for instance in an existing file system or a list of path names
in an archive.
Files in the existing hierarchy that are not specified in the
.I proto
file
are ignored.
.IR Fsproto (2)
provides functions to read a prototype file and enumerate the names it selects in an
existing hierarchy.
.PP
Each line of the
.I proto
file specifies a file (where the term `file' includes directories).
Indentation is significant,
with each level of indentation corresponding to a level in the file tree.
Each line contains up to five fields separated by white space:
.IP
.EX
.I "name perm uid gid source"
.EE
.PP
.I Name
is the last path element in the resulting file tree.
.I Perm
specifies the permissions, as described below.
.I Uid
is the owner of the file,
and
.I gid
is the group owning the file.
.I Source
is the name of a file in the current name space
(not the source file tree) from which to copy
.IR name 's
content.
All fields except
.I name
are optional.
If a field such as
.I perm
or
.I uid
is not given, or is given as
.LR - ,
its value is taken from the existing file.
.PP
A
.I name
starting with
.L $
is taken as a reference to an environment variable (see
.IR sh (1)
and
.IR env (3))
and replaced by the value of that variable.
If the first
.I name
in a directory is
.LR + ,
all of the files are represented, and all subdirectories recursively.
If the first
.I name
is
.LR * ,
all of the names in the corresponding existing directory are represented,
but only the names of subdirectories, not their content.
If the first
.I name
is
.LR % ,
only non-directory names are represented excluding both the names and content
of subdirectories.
.PP
.I Perm
has the form:
.IP
.RB [ d ]
.RB [ a ]
.RB [ l ]
.I oct
.PP
where the optional letters set file attributes
.RL ( d
directory,
.L a
append-only, and
.L l
exclusive-use),
and
.I oct
is an octal number giving the permissions for user, group and others
(see
.IR chmod (1)).
.SH EXAMPLES
.PP
Denote all files in a given file system:
.IP
.EX
+
.EE
.PP
Denote all files in the current user's home directory:
.IP
.EX
usr
$user
.EE
.PP
Specify a subset of files in
.BR /dis :
.IP
.EX
dis
*
install
*
lib
arg.dis
names.dis
.EE
.SH FILES
.TF /lib/proto/portproto
.TP
.B /lib/proto
directory of prototype files
.TP
.B /lib/proto/all
prototype for whole hierarchy (ie, line containing
.LR + )
.TP
.B /lib/proto/portproto
generic prototype file
.SH "SEE ALSO"
.IR fs (1),
.IR fsproto (2),
.IR kfs (4),
.IR mkfs (8)