2 ** Glue code for MetroWerks CodeWarrior, which misses
3 ** unix-like routines for file-access.
15 /* #define DBGMALLOC /**/
20 static long m_addrs
[NMALLOC
];
21 static long m_sizes
[NMALLOC
];
22 static long m_lastaddr
;
25 #define SLOP (SSLOP+0)
38 long b
= (long)ptr
, e
= (long)ptr
+ size
+SSLOP
;
41 if ( m_index
>= NMALLOC
) {
42 printf("too many mallocs\n");
45 m_lastaddr
= (long)ptr
;
46 for(i
=0; i
<m_index
; i
++) {
47 if ( m_addrs
[i
] > 0 && b
< m_addrs
[i
]+m_sizes
[i
] && e
> m_addrs
[i
] ) {
48 printf("overlapping block with %d\n", i
);
52 m_sizes
[m_index
] = size
;
53 m_addrs
[m_index
++] = (long)ptr
;
54 *(short *)ptr
= m_index
-1;
55 return (void *)((char *)ptr
+SSLOP
);
66 printf("free null\n");
69 m_lastaddr
= (long)ptr
;
70 for(i
=0; i
<m_index
; i
++) {
71 if ( m_addrs
[i
] == (long)ptr
-SSLOP
) {
72 m_addrs
[i
] = -m_addrs
[i
];
73 ptr
= (void *)((char *)ptr
-SSLOP
);
74 if ( *(short *)ptr
!= i
) {
75 int saved_i
= i
, saved_ptr
= *(short *)ptr
;
77 printf("Wrong starter value\n");
83 printf("free unknown\n");
93 ptr
= malloc(size
+SLOP
);
95 printf("malloc failure\n");
98 return checkrv(ptr
, size
);
102 m_realloc(optr
, size
)
107 ptr
= checkfree(ptr
);
108 ptr
= realloc(ptr
, size
+SLOP
);
110 printf("realloc failure\n");
113 return checkrv(ptr
, size
);
117 m_calloc(size
, nelem
)
121 ptr
= calloc(1, nelem
*size
+SLOP
);
122 return checkrv(ptr
, nelem
*size
);
130 ptr
= checkfree(ptr
);
133 #endif /* DBGMALLOC */
140 if (fp
==stdin
) return 0;
141 else if (fp
==stdout
) return 1;
142 else if (fp
==stderr
) return 2;
150 return (fd
>= 0 && fd
<= 2);
159 if ((err
=FSDelete((ConstStr255Param
)Pstring(old
), 0)) == noErr
)
166 #endif /* __MWERKS__ */