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: }