annotate lib/portability.h @ 372:9051cb744d0a

Shut up even MORE gcc/glibc spurious warnings.
author Rob Landley <rob@landley.net>
date Wed, 06 Jan 2010 05:28:32 -0600
parents 5f1d3ad8a888
children 31215cc6c9f2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
372
9051cb744d0a Shut up even MORE gcc/glibc spurious warnings.
Rob Landley <rob@landley.net>
parents: 166
diff changeset
1 // The tendency of gcc to produce stupid warnings continues with
9051cb744d0a Shut up even MORE gcc/glibc spurious warnings.
Rob Landley <rob@landley.net>
parents: 166
diff changeset
2 // warn_unsed_result, which warns about things like ignoring the return code
9051cb744d0a Shut up even MORE gcc/glibc spurious warnings.
Rob Landley <rob@landley.net>
parents: 166
diff changeset
3 // of nice(2) (which is completely useless since -1 is a legitimate return
9051cb744d0a Shut up even MORE gcc/glibc spurious warnings.
Rob Landley <rob@landley.net>
parents: 166
diff changeset
4 // value on success and even the man page tells you to use errno instead).
9051cb744d0a Shut up even MORE gcc/glibc spurious warnings.
Rob Landley <rob@landley.net>
parents: 166
diff changeset
5
9051cb744d0a Shut up even MORE gcc/glibc spurious warnings.
Rob Landley <rob@landley.net>
parents: 166
diff changeset
6 // This makes it stop.
9051cb744d0a Shut up even MORE gcc/glibc spurious warnings.
Rob Landley <rob@landley.net>
parents: 166
diff changeset
7
9051cb744d0a Shut up even MORE gcc/glibc spurious warnings.
Rob Landley <rob@landley.net>
parents: 166
diff changeset
8 #undef _FORTIFY_SOURCE
9051cb744d0a Shut up even MORE gcc/glibc spurious warnings.
Rob Landley <rob@landley.net>
parents: 166
diff changeset
9
63
69efffcacd70 Add fdprintf(). Remove reread() and rewrite() which handle -EINTR, which
Rob Landley <rob@landley.net>
parents: 53
diff changeset
10 // Humor glibc to get dprintf, then #define it to something more portable.
69efffcacd70 Add fdprintf(). Remove reread() and rewrite() which handle -EINTR, which
Rob Landley <rob@landley.net>
parents: 53
diff changeset
11 #define _GNU_SOURCE
69efffcacd70 Add fdprintf(). Remove reread() and rewrite() which handle -EINTR, which
Rob Landley <rob@landley.net>
parents: 53
diff changeset
12 #include <stdio.h>
69efffcacd70 Add fdprintf(). Remove reread() and rewrite() which handle -EINTR, which
Rob Landley <rob@landley.net>
parents: 53
diff changeset
13 #define fdprintf(...) dprintf(__VA_ARGS__)
69efffcacd70 Add fdprintf(). Remove reread() and rewrite() which handle -EINTR, which
Rob Landley <rob@landley.net>
parents: 53
diff changeset
14
166
5f1d3ad8a888 Add noreturn mark to [p]error_exit(), suggested by Charlie Shepherd.
Rob Landley <rob@landley.net>
parents: 100
diff changeset
15 #ifdef __GNUC__
5f1d3ad8a888 Add noreturn mark to [p]error_exit(), suggested by Charlie Shepherd.
Rob Landley <rob@landley.net>
parents: 100
diff changeset
16 #define noreturn __attribute__((noreturn))
5f1d3ad8a888 Add noreturn mark to [p]error_exit(), suggested by Charlie Shepherd.
Rob Landley <rob@landley.net>
parents: 100
diff changeset
17 #else
5f1d3ad8a888 Add noreturn mark to [p]error_exit(), suggested by Charlie Shepherd.
Rob Landley <rob@landley.net>
parents: 100
diff changeset
18 #define noreturn
5f1d3ad8a888 Add noreturn mark to [p]error_exit(), suggested by Charlie Shepherd.
Rob Landley <rob@landley.net>
parents: 100
diff changeset
19 #endif
100
c3d1d74d5d8f MacOS X has a defective sed with no -r.
Rob Landley <rob@landley.net>
parents: 94
diff changeset
20
c3d1d74d5d8f MacOS X has a defective sed with no -r.
Rob Landley <rob@landley.net>
parents: 94
diff changeset
21 #ifndef __APPLE__
c3d1d74d5d8f MacOS X has a defective sed with no -r.
Rob Landley <rob@landley.net>
parents: 94
diff changeset
22 #include <byteswap.h>
53
41d55b5d49fd Add start of mke2fs/gene2fs, and some other stuff I've been working on.
Rob Landley <rob@landley.net>
parents:
diff changeset
23 #include <endian.h>
41d55b5d49fd Add start of mke2fs/gene2fs, and some other stuff I've been working on.
Rob Landley <rob@landley.net>
parents:
diff changeset
24
41d55b5d49fd Add start of mke2fs/gene2fs, and some other stuff I've been working on.
Rob Landley <rob@landley.net>
parents:
diff changeset
25 #if __BYTE_ORDER == __BIG_ENDIAN
41d55b5d49fd Add start of mke2fs/gene2fs, and some other stuff I've been working on.
Rob Landley <rob@landley.net>
parents:
diff changeset
26 #define IS_BIG_ENDIAN 1
100
c3d1d74d5d8f MacOS X has a defective sed with no -r.
Rob Landley <rob@landley.net>
parents: 94
diff changeset
27 #else
c3d1d74d5d8f MacOS X has a defective sed with no -r.
Rob Landley <rob@landley.net>
parents: 94
diff changeset
28 #define IS_BIG_ENDIAN 0
c3d1d74d5d8f MacOS X has a defective sed with no -r.
Rob Landley <rob@landley.net>
parents: 94
diff changeset
29 #endif
c3d1d74d5d8f MacOS X has a defective sed with no -r.
Rob Landley <rob@landley.net>
parents: 94
diff changeset
30
c3d1d74d5d8f MacOS X has a defective sed with no -r.
Rob Landley <rob@landley.net>
parents: 94
diff changeset
31 #else
c3d1d74d5d8f MacOS X has a defective sed with no -r.
Rob Landley <rob@landley.net>
parents: 94
diff changeset
32
c3d1d74d5d8f MacOS X has a defective sed with no -r.
Rob Landley <rob@landley.net>
parents: 94
diff changeset
33 #ifdef __BIG_ENDIAN__
c3d1d74d5d8f MacOS X has a defective sed with no -r.
Rob Landley <rob@landley.net>
parents: 94
diff changeset
34 #define IS_BIG_ENDIAN 1
c3d1d74d5d8f MacOS X has a defective sed with no -r.
Rob Landley <rob@landley.net>
parents: 94
diff changeset
35 #else
c3d1d74d5d8f MacOS X has a defective sed with no -r.
Rob Landley <rob@landley.net>
parents: 94
diff changeset
36 #define IS_BIG_ENDIAN 0
c3d1d74d5d8f MacOS X has a defective sed with no -r.
Rob Landley <rob@landley.net>
parents: 94
diff changeset
37 #endif
c3d1d74d5d8f MacOS X has a defective sed with no -r.
Rob Landley <rob@landley.net>
parents: 94
diff changeset
38
c3d1d74d5d8f MacOS X has a defective sed with no -r.
Rob Landley <rob@landley.net>
parents: 94
diff changeset
39 #endif
c3d1d74d5d8f MacOS X has a defective sed with no -r.
Rob Landley <rob@landley.net>
parents: 94
diff changeset
40
c3d1d74d5d8f MacOS X has a defective sed with no -r.
Rob Landley <rob@landley.net>
parents: 94
diff changeset
41 #if IS_BIG_ENDIAN
53
41d55b5d49fd Add start of mke2fs/gene2fs, and some other stuff I've been working on.
Rob Landley <rob@landley.net>
parents:
diff changeset
42 #define IS_LITTLE_ENDIAN 0
41d55b5d49fd Add start of mke2fs/gene2fs, and some other stuff I've been working on.
Rob Landley <rob@landley.net>
parents:
diff changeset
43 #define SWAP_BE16(x) (x)
41d55b5d49fd Add start of mke2fs/gene2fs, and some other stuff I've been working on.
Rob Landley <rob@landley.net>
parents:
diff changeset
44 #define SWAP_BE32(x) (x)
41d55b5d49fd Add start of mke2fs/gene2fs, and some other stuff I've been working on.
Rob Landley <rob@landley.net>
parents:
diff changeset
45 #define SWAP_BE64(x) (x)
41d55b5d49fd Add start of mke2fs/gene2fs, and some other stuff I've been working on.
Rob Landley <rob@landley.net>
parents:
diff changeset
46 #define SWAP_LE16(x) bswap_16(x)
41d55b5d49fd Add start of mke2fs/gene2fs, and some other stuff I've been working on.
Rob Landley <rob@landley.net>
parents:
diff changeset
47 #define SWAP_LE32(x) bswap_32(x)
41d55b5d49fd Add start of mke2fs/gene2fs, and some other stuff I've been working on.
Rob Landley <rob@landley.net>
parents:
diff changeset
48 #define SWAP_LE64(x) bswap_64(x)
41d55b5d49fd Add start of mke2fs/gene2fs, and some other stuff I've been working on.
Rob Landley <rob@landley.net>
parents:
diff changeset
49 #else
41d55b5d49fd Add start of mke2fs/gene2fs, and some other stuff I've been working on.
Rob Landley <rob@landley.net>
parents:
diff changeset
50 #define IS_LITTLE_ENDIAN 1
41d55b5d49fd Add start of mke2fs/gene2fs, and some other stuff I've been working on.
Rob Landley <rob@landley.net>
parents:
diff changeset
51 #define SWAP_BE16(x) bswap_16(x)
41d55b5d49fd Add start of mke2fs/gene2fs, and some other stuff I've been working on.
Rob Landley <rob@landley.net>
parents:
diff changeset
52 #define SWAP_BE32(x) bswap_32(x)
41d55b5d49fd Add start of mke2fs/gene2fs, and some other stuff I've been working on.
Rob Landley <rob@landley.net>
parents:
diff changeset
53 #define SWAP_BE64(x) bswap_64(x)
41d55b5d49fd Add start of mke2fs/gene2fs, and some other stuff I've been working on.
Rob Landley <rob@landley.net>
parents:
diff changeset
54 #define SWAP_LE16(x) (x)
41d55b5d49fd Add start of mke2fs/gene2fs, and some other stuff I've been working on.
Rob Landley <rob@landley.net>
parents:
diff changeset
55 #define SWAP_LE32(x) (x)
41d55b5d49fd Add start of mke2fs/gene2fs, and some other stuff I've been working on.
Rob Landley <rob@landley.net>
parents:
diff changeset
56 #define SWAP_LE64(x) (x)
41d55b5d49fd Add start of mke2fs/gene2fs, and some other stuff I've been working on.
Rob Landley <rob@landley.net>
parents:
diff changeset
57 #endif
94
884c03c29f21 Teach build to build only the toys/*.c selected in .config, and teach
Rob Landley <rob@landley.net>
parents: 63
diff changeset
58
884c03c29f21 Teach build to build only the toys/*.c selected in .config, and teach
Rob Landley <rob@landley.net>
parents: 63
diff changeset
59 // Some versions of gcc produce spurious "may be uninitialized" warnings in
884c03c29f21 Teach build to build only the toys/*.c selected in .config, and teach
Rob Landley <rob@landley.net>
parents: 63
diff changeset
60 // cases where it provably can't happen. Unfortunately, although this warning
884c03c29f21 Teach build to build only the toys/*.c selected in .config, and teach
Rob Landley <rob@landley.net>
parents: 63
diff changeset
61 // is calculated and produced separately from the "is definitely used
884c03c29f21 Teach build to build only the toys/*.c selected in .config, and teach
Rob Landley <rob@landley.net>
parents: 63
diff changeset
62 // uninitialized" warnings, there's no way to turn off the broken spurious "may
884c03c29f21 Teach build to build only the toys/*.c selected in .config, and teach
Rob Landley <rob@landley.net>
parents: 63
diff changeset
63 // be" warnings without also turning off the non-broken "is" warnings.
884c03c29f21 Teach build to build only the toys/*.c selected in .config, and teach
Rob Landley <rob@landley.net>
parents: 63
diff changeset
64
884c03c29f21 Teach build to build only the toys/*.c selected in .config, and teach
Rob Landley <rob@landley.net>
parents: 63
diff changeset
65 #if CFG_TOYBOX_DEBUG
884c03c29f21 Teach build to build only the toys/*.c selected in .config, and teach
Rob Landley <rob@landley.net>
parents: 63
diff changeset
66 #define GCC_BUG =0
884c03c29f21 Teach build to build only the toys/*.c selected in .config, and teach
Rob Landley <rob@landley.net>
parents: 63
diff changeset
67 #else
884c03c29f21 Teach build to build only the toys/*.c selected in .config, and teach
Rob Landley <rob@landley.net>
parents: 63
diff changeset
68 #define GCC_BUG
884c03c29f21 Teach build to build only the toys/*.c selected in .config, and teach
Rob Landley <rob@landley.net>
parents: 63
diff changeset
69 #endif