home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Fred Fish Collection 1.5
/
ffcollection-1-5-1992-11.iso
/
ff_progs
/
prt_util
/
kpri.lzh
/
Kpri
/
src.lzh
/
subs.c
< prev
next >
Wrap
C/C++ Source or Header
|
1991-11-01
|
2KB
|
103 lines
#include "defs.h"
Prototype __regargs void update_list(PE *);
Prototype __regargs void del_prienv(PE *);
Prototype void cleanup(void);
Prototype __regargs void FreeRem(LONG *);
Prototype __regargs void *AllocRem(PE *, LONG);
/*********************** del_prienv() **************************/
__regargs void
del_prienv(PE *pe)
{
Remove(pe);
FreeRem(pe->memory);
do_storage_str(NULL);
update_list(NULL);
}
/*********************** update_list() *****************************/
int stored = 0;
__regargs void
update_list(PE *pe)
{
int *store = &stored;
if (pe != NULL)
{
++*store;
Enqueue(&List_storage_list, pe);
}
GT_SetGadgetAttrs(Gad_storage_list, win, NULL,
GTLV_Labels, &List_storage_list,
TAG_END);
if (pe == NULL)
{
--*store;
if (*store < 9)
DrawImage(win->RPort, images[*store], 205, 32); /* refresh logo */
}
}
/*********************** cleanup(void) ******************************/
void
cleanup(void)
{
if (autom) /* last chance */
{
for (SHORT i = 0; i < 2; ++i)
do_all(i);
}
PE *pe;
pe = (PE *)List_storage_list.mlh_Head;
while (pe != (PE *)&List_storage_list.mlh_Tail)
{
PE *pet = pe->pe_node.ln_Succ;
RemHead(&List_storage_list);
FreeRem(pe->memory);
pe = pet;
}
close_prt();
}
/*********************** FreeRem ******************************/
__regargs void /* like free() */
FreeRem(LONG *memory)
{
LONG *ptr;
while(ptr = memory)
{
memory = (LONG *)ptr[0];
FreeMem(ptr, ptr[1]);
}
}
/*********************** AllocRem ******************************/
__regargs void * /* like malloc() */
AllocRem(PE *pe, LONG bytes)
{
LONG *ptr;
ptr = (LONG *)AllocMem(bytes + 8, MPC);
if (ptr)
{
(LONG *)ptr[0] = pe->memory;
pe->memory = ptr;
ptr[1] = bytes + 8;
ptr += 2;
return((void *)ptr);
}
else
{
quit = TRUE;
autom = TRUE;
}
}