Annotation of researchv10no/netfs/libnetb/rf.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * remote file access library
                      3:  * for building file system daemons
                      4:  */
                      5: 
                      6: typedef struct {
                      7:        char *fs;       /* fs-specific local data */
                      8:        long ino;
                      9:        char dev;
                     10:        char type;      /* directory or regular */
                     11:        short mode;
                     12:        short nlink;
                     13:        short uid, gid;
                     14:        short rdev;     /* is this useful? */
                     15:        long size;
                     16:        long ta;
                     17:        long tm;
                     18:        long tc;
                     19: } Rfile;
                     20: 
                     21: extern int fserrno;
                     22: extern int rfdebug;
                     23: extern char *rfclient;
                     24: 
                     25: /*
                     26:  * service routines
                     27:  * provided by the user,
                     28:  * but this is what they should look like
                     29:  */
                     30: Rfile *fsinit();       /* (int argc, char **argv) */
                     31: Rfile *fswalk();       /* (Rfile *dir, char *name) */
                     32: Rfile *fscreate();     /* (Rfile *dir, char *newname, int mode, uid, gid) */
                     33: int fsdelete();                /* (Rfile *dir, char *name) */
                     34: int fslink();          /* (Rfile *dir, char *newname, Rfile *ofile) */
                     35: int fsmkdir();         /* (Rfile *dir, char *name) */
                     36: int fsrmdir();         /* (Rfile *dir, char *name, int mode, uid, gid) */
                     37: int fsdone();          /* (Rfile *f) -- discard this Rfile */
                     38: int fsstat();          /* (Rfile *f) -- fill it in with stat info */
                     39: int fsread();          /* (Rfile *f, long off, char *buf, int len) */
                     40: int fswrite();         /* (Rfile *f, long off, char *buf, int len) */
                     41: int fsdirread();       /* (Rfile *f, long off, char *buf, int len, long *newoff) */
                     42: int fsupdate();                /* (Rfile *f, Rfile *attr) -- copy attributes from attr */
                     43:                        /* mode, size, uid, gid, ta, tm */
                     44: 
                     45: /*
                     46:  * permission mapping
                     47:  */
                     48: 
                     49: /*
                     50:  * local name to local ID mapping
                     51:  */
                     52: typedef struct {
                     53:        char name[9];
                     54:        short id;
                     55: } Idmap;
                     56: 
                     57: /*
                     58:  * local name to remote name mapping;
                     59:  * used only for exception list
                     60:  */
                     61: typedef struct {
                     62:        char sname[9];
                     63:        char cname[9];
                     64:        int sid;
                     65: } Namemap;
                     66: 
                     67: Idmap *rfmkidmap();    /* (char *filename, Namemap *exlist) */
                     68: extern Idmap *rfuidmap, *rfgidmap;
                     69: extern int rfuid, rfgid;
                     70: extern int rfotherdeny;
                     71: 
                     72: #define        RFNOID  (-1)    /* unmapped user- or group-id */
                     73: 
                     74: /*
                     75:  * file modes
                     76:  * these correspond to V7 Unix
                     77:  * only the low nine bits (permissions) are used by the library
                     78:  * other bits will be passed literally to the client
                     79:  * if it expects unix-like modes
                     80:  */
                     81: #define        RFPRD   04              /* read permission */
                     82: #define        RFPWR   02              /* write permission */
                     83: #define        RFPEX   01              /* execute permission */
                     84: #define        RFPDS   RFPEX           /* directory search permission */
                     85: 
                     86: #define        RFPOTHER        0       /* shift to make `other' permissions */
                     87: #define        RFPGROUP        3       /* shift to make `group' permissions */
                     88: #define        RFPOWNER        6       /* shift to make `owner' permissions */
                     89: 
                     90: /*
                     91:  * file types
                     92:  * other types are just not allowed for now
                     93:  * (but some protocols may sneak them through in the mode)
                     94:  */
                     95: #define        RFTREG  0       /* regular file */
                     96: #define        RFTDIR  1       /* directory */
                     97: 
                     98: /*
                     99:  * error codes in fserrno
                    100:  * these intentionally match Unix errno values,
                    101:  * and in fact errno values will usually do,
                    102:  * but the library doesn't promise to preserve
                    103:  * exact values that aren't here
                    104:  */
                    105: 
                    106: #define        RFEOWNER        1       /* not file owner */
                    107: #define        RFENOENT        2       /* no such file or directory */
                    108: #define        RFEIO           5       /* general I/O error */
                    109: #define        RFENXIO         6       /* no such file address */
                    110: #define        RFEACCES        13      /* no permission */
                    111: #define        RFEBUSY         16      /* something is in use and can't be used again */
                    112: #define        RFEEXIST        17      /* file exists when it shouldn't */
                    113: #define        RFEXDEV         18      /* link across devices (or just not allowed) */
                    114: #define        RFENOTDIR       20      /* not a directory and should be */
                    115: #define        RFEISDIR        21      /* is a directory and shouldn't be */
                    116: #define        RFEINVAL        22      /* invalid arg or function; catchall for internal errors */
                    117: #define        RFENOSPC        28      /* no space on disk or in buffer (dirread) */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.