| plan 9 kernel history: overview | file list | diff list |
1999/0610/mpc/devsac.c (diff list | history)
| 1999/0609/sys/src/9/mpc/devsac.c:98,104 – 1999/0610/sys/src/9/mpc/devsac.c:98,103 (short | long | prev | next) | ||
| 1999/0608 | return; } blocksize = getl(hdr->blocksize); | |
| 1999/0609 |
| |
| 1999/0608 | root.SacDir = *(SacDir*)(data + sizeof(SacHeader)); } | |
| 1999/0609/sys/src/9/mpc/devsac.c:137,143 – 1999/0610/sys/src/9/mpc/devsac.c:136,143 | ||
| 1999/0608 | Sac *sac; | |
| 1999/0609 | Path *op; | |
| 1999/0608 | ||
| 1999/0609 |
| |
| 1999/0610 | //print("walk %s\n", name); | |
| 1999/0608 | isdir(c); | |
| 1999/0609 | if(name[0]=='.' && name[1]==0) | |
| 1999/0608 | return 1; | |
| 1999/0609/sys/src/9/mpc/devsac.c:150,156 – 1999/0610/sys/src/9/mpc/devsac.c:150,155 | ||
| 1999/0608 | c->aux = sac; c->qid = (Qid){getl(sac->qid), 0}; op = c->path; | |
| 1999/0609 |
| |
| 1999/0608 | c->path = ptenter(&syspt, op, name); decref(op); return 1; | |
| 1999/0609/sys/src/9/mpc/devsac.c:199,206 – 1999/0610/sys/src/9/mpc/devsac.c:198,205 | ||
| 1999/0609 | error("i/o error"); return sacdirread(c, buf, off, cnt); | |
| 1999/0608 | } | |
| 1999/0609 |
| |
| 1999/0610 | //print("sacread: %s %llx %d\n", sac->name, off, n); | |
| 1999/0608 | length = getv(sac->length); | |
| 1999/0609 | if(off >= length) | |
| 1999/0608 | return 0; | |
| 1999/0609/sys/src/9/mpc/devsac.c:221,226 – 1999/0610/sys/src/9/mpc/devsac.c:220,226 | ||
| 1999/0609 | memmove(buf, buf2+j, nn); cnt -= nn; off += nn; | |
| 1999/0610 | buf += nn; | |
| 1999/0608 | } free(buf2); | |
| 1999/0609 | return n; | |
| 1999/0609/sys/src/9/mpc/devsac.c:237,243 – 1999/0610/sys/src/9/mpc/devsac.c:237,242 | ||
| 1999/0609 | sacclose(Chan* c) | |
| 1999/0608 | { | |
| 1999/0609 | Sac *sac = c->aux; | |
| 1999/0608 | } | |
| 1999/0609/sys/src/9/mpc/devsac.c:255,261 – 1999/0610/sys/src/9/mpc/devsac.c:254,259 | ||
| 1999/0608 | Sac *ss; ss = malloc(sizeof(Sac)); | |
| 1999/0609 |
| |
| 1999/0608 | *ss = *s; if(ss->path) incref(ss->path); | |
| 1999/0609/sys/src/9/mpc/devsac.c:324,334 – 1999/0610/sys/src/9/mpc/devsac.c:322,330 | ||
| 1999/0608 | if(n < 0) n = -n; n -= block; | |
| 1999/0609 |
| |
| 1999/0608 | if(unsac(buf, data+block, blocksize, n)<0) panic("unsac failed!"); } else { | |
| 1999/0609 |
| |
| 1999/0608 | memmove(buf, data+block, blocksize); } } | |
| 1999/0609/sys/src/9/mpc/devsac.c:349,355 – 1999/0610/sys/src/9/mpc/devsac.c:345,350 | ||
| 1999/0608 | } p = p->up; | |
| 1999/0609 |
| |
| 1999/0608 | blocks = data + p->blocks; per = blocksize/sizeof(SacDir); i = p->entry/per; | |
| 1999/0609/sys/src/9/mpc/devsac.c:356,362 – 1999/0610/sys/src/9/mpc/devsac.c:351,356 | ||
| 1999/0608 | buf = malloc(per*sizeof(SacDir)); loadblock(buf, blocks + i*8, per*sizeof(SacDir)); s->SacDir = buf[p->entry-i*per]; | |
| 1999/0609 |
| |
| 1999/0608 | free(buf); incref(p); | |
| 1999/0609 | sacpathfree(s->path); | |
| 1999/0609/sys/src/9/mpc/devsac.c:372,378 – 1999/0610/sys/src/9/mpc/devsac.c:366,371 | ||
| 1999/0608 | int iblock, per, i, j, ndir; | |
| 1999/0609 | Sac *s; | |
| 1999/0608 | ||
| 1999/0609 |
| |
| 1999/0608 | blocks = data + getv(s->blocks); per = blocksize/sizeof(SacDir); | |
| 1999/0609/sys/src/9/mpc/devsac.c:428,434 – 1999/0610/sys/src/9/mpc/devsac.c:421,426 | ||
| 1999/0608 | sd = buf+i-j; k = strcmp(name, sd->name); if(k == 0) { | |
| 1999/0609 |
| |
| 1999/0608 | s->SacDir = *sd; free(buf); | |