1 /* Sample XDR specification from RFC 1832 Section 5.5 */
2 
3 const MAXUSERNAME = 32;     /* max length of a user name */
4 const MAXFILELEN = 65535;   /* max length of a file      */
5 const MAXNAMELEN = 255;     /* max length of a file name */
6 
7 /*
8  * Types of files:
9  */
10 enum filekind {
11    TEXT = 0,       /* ascii data */
12    DATA = 1,       /* raw data   */
13    EXEC = 2        /* executable */
14 };
15 
16 /*
17  * File information, per kind of file:
18  */
19 union filetype switch (filekind kind) {
20 case TEXT:
21    void;                           /* no extra information */
22 case DATA:
23    string creator<MAXNAMELEN>;     /* data creator         */
24 case EXEC:
25    string interpretor<MAXNAMELEN>; /* program interpretor  */
26 };
27 
28 /*
29  * A complete file:
30  */
31 struct file {
32    string filename<MAXNAMELEN>; /* name of file    */
33    filetype type;               /* info about file */
34    string owner<MAXUSERNAME>;   /* owner of file   */
35    opaque data<MAXFILELEN>;     /* file data       */
36 };
37