|
|
1.1 ! root 1: /* dirhdl.c 1.7 83/05/13 */ ! 2: ! 3: #include <stdio.h> ! 4: #include "cpmio.h" ! 5: ! 6: /* Display cp/m directory on stdout */ ! 7: ! 8: dispdir() ! 9: { ! 10: ! 11: int cnt; ! 12: int filecnt = 0; ! 13: int blkcnt ; ! 14: ! 15: for (cnt=0; cnt<maxdir; cnt++) { ! 16: if ((dirbuf+cnt)->status != (char) 0xe5) { ! 17: if ((dirbuf+cnt)->extno == '\0' ) { ! 18: printf("%.8s %.3s",(dirbuf+cnt)->name, ! 19: (dirbuf+cnt)->ext); ! 20: if (++filecnt%4 == 0) ! 21: printf("\n"); ! 22: else ! 23: printf(" : "); ! 24: } ! 25: } ! 26: } ! 27: blkcnt = blks_used(); ! 28: if (filecnt%4 > 0) printf("\n"); ! 29: if (filecnt == 0) ! 30: printf("No files\n"); ! 31: else ! 32: printf( ! 33: "Total of %d files. %d blocks used, %d blocks free.\n" ! 34: ,filecnt, blkcnt,seclth*sectrk*(tracks-2)/blksiz - blkcnt); ! 35: return; ! 36: } ! 37: ! 38: getdir() ! 39: ! 40: { ! 41: ! 42: int bl, blks; ! 43: int offset = 0; ! 44: ! 45: blks = maxdir*32/blksiz; ! 46: if ((maxdir*32)%blksiz > 0) ! 47: ++blks; ! 48: for (bl = 0; blks > 0; bl++, blks--) { ! 49: if (getblock(bl,dirbuf+offset,-1) == EOF) { ! 50: fprintf(stderr, "getdir: fatal error\n"); ! 51: exit (0); ! 52: } ! 53: offset += blksiz/32; ! 54: } ! 55: } ! 56: ! 57: ! 58: savedir() ! 59: ! 60: { ! 61: ! 62: int bl, blks; ! 63: int offset = 0; ! 64: ! 65: blks = maxdir*32/blksiz; ! 66: if ((maxdir*32)%blksiz > 0) ! 67: ++blks; ! 68: for (bl = 0; blks > 0; bl++, blks--) { ! 69: if (putblock(bl,dirbuf+offset,-1) == EOF) { ! 70: fprintf(stderr, "savedir: fatal error\n"); ! 71: exit (0); ! 72: } ! 73: offset += blksiz/32; ! 74: } ! 75: } ! 76: ! 77: /* Search the cp/m directory for the file given by the input ! 78: * parameters, return -1 if not found, ! 79: * directory index to the file's first extent is ! 80: * returned if found. ! 81: */ ! 82: ! 83: searchdir(name,ext) ! 84: char *name, *ext; ! 85: ! 86: { ! 87: int ind; ! 88: ! 89: for (ind = 0; ind < maxdir; ++ind) ! 90: { ! 91: if ((dirbuf+ind)->status == (char) 0xe5) continue; ! 92: if ((strncmp(name,(dirbuf+ind)->name,8) == 0) && ! 93: (strncmp(ext, (dirbuf+ind)->ext, 3) == 0) && ! 94: ((dirbuf+ind)->extno == '\0')) return(ind); ! 95: } ! 96: return(-1); ! 97: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.