|
|
1.1 root 1: #ifndef __ASSERT
2: #define __ASSERT
3:
4: void assert(int);
5:
6: static int _assert(char *e, char *file, unsigned line) {
7: extern int write(int, char *, int);
8: extern int sprintf(char *, const char *, ...);
9: extern void abort(void);
10: int i;
11: char buf[256];
12:
13: sprintf(buf, "assertion failed: %s, file %s, line %d\n", e, file, line);
14: for (i = 0; i < sizeof buf; i++)
15: if (buf[i] == 0)
16: break;
17: write(2, buf, i);
18: abort();
19: return 0;
20: }
21: #endif /* __ASSERT */
22:
23: #undef assert
24: #ifdef NDEBUG
25: #define assert(ignore) ((void)0)
26: #else
27: extern int _assert(char *, char *, unsigned);
28: #define assert(e) ((void)((e)||_assert(#e, __FILE__, __LINE__)))
29: #endif /* NDEBUG */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.