123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- .TH PROTO 2
- .SH NAME
- rdproto \- parse and process a proto file listing
- .SH SYNOPSIS
- .nf
- .ft L
- #include <u.h>
- #include <libc.h>
- #include <disk.h>
- .ft
- .PP
- .B
- typedef void Protoenum(char *new, char *old, Dir *d, void *a)
- .PP
- .B
- typedef void Protowarn(char *msg, void *a)
- .PP
- .B
- int rdproto(char *proto, char *root, Protoenum *enm,
- .br
- .B
- Protowarn *warn, void *a)
- .SH DESCRIPTION
- .I Rdproto
- reads and interprets the named
- .I proto
- file relative to the
- root directory
- .IR root .
- .PP
- Each line of the
- .I proto
- file specifies a file to copy.
- Blank lines and lines beginning with
- .B #
- are ignored.
- Indentation (usually tabs) is significant,
- with each level of indentation corresponding to a level in the file tree.
- Fields within a line are separated by white space.
- The first field is the last path element in the destination file tree.
- The second field specifies the permissions.
- The third field is the owner of the file,
- and the fourth is the group owning the file.
- The fifth field is the name of the file from which to copy;
- this file is read from the current name space,
- not the source file tree.
- All fields except the first are optional.
- Specifying
- .B -
- for permissions, owner, or group
- causes
- .I rdproto
- to fetch the corresponding information
- from the file rather than override it.
- (This is the default behavior when the fields
- are not present; explicitly specifying
- .B -
- is useful when one wishes to set, say,
- the file owner without setting the permissions.)
- .PP
- Names beginning with a
- .L $
- are expanded as environment variables.
- If the first file specified in a directory is
- .LR * ,
- all of the files in that directory are considered listed.
- If the first file is
- .LR + ,
- all of the files are copied, and all subdirectories
- are recursively considered listed.
- All files are considered relative to
- .IR root .
- .PP
- For each file named by the
- .IR proto ,
- .I enm
- is called with
- .I new
- pointing at the name of the file (without the root prefix),
- .I old
- pointing at the name of the source file (with the root prefix,
- when applicable),
- and
- .I Dir
- at the desired directory information for the new file.
- Only the
- .BR name ,
- .BR uid ,
- .BR gid ,
- .BR mode ,
- .BR mtime ,
- and
- .B length
- fields are guaranteed to be valid.
- The argument
- .I a
- is the same argument passed to
- .IR rdproto ;
- typically it points at some extra state
- used by the enumeration function.
- .PP
- When files or directories do not exist or
- cannot be read by
- .IR rdproto ,
- it formats a warning message, calls
- .IR warn ,
- and continues processing;
- if
- .I warn
- is nil,
- .I rdproto
- prints the warning message to standard error.
- .PP
- .I Rdproto
- returns zero
- if
- .I proto
- was processed, \-1 if it could not be opened.
- .SH FILES
- .TF /sys/lib/sysconfig/proto/portproto
- .TP
- .B /sys/lib/sysconfig/proto/
- directory of prototype files.
- .TP
- .B /sys/lib/sysconfig/proto/portproto
- generic prototype file.
- .SH SOURCE
- .B /sys/src/libdisk/proto.c
- .SH SEE ALSO
- .IR mk9660 (8),
- .IR mkfs (8)
|