plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

proto.3 (2947B)


      1 .TH PROTO 3
      2 .SH NAME
      3 rdproto \- parse and process a proto file listing
      4 .SH SYNOPSIS
      5 .nf
      6 .ft L
      7 #include <u.h>
      8 #include <libc.h>
      9 #include <disk.h>
     10 .ft
     11 .PP
     12 .B
     13 typedef void Protoenum(char *new, char *old, Dir *d, void *a)
     14 .PP
     15 .B
     16 typedef void Protowarn(char *msg, void *a)
     17 .PP
     18 .B
     19 int rdproto(char *proto, char *root, Protoenum *enm,
     20 .br
     21 .B
     22                          Protowarn *warn, void *a)
     23 .SH DESCRIPTION
     24 .I Rdproto
     25 reads and interprets the named
     26 .I proto
     27 file relative to the
     28 root directory
     29 .IR root .
     30 .PP
     31 Each line of the
     32 .I proto
     33 file specifies a file to copy.
     34 Blank lines and lines beginning with
     35 .B #
     36 are ignored.
     37 Indentation (usually tabs) is significant,
     38 with each level of indentation corresponding to a level in the file tree.
     39 Fields within a line are separated by white space.
     40 The first field is the last path element in the destination file tree.
     41 The second field specifies the permissions.
     42 The third field is the owner of the file,
     43 and the fourth is the group owning the file.
     44 The fifth field is the name of the file from which to copy;
     45 this file is read from the current name space,
     46 not the source file tree.
     47 All fields except the first are optional.
     48 Specifying
     49 .B -
     50 for permissions, owner, or group
     51 causes
     52 .I rdproto
     53 to fetch the corresponding information
     54 from the file rather than override it.
     55 (This is the default behavior when the fields
     56 are not present; explicitly specifying
     57 .B -
     58 is useful when one wishes to set, say,
     59 the file owner without setting the permissions.)
     60 .PP
     61 Names beginning with a
     62 .L $
     63 are expanded as environment variables.
     64 If the first file specified in a directory is
     65 .LR * ,
     66 all of the files in that directory are considered listed.
     67 If the first file is
     68 .LR + ,
     69 all of the files are copied, and all subdirectories
     70 are recursively considered listed.
     71 All files are considered relative to
     72 .IR root .
     73 .PP
     74 For each file named by the
     75 .IR proto ,
     76 .I enm
     77 is called with
     78 .I new
     79 pointing at the name of the file (without the root prefix),
     80 .I old
     81 pointing at the name of the source file (with the root prefix,
     82 when applicable),
     83 and
     84 .I Dir
     85 at the desired directory information for the new file.
     86 Only the
     87 .BR name ,
     88 .BR uid ,
     89 .BR gid ,
     90 .BR mode ,
     91 .BR mtime ,
     92 and
     93 .B length
     94 fields are guaranteed to be valid.
     95 The argument
     96 .I a
     97 is the same argument passed to
     98 .IR rdproto ;
     99 typically it points at some extra state
    100 used by the enumeration function.
    101 .PP
    102 When files or directories do not exist or
    103 cannot be read by
    104 .IR rdproto ,
    105 it formats a warning message, calls
    106 .IR warn ,
    107 and continues processing;
    108 if
    109 .I warn
    110 is nil,
    111 .I rdproto
    112 prints the warning message to standard error.
    113 .PP
    114 .I Rdproto
    115 returns zero
    116 if
    117 .I proto
    118 was processed, \-1 if it could not be opened.
    119 .SH FILES
    120 .TF /sys/lib/sysconfig/proto/portproto
    121 .TP
    122 .B /sys/lib/sysconfig/proto/
    123 directory of prototype files.
    124 .TP
    125 .B /sys/lib/sysconfig/proto/portproto
    126 generic prototype file.
    127 .SH SOURCE
    128 .B \*9/src/libdisk/proto.c
    129 .SH SEE ALSO
    130 .MR mk9660 (1) ,
    131 Plan 9's
    132 .IR mkfs (8)