/* ** Glue code for MetroWerks CodeWarrior, which misses ** unix-like routines for file-access. */ #ifdef __MWERKS__ #include #include #include #include #include #include /* #define DBGMALLOC /**/ #ifdef DBGMALLOC #define NMALLOC 50000 static long m_index; static long m_addrs[NMALLOC]; static long m_sizes[NMALLOC]; static long m_lastaddr; #define SSLOP 2 #define SLOP (SSLOP+0) void m_abort() { printf("ABORT\n"); exit(1); } void * checkrv(ptr, size) void *ptr; int size; { long b = (long)ptr, e = (long)ptr + size+SSLOP; int i; if ( m_index >= NMALLOC ) { printf("too many mallocs\n"); m_abort(); } m_lastaddr = (long)ptr; for(i=0; i 0 && b < m_addrs[i]+m_sizes[i] && e > m_addrs[i] ) { printf("overlapping block with %d\n", i); m_abort(); } } m_sizes[m_index] = size; m_addrs[m_index++] = (long)ptr; *(short *)ptr = m_index-1; return (void *)((char *)ptr+SSLOP); } void * checkfree(ptr) void *ptr; { int i; if ( ptr == 0 ) { printf("free null\n"); m_abort(); } m_lastaddr = (long)ptr; for(i=0; i= 0 && fd <= 2); } int unlink(old) char *old; { OSErr err; if ((err=FSDelete((ConstStr255Param)Pstring(old), 0)) == noErr) return 0; errno= err; return -1; } #endif /* CW4 */ #endif /* __MWERKS__ */