static char sccsid
[] = "@(#)0.alloc.c 4.1 (Berkeley) 2/11/83";
struct coreblk
{struct coreblk
*nxtblk
;
if(i
) { space
+= n
; return(i
); }
fprintf(stderr
,"alloc out of space\n");
fprintf(stderr
,"total space alloc'ed = %D\n",space
);
fprintf(stderr
,"%d more bytes requested\n",n
);
struct coreblk
*tcore
, *gcore
;
int tblksize
=12, gblksize
=300;
balloc(n
,p
,size
) /* allocate n bytes from coreblk *p */
int n
,size
; /* use specifies where called */
n
= (n
+sizeof(i
)-1)/sizeof(i
); /* convert bytes to wds to ensure ints always at wd boundaries */
for (q
= *p
; ; q
= q
->nxtblk
)
if (q
-> blksize
- q
->nxtfree
>= n
) break;
talloc(n
) /* allocate from line-by-line storage area */
{return(balloc(n
,&tcore
,tblksize
)); }
galloc(n
) /* allocate from graph storage area */
return(balloc(n
,&gcore
,gblksize
));
reuse(p
) /* set nxtfree so coreblk can be reused */
for (; p
; p
=p
->nxtblk
) p
->nxtfree
= 0;
bfree(p
) /* free coreblk p */
morespace(n
,p
,size
) /* get at least n more wds for coreblk *p */
q
= malloc(i
=t
*sizeof(*(q
->blk
))+sizeof(*q
));
error(": alloc out of space","","");
fprintf(stderr
,"space = %D\n",space
);
fprintf(stderr
,"%d more bytes requested\n",n
);
error(mess1
, mess2
, mess3
)
char *mess1
, *mess2
, *mess3
;
fprintf(stderr
,"routine beginning on line %d:\n",routbeg
);
fprintf(stderr
,"error %s %s %s\n",mess1
, mess2
, mess3
);
faterr(mess1
, mess2
, mess3
)
char *mess1
, *mess2
, *mess3
;
error(mess1
, mess2
, mess3
);
strerr(mess1
, mess2
, mess3
)
char *mess1
, *mess2
, *mess3
;
error("struct error: ",mess1
, mess2
);