Annotation of 43BSDTahoe/new/cpm/src/extent.c, revision 1.1

1.1     ! root        1: /*     extent.c        1.7     83/05/13        */
        !             2: 
        !             3: #include <stdio.h>
        !             4: #include "cpmio.h"
        !             5: #include "cpmfio.h"
        !             6: 
        !             7: /*
        !             8:  * Allocate a new extent to the file pointed to by curext,
        !             9:  * or, if curext < 0, return the index of the first free
        !            10:  * directory slot.
        !            11:  * Return a negative pointer if no directory space, otherwise
        !            12:  * the index to the new extent.
        !            13:  */
        !            14: 
        !            15: creext(curext)
        !            16:        int curext;
        !            17: {
        !            18: 
        !            19:        int i, j;
        !            20: 
        !            21:        for (i=0; i < maxdir; i++)
        !            22:                if ((dirbuf + i)->status == (char) 0xe5) 
        !            23:                        break;
        !            24:        if (i == maxdir) 
        !            25:                return (EOF);
        !            26:        if (curext >= 0) 
        !            27:                *(dirbuf+i) = *(dirbuf+curext);
        !            28:        
        !            29:        /* clear all file pointers */
        !            30:        for (j=0; j<16; j++)
        !            31:                (dirbuf+i)->pointers[j] = '\0';
        !            32: 
        !            33: #ifdef DEBUG
        !            34:        printf("extent allocated: %d (old: %d)\n", i, curext);
        !            35:        printf("extent data: 0x%x, name: %s\n", (dirbuf+i)->status,
        !            36:                        (dirbuf+i)->name);
        !            37: #endif
        !            38:        return(i);
        !            39: }
        !            40: 
        !            41: 
        !            42: /*
        !            43:  * Find next extent of the file pointed to by file pointer 'current',
        !            44:  * return the new extent's index if found, otherwise NULL.
        !            45:  */
        !            46: 
        !            47: getnext(cur)
        !            48:        C_FILE  *cur;
        !            49: {
        !            50: 
        !            51:        int     ind;
        !            52: 
        !            53:        cur->c_extno++;
        !            54:        for (ind = 0; ind < maxdir; ind++) 
        !            55:                if ((strncmp(cur->c_dirp->name,(dirbuf+ind)->name,8)==0) &&
        !            56:                    (strncmp((dirbuf+ind)->ext, cur->c_dirp->ext,3)==0) &&
        !            57:                    ((dirbuf+ind)->extno == cur->c_extno)) {
        !            58:                        cur->c_ext=ind;
        !            59:                        cur->c_seccnt = 0xff & (int)(dirbuf+ind)->blkcnt;
        !            60:                        cur->c_dirp = dirbuf + ind;
        !            61:                        cur->c_blk = 0;
        !            62: #ifdef DEBUG
        !            63:                        printf("getnext: dir. index: %d\n",ind); 
        !            64: #endif
        !            65:                        return (ind);
        !            66:                }
        !            67:        return (NULL);
        !            68: }

unix.superglobalmegacorp.com

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