groff 1.23.0 added .MR to its -man macro package. The NEWS file states
that the inclusion of the macro "was prompted by its introduction to
Plan 9 from User Space's troff in August 2020." From d32deab it seems
that the name for Plan 9 from User Space's implementation was suggested
by groff maintainer G. Brandon Robinson.
Not sure if the intention was to make these definitions compatible, but
it would be nice if they were.
Currently, Plan 9 from User Space's .MR expects its second argument to
be parenthesized. groff's .MR does not. This results in extra
parentheses appearing in manual references when viewing Plan 9 from User
Space's manual pages on a system using groff.
133 lines
2.9 KiB
Groff
133 lines
2.9 KiB
Groff
.TH PROTO 3
|
|
.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 \*9/src/libdisk/proto.c
|
|
.SH SEE ALSO
|
|
.MR mk9660 1 ,
|
|
Plan 9's
|
|
.IR mkfs (8)
|