Annotation of researchv10no/cmd/u9fs/conv.c, revision 1.1.1.1

1.1       root        1: #include "u.h"
                      2: #include <sys/types.h>
                      3: #include <sys/stat.h>
                      4: #include "libc.h"
                      5: #include "9p.h"
                      6: 
                      7: extern void    error(char*);
                      8: 
                      9: #define        CHAR(x)         *p++ = f->x
                     10: #define        SHORT(x)        p[0] = f->x; p[1] = f->x>>8; p += 2
                     11: #define        LONG(x)         p[0] = f->x; p[1] = f->x>>8; p[2] = f->x>>16; p[3] = f->x>>24; p += 4
                     12: #define        VLONG(x)        p[0] = f->x; p[1] = f->x>>8; p[2] = f->x>>16; p[3] = f->x>>24;\
                     13:                                p[4] = 0; p[5] = 0; p[6] = 0; p[7] = 0; p += 8
                     14: #define        STRING(x,n)     memmove(p, f->x, n); p += n
                     15: 
                     16: int
                     17: convD2M(Dir *f, char *ap)
                     18: {
                     19:        Uchar *p;
                     20: 
                     21:        p = (Uchar*)ap;
                     22:        STRING(name, sizeof(f->name));
                     23:        STRING(uid, sizeof(f->uid));
                     24:        STRING(gid, sizeof(f->gid));
                     25:        LONG(qid.path);
                     26:        LONG(qid.vers);
                     27:        LONG(mode);
                     28:        LONG(atime);
                     29:        LONG(mtime);
                     30:        VLONG(len.l.length);
                     31:        SHORT(type);
                     32:        SHORT(dev);
                     33:        return p - (Uchar*)ap;
                     34: }
                     35: 
                     36: #undef CHAR
                     37: #undef SHORT
                     38: #undef LONG
                     39: #undef VLONG
                     40: #undef STRING
                     41: #define        CHAR(x)         f->x = *p++
                     42: #define        SHORT(x)        f->x = (p[0] | (p[1]<<8)); p += 2
                     43: #define        LONG(x)         f->x = (p[0] | (p[1]<<8) |\
                     44:                                (p[2]<<16) | (p[3]<<24)); p += 4
                     45: #define        VLONG(x)        f->x = (p[0] | (p[1]<<8) |\
                     46:                                (p[2]<<16) | (p[3]<<24)); p += 8
                     47: #define        STRING(x,n)     memmove(f->x, p, n); p += n
                     48: 
                     49: int
                     50: convM2D(char *ap, Dir *f)
                     51: {
                     52:        Uchar *p;
                     53: 
                     54:        p = (Uchar*)ap;
                     55:        STRING(name, sizeof(f->name));
                     56:        STRING(uid, sizeof(f->uid));
                     57:        STRING(gid, sizeof(f->gid));
                     58:        LONG(qid.path);
                     59:        LONG(qid.vers);
                     60:        LONG(mode);
                     61:        LONG(atime);
                     62:        LONG(mtime);
                     63:        VLONG(len.l.length);
                     64:        SHORT(type);
                     65:        SHORT(dev);
                     66:        return p - (Uchar*)ap;
                     67: }
                     68: 
                     69: #undef CHAR
                     70: #undef SHORT
                     71: #undef LONG
                     72: #undef VLONG
                     73: #undef STRING
                     74: #define        CHAR(x)         f->x = *p++
                     75: #define        SHORT(x)        f->x = (p[0] | (p[1]<<8)); p += 2
                     76: #define        LONG(x)         f->x = (p[0] | (p[1]<<8) |\
                     77:                                (p[2]<<16) | (p[3]<<24)); p += 4
                     78: #define        VLONG(x)        f->x = (p[0] | (p[1]<<8) |\
                     79:                                (p[2]<<16) | (p[3]<<24)); p += 8
                     80: #define        STRING(x,n)     memmove(f->x, p, n); p += n
                     81: 
                     82: int
                     83: convM2S(char *ap, Fcall *f, int n)
                     84: {
                     85:        Uchar *p;
                     86: 
                     87:        p = (Uchar*)ap;
                     88:        CHAR(type);
                     89:        SHORT(tag);
                     90:        switch(f->type)
                     91:        {
                     92:        default:
                     93:                error("bad convM2S type");
                     94: 
                     95:        case Tnop:
                     96:                break;
                     97: 
                     98:        case Tsession:
                     99:                STRING(chal, sizeof(f->chal));
                    100:                break;
                    101: 
                    102:        case Tflush:
                    103:                SHORT(oldtag);
                    104:                break;
                    105: 
                    106:        case Tattach:
                    107:                SHORT(fid);
                    108:                STRING(uname, sizeof(f->uname));
                    109:                STRING(aname, sizeof(f->aname));
                    110:                STRING(ticket, sizeof(f->ticket));
                    111:                STRING(auth, sizeof(f->auth));
                    112:                break;
                    113: 
                    114:        case Tclone:
                    115:                SHORT(fid);
                    116:                SHORT(newfid);
                    117:                break;
                    118: 
                    119:        case Twalk:
                    120:                SHORT(fid);
                    121:                STRING(name, sizeof(f->name));
                    122:                break;
                    123: 
                    124:        case Topen:
                    125:                SHORT(fid);
                    126:                CHAR(mode);
                    127:                break;
                    128: 
                    129:        case Tcreate:
                    130:                SHORT(fid);
                    131:                STRING(name, sizeof(f->name));
                    132:                LONG(perm);
                    133:                CHAR(mode);
                    134:                break;
                    135: 
                    136:        case Tread:
                    137:                SHORT(fid);
                    138:                VLONG(offset);
                    139:                SHORT(count);
                    140:                break;
                    141: 
                    142:        case Twrite:
                    143:                SHORT(fid);
                    144:                VLONG(offset);
                    145:                SHORT(count);
                    146:                p++;    /* pad(1) */
                    147:                f->data = (char*)p; p += f->count;
                    148:                break;
                    149: 
                    150:        case Tclunk:
                    151:                SHORT(fid);
                    152:                break;
                    153: 
                    154:        case Tremove:
                    155:                SHORT(fid);
                    156:                break;
                    157: 
                    158:        case Tstat:
                    159:                SHORT(fid);
                    160:                break;
                    161: 
                    162:        case Twstat:
                    163:                SHORT(fid);
                    164:                STRING(stat, sizeof(f->stat));
                    165:                break;
                    166: 
                    167:        case Tclwalk:
                    168:                SHORT(fid);
                    169:                SHORT(newfid);
                    170:                STRING(name, sizeof(f->name));
                    171:                break;
                    172: /*
                    173:  */
                    174:        case Rnop:
                    175:                break;
                    176: 
                    177:        case Rsession:
                    178:                STRING(chal, sizeof(f->chal));
                    179:                STRING(authid, sizeof(f->authid));
                    180:                STRING(authdom, sizeof(f->authdom));
                    181:                break;
                    182: 
                    183:        case Rerror:
                    184:                STRING(ename, sizeof(f->ename));
                    185:                break;
                    186: 
                    187:        case Rflush:
                    188:                break;
                    189: 
                    190:        case Rattach:
                    191:                SHORT(fid);
                    192:                LONG(qid.path);
                    193:                LONG(qid.vers);
                    194:                STRING(rauth, sizeof(f->rauth));
                    195:                break;
                    196: 
                    197:        case Rclone:
                    198:                SHORT(fid);
                    199:                break;
                    200: 
                    201:        case Rwalk:
                    202:        case Rclwalk:
                    203:                SHORT(fid);
                    204:                LONG(qid.path);
                    205:                LONG(qid.vers);
                    206:                break;
                    207: 
                    208:        case Ropen:
                    209:                SHORT(fid);
                    210:                LONG(qid.path);
                    211:                LONG(qid.vers);
                    212:                break;
                    213: 
                    214:        case Rcreate:
                    215:                SHORT(fid);
                    216:                LONG(qid.path);
                    217:                LONG(qid.vers);
                    218:                break;
                    219: 
                    220:        case Rread:
                    221:                SHORT(fid);
                    222:                SHORT(count);
                    223:                p++;    /* pad(1) */
                    224:                f->data = (char*)p; p += f->count;
                    225:                break;
                    226: 
                    227:        case Rwrite:
                    228:                SHORT(fid);
                    229:                SHORT(count);
                    230:                break;
                    231: 
                    232:        case Rclunk:
                    233:                SHORT(fid);
                    234:                break;
                    235: 
                    236:        case Rremove:
                    237:                SHORT(fid);
                    238:                break;
                    239: 
                    240:        case Rstat:
                    241:                SHORT(fid);
                    242:                STRING(stat, sizeof(f->stat));
                    243:                break;
                    244: 
                    245:        case Rwstat:
                    246:                SHORT(fid);
                    247:                break;
                    248:        }
                    249:        return (ap+n) - (char*)p;
                    250: }
                    251: 
                    252: #undef CHAR
                    253: #undef SHORT
                    254: #undef LONG
                    255: #undef VLONG
                    256: #undef STRING
                    257: #define        CHAR(x)         *p++ = f->x
                    258: #define        SHORT(x)        p[0] = f->x; p[1] = f->x>>8; p += 2
                    259: #define        LONG(x)         p[0] = f->x; p[1] = f->x>>8; p[2] = f->x>>16; p[3] = f->x>>24; p += 4
                    260: #define        VLONG(x)        p[0] = f->x; p[1] = f->x>>8; p[2] = f->x>>16; p[3] = f->x>>24;\
                    261:                                p[4] = 0; p[5] = 0; p[6] = 0; p[7] = 0; p += 8
                    262: #define        STRING(x,n)     memmove(p, f->x, n); p += n
                    263: 
                    264: int
                    265: convS2M(Fcall *f, char *ap)
                    266: {
                    267:        Uchar *p;
                    268: 
                    269:        p = (Uchar*)ap;
                    270:        CHAR(type);
                    271:        SHORT(tag);
                    272:        switch(f->type)
                    273:        {
                    274:        default:
                    275:                return 0;
                    276: 
                    277:        case Tnop:
                    278:                break;
                    279: 
                    280:        case Tsession:
                    281:                STRING(chal, sizeof(f->chal));
                    282:                break;
                    283: 
                    284:        case Tflush:
                    285:                SHORT(oldtag);
                    286:                break;
                    287: 
                    288:        case Tattach:
                    289:                SHORT(fid);
                    290:                STRING(uname, sizeof(f->uname));
                    291:                STRING(aname, sizeof(f->aname));
                    292:                STRING(ticket, sizeof(f->ticket));
                    293:                STRING(auth, sizeof(f->auth));
                    294:                break;
                    295: 
                    296:        case Tclone:
                    297:                SHORT(fid);
                    298:                SHORT(newfid);
                    299:                break;
                    300: 
                    301:        case Twalk:
                    302:                SHORT(fid);
                    303:                STRING(name, sizeof(f->name));
                    304:                break;
                    305: 
                    306:        case Topen:
                    307:                SHORT(fid);
                    308:                CHAR(mode);
                    309:                break;
                    310: 
                    311:        case Tcreate:
                    312:                SHORT(fid);
                    313:                STRING(name, sizeof(f->name));
                    314:                LONG(perm);
                    315:                CHAR(mode);
                    316:                break;
                    317: 
                    318:        case Tread:
                    319:                SHORT(fid);
                    320:                VLONG(offset);
                    321:                SHORT(count);
                    322:                break;
                    323: 
                    324:        case Twrite:
                    325:                SHORT(fid);
                    326:                VLONG(offset);
                    327:                SHORT(count);
                    328:                p++;    /* pad(1) */
                    329:                STRING(data, f->count);
                    330:                break;
                    331: 
                    332:        case Tclunk:
                    333:                SHORT(fid);
                    334:                break;
                    335: 
                    336:        case Tremove:
                    337:                SHORT(fid);
                    338:                break;
                    339: 
                    340:        case Tstat:
                    341:                SHORT(fid);
                    342:                break;
                    343: 
                    344:        case Twstat:
                    345:                SHORT(fid);
                    346:                STRING(stat, sizeof(f->stat));
                    347:                break;
                    348: 
                    349:        case Tclwalk:
                    350:                SHORT(fid);
                    351:                SHORT(newfid);
                    352:                STRING(name, sizeof(f->name));
                    353:                break;
                    354: /*
                    355:  */
                    356:        case Rnop:
                    357:                break;
                    358: 
                    359:        case Rsession:
                    360:                STRING(chal, sizeof(f->chal));
                    361:                STRING(authid, sizeof(f->authid));
                    362:                STRING(authdom, sizeof(f->authdom));
                    363:                break;
                    364: 
                    365:        case Rerror:
                    366:                STRING(ename, sizeof(f->ename));
                    367:                break;
                    368: 
                    369:        case Rflush:
                    370:                break;
                    371: 
                    372:        case Rattach:
                    373:                SHORT(fid);
                    374:                LONG(qid.path);
                    375:                LONG(qid.vers);
                    376:                STRING(rauth, sizeof(f->rauth));
                    377:                break;
                    378: 
                    379:        case Rclone:
                    380:                SHORT(fid);
                    381:                break;
                    382: 
                    383:        case Rwalk:
                    384:        case Rclwalk:
                    385:                SHORT(fid);
                    386:                LONG(qid.path);
                    387:                LONG(qid.vers);
                    388:                break;
                    389: 
                    390:        case Ropen:
                    391:                SHORT(fid);
                    392:                LONG(qid.path);
                    393:                LONG(qid.vers);
                    394:                break;
                    395: 
                    396:        case Rcreate:
                    397:                SHORT(fid);
                    398:                LONG(qid.path);
                    399:                LONG(qid.vers);
                    400:                break;
                    401: 
                    402:        case Rread:
                    403:                SHORT(fid);
                    404:                SHORT(count);
                    405:                p++;    /* pad(1) */
                    406:                STRING(data, f->count);
                    407:                break;
                    408: 
                    409:        case Rwrite:
                    410:                SHORT(fid);
                    411:                SHORT(count);
                    412:                break;
                    413: 
                    414:        case Rclunk:
                    415:                SHORT(fid);
                    416:                break;
                    417: 
                    418:        case Rremove:
                    419:                SHORT(fid);
                    420:                break;
                    421: 
                    422:        case Rstat:
                    423:                SHORT(fid);
                    424:                STRING(stat, sizeof(f->stat));
                    425:                break;
                    426: 
                    427:        case Rwstat:
                    428:                SHORT(fid);
                    429:                break;
                    430:        }
                    431:        return p - (Uchar*)ap;
                    432: }

unix.superglobalmegacorp.com

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