rsc | 058b011 | 2005-01-03 06:40:20 +0000 | [diff] [blame] | 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 |
rsc | c3674de | 2005-01-11 17:37:33 +0000 | [diff] [blame] | 128 | .B \*9/src/libdisk/proto.c |
rsc | 058b011 | 2005-01-03 06:40:20 +0000 | [diff] [blame] | 129 | .SH SEE ALSO |
rsc | adc93f6 | 2005-01-14 17:37:50 +0000 | [diff] [blame] | 130 | .IR mk9660 (1), |
rsc | 058b011 | 2005-01-03 06:40:20 +0000 | [diff] [blame] | 131 | Plan 9's \fImkfs\fR(8) |