diff options
author | Lasse Collin <lasse.collin@tukaani.org> | 2008-01-06 16:27:41 +0200 |
---|---|---|
committer | Lasse Collin <lasse.collin@tukaani.org> | 2008-01-06 16:27:41 +0200 |
commit | 4e7e54c4c522ab2f6a7abb92cefc4f707e9568fb (patch) | |
tree | 852cde1e5bef3e46c5415884e283ef874f8eed73 /src/liblzma/api | |
parent | Fix typo in comment (INT64_MAX -> UINT64_MAX). (diff) | |
download | xz-4e7e54c4c522ab2f6a7abb92cefc4f707e9568fb.tar.xz |
Introduced compatibility with systems that have pre-C99
or no inttypes.h. This is useful when the compiler has
good enough support for C99, but libc headers don't.
Changed liblzma API so that sys/types.h and inttypes.h
have to be #included before #including lzma.h. On systems
that don't have C99 inttypes.h, it's the problem of the
applications to provide the required types and macros
before #including lzma.h.
If lzma.h defined the missing types and macros, it could
conflict with third-party applications whose configure
has detected that the types are missing and defined them
in config.h already. An alternative would have been
introducing lzma_uint32 and similar types, but that would
just be an extra pain on modern systems.
Diffstat (limited to 'src/liblzma/api')
-rw-r--r-- | src/liblzma/api/lzma.h | 40 |
1 files changed, 26 insertions, 14 deletions
diff --git a/src/liblzma/api/lzma.h b/src/liblzma/api/lzma.h index 186ae12c..ad39d349 100644 --- a/src/liblzma/api/lzma.h +++ b/src/liblzma/api/lzma.h @@ -17,25 +17,37 @@ * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. + * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Before #including this file, you must make the following types available: + * - size_t + * - uint8_t + * - int32_t + * - uint32_t + * - int64_t + * - uint64_t + * + * Before #including this file, you must make the following macros available: + * - UINT32_C(n) + * - UINT64_C(n) + * - UINT32_MAX + * - UINT64_MAX + * + * Easiest way to achieve the above is to #include sys/types.h and inttypes.h + * before #including lzma.h. However, some pre-C99 libc headers don't provide + * all the required types in inttypes.h (that file may even be missing). + * Portable applications need to provide these types themselves. This way + * liblzma API can use the standard types instead of defining its own + * (e.g. lzma_uint32). + * + * Note that the API still has lzma_bool, because using stdbool.h would + * break C89 and C++ programs on many systems. */ #ifndef LZMA_H #define LZMA_H -/******************** - * External headers * - ********************/ - -/* size_t */ -#include <sys/types.h> - -/* NULL */ -#include <stddef.h> - -/* uint8_t, uint32_t, uint64_t, UINT32_C, UINT64_C, UINT64_MAX. */ -#include <inttypes.h> - - /****************** * GCC extensions * ******************/ |