📄 cext.c
字号:
/**************************************************************************** cext.c Copyright 1989 Carnegie Mellon University August 3, 1987 Author: Frits Habermann---------------------------------------------------------------------------- 02-May-1988 | JCD : portable & AMIGA version. 17-Oct-1988 | JCD : more portability (FREE). 28-Apr-2003 | DM : changed includes for portability****************************************************************************/#include "switches.h"#include <stdio.h>#include <stdlib.h>#include "cext.h"#include "userio.h"#define calc_middle(top, bot) (((top - bot) / 2 ) + bottom )#define kbyte 1000#define outof_mem(blocksize) (blocksize == 0 )#define done_search(top, bot, middle) ( (( (top - bot) < kbyte ) && \( !toomuch_mem(middle)) ) || \ ( outof_mem( middle )) )private boolean toomuch_mem(ushort maximum) { char *test; boolean istoo_much; istoo_much = ( (test = (char *) MALLOC(maximum)) == NULL ); if (test) FREE(test); return( istoo_much );}private boolean toolittle_mem(maximum) ushort maximum;{ char *test; boolean istoo_little; istoo_little = !( (test = (char *) MALLOC(maximum)) == NULL ); if (test) FREE( test ); return(istoo_little);}private ushort get_biggest_block( maximum )ushort maximum;{ ushort maxblock; ushort top = maximum; ushort bottom = 0; if (!toomuch_mem(maximum)) return(maximum); /* If there's enough memory */ else { gprintf(ERROR, "Running out of memory...\n"); maxblock = calc_middle( top, bottom ); while( !done_search(top, bottom, maxblock) ) { if( toomuch_mem(maxblock) ) { top = maxblock; maxblock = calc_middle(top,bottom); } else if (toolittle_mem(maxblock)) { bottom = maxblock; maxblock = calc_middle(top,bottom); } } } return( maxblock );}public ulong MyMaxMem(ushort *growbytes) { ulong x; if( growbytes != NULL ) *growbytes = 0; x=( (ulong)get_biggest_block((ushort)BIGGEST_BLOCK));/* gprintf(TRANS,"cext: MyMaxMem %ld\n",x); */ return x;}/* note: EXIT is defined to be cmt_exit */void cmt_exit(n) int n;{ cu_cleanup();/* For protection, exit is #defined to hide it. Expose it and call it. */#undef exit exit(n);}#ifdef AMIGA#ifdef LATTICE/* for some reason, these don't seem to be defined anywhere in the standard libraries */#include "signal.h"int _FPERR;int (*_SIGFPE)(int) = SIG_DFL;int _oserr;#endif#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -