typedef struct memblk {
char*p;
long len;
#ifdef USE_MMAP
off_t filelen;
int fd;
#endif
} memblk;
typedef char*(read_func_type) P((char*,long,void*));
typedef int(cleanup_func_type) P((memblk*,long*,long,void*));
void
makeblock P((memblk*const,const long)),
freeblock P((memblk*const)),
lockblock P((memblk*const));
int
resizeblock P((memblk*const,const long,const int));
char
*read2blk P((memblk*const,long*const,read_func_type*,cleanup_func_type*,void*));
#ifdef USE_MMAP
extern int ISprivate;
#define isprivate (themail.fd<0||ISprivate)
#define private(x) (ISprivate=(x))
#else
#define isprivate 1
#define private(x) 1
#endif
extern memblk themail;