⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cext.c

📁 Audacity是一款用於錄音和編輯聲音的、免費的開放源碼軟體。它可以執行於Mac OS X、Microsoft Windows、GNU/Linux和其它作業系統
💻 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 + -