aboutsummaryrefslogtreecommitdiff
path: root/src/liblzma/api
diff options
context:
space:
mode:
authorLasse Collin <lasse.collin@tukaani.org>2008-01-06 16:27:41 +0200
committerLasse Collin <lasse.collin@tukaani.org>2008-01-06 16:27:41 +0200
commit4e7e54c4c522ab2f6a7abb92cefc4f707e9568fb (patch)
tree852cde1e5bef3e46c5415884e283ef874f8eed73 /src/liblzma/api
parentFix typo in comment (INT64_MAX -> UINT64_MAX). (diff)
downloadxz-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.h40
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 *
******************/