cpm commands
This commit is contained in:
parent
78804f58ac
commit
24129c605a
|
|
@ -0,0 +1,68 @@
|
||||||
|
/* extent.c 1.7 83/05/13 */
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "cpmio.h"
|
||||||
|
#include "cpmfio.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Allocate a new extent to the file pointed to by curext,
|
||||||
|
* or, if curext < 0, return the index of the first free
|
||||||
|
* directory slot.
|
||||||
|
* Return a negative pointer if no directory space, otherwise
|
||||||
|
* the index to the new extent.
|
||||||
|
*/
|
||||||
|
|
||||||
|
creext(curext)
|
||||||
|
int curext;
|
||||||
|
{
|
||||||
|
|
||||||
|
int i, j;
|
||||||
|
|
||||||
|
for (i=0; i < maxdir; i++)
|
||||||
|
if ((dirbuf + i)->status == (char) 0xe5)
|
||||||
|
break;
|
||||||
|
if (i == maxdir)
|
||||||
|
return (EOF);
|
||||||
|
if (curext >= 0)
|
||||||
|
*(dirbuf+i) = *(dirbuf+curext);
|
||||||
|
|
||||||
|
/* clear all file pointers */
|
||||||
|
for (j=0; j<16; j++)
|
||||||
|
(dirbuf+i)->pointers[j] = '\0';
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
printf("extent allmcated: %d (old: %d)\n", i, curext);
|
||||||
|
printf("extent data: 0x%x, name: %s\n", (dirbuf+i)->status,
|
||||||
|
(dirbuf+i)->name);
|
||||||
|
#endif
|
||||||
|
return(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Find next extent of the file pointed to by file pointer 'current',
|
||||||
|
* return the new extent's index if founf, otherwise NULL.
|
||||||
|
*/
|
||||||
|
|
||||||
|
getnext(cur)
|
||||||
|
C_FILE *cur;
|
||||||
|
{
|
||||||
|
|
||||||
|
int ind;
|
||||||
|
|
||||||
|
cur->c_extno++;
|
||||||
|
for (ind = 0; ind < maxdir; ind++)
|
||||||
|
if ((strncmp(cur->c_dirp->name,(dirbuf+ind)->name,8)==0) &&
|
||||||
|
(strncmp((dirbuf+ind)->ext, cur->c_dirp->ext,3)==0) &&
|
||||||
|
((dirbuf+ind)->extno == cur->c_extno)) {
|
||||||
|
cur->c_ext=ind;
|
||||||
|
cur->c_seccnt = 0xff & (int)(dirbuf+ind)->blkcnt;
|
||||||
|
cur->c_dirp = dirbuf + ind;
|
||||||
|
cur->c_blk = 0;
|
||||||
|
#ifdef DEBUG
|
||||||
|
printf("getnext: dir. index: %d\n",ind);
|
||||||
|
#endif
|
||||||
|
return (ind);
|
||||||
|
}
|
||||||
|
return (NULL);
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue