URI: 
       tproto.3 - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       tproto.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)