Skip to content

Commit

Permalink
get inttypes from zzip/cstdint.h instead of obsolete zzip/stdint.h
Browse files Browse the repository at this point in the history
  • Loading branch information
gdraheim committed May 27, 2024
1 parent b63a559 commit 5aca1fd
Show file tree
Hide file tree
Showing 5 changed files with 70 additions and 61 deletions.
3 changes: 2 additions & 1 deletion zzip/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,8 @@ set(libzzip_HDRS
zzip.h
format.h
types.h
conf.h
conf.h
cstdint.h
_msvc.h
file.h
info.h
Expand Down
63 changes: 63 additions & 0 deletions zzip/cstdint.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
#ifndef _ZZIP_CSTDINT_H
#define _ZZIP_CSTDINT_H 1
/* this file ensures that we have some kind of typedef declarations for
unsigned C9X typedefs. The ISO C 9X: 7.18 Integer types file is stdint.h
*/

#include <zzip/conf.h>

/* enforce use of ifdef'd C9X entries in system headers */
#define __USE_ANSI 1
#define __USE_ISOC9X 1

#ifdef ZZIP_HAVE_STDINT_H
/* ISO C 9X: 7.18 Integer types <stdint.h> */
#include <stdint.h>
#elif defined ZZIP_HAVE_SYS_INT_TYPES_H /*solaris*/
#include <sys/int_types.h>
#elif defined ZZIP_HAVE_INTTYPES_H /*freebsd*/
#include <inttypes.h>
#else
typedef unsigned char uint8_t;
typedef signed char int8_t;

#if ZZIP_SIZEOF_INT && ZZIP_SIZEOF_INT == 2
typedef unsigned int uint16_t;
typedef signed int int16_t;
#elif ZZIP_SIZEOF_SHORT && ZZIP_SIZEOF_SHORT == 2
typedef unsigned short uint16_t;
typedef signed short int16_t;
#else
#error unable to typedef int16_t from either int or short
typedef unsigned short uint16_t;
typedef signed short int16_t;
#endif

#if defined ZZIP_SIZEOF_INT && ZZIP_SIZEOF_INT == 4
typedef unsigned int uint32_t;
typedef signed int int32_t;
#elif defined ZZIP_SIZEOF_LONG && ZZIP_SIZEOF_LONG == 4
typedef unsigned long uint32_t;
typedef signed long int32_t;
#else
#error unable to typedef int32_t from either int or long
typedef unsigned long uint32_t;
typedef signed long int32_t;
#endif

/* either (long long) on Unix or (__int64) on Windows */
typedef unsigned _zzip___int64 uint64_t;
typedef _zzip___int64 int64_t;

#if defined ZZIP_SIZEOF_INT_P
#if ZZIP_SIZEOF_INT_P == ZZIP_SIZEOF_LONG + 0
typedef long intptr_t;
#elif ZZIP_SIZEOF_INT_P == ZZIP_SIZEOF_INT + 0
typedef int intptr_t;
#else
typedef int64_t intptr_t;
#endif
#endif

#endif /* ZZIP_HAVE_... */
#endif /*_ZZIP_STDINT_H*/
2 changes: 1 addition & 1 deletion zzip/fetch.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

#include <zzip/types.h>
#include <zzip/format.h>
#include <zzip/stdint.h>
#include <zzip/cstdint.h>
#include <zzip/__hints.h>

/* linux knows "byteswap.h" giving us an optimized variant */
Expand Down
2 changes: 1 addition & 1 deletion zzip/lib.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

#include <zzip/zzip.h>
#include <zzip/plugin.h>
#include <zzip/stdint.h>
#include <zzip/cstdint.h>

#ifdef __cplusplus
extern "C" {
Expand Down
61 changes: 3 additions & 58 deletions zzip/stdint.h
Original file line number Diff line number Diff line change
@@ -1,63 +1,8 @@
#ifndef _ZZIP__STDINT_H /* zzip-stdint.h */
#ifndef _ZZIP__STDINT_H
#define _ZZIP__STDINT_H 1
/* this file ensures that we have some kind of typedef declarations for
unsigned C9X typedefs. The ISO C 9X: 7.18 Integer types file is stdint.h
*/

#include <zzip/conf.h>
/* obsolete header - use zzip/cstdint.h instead */

/* enforce use of ifdef'd C9X entries in system headers */
#define __USE_ANSI 1
#define __USE_ISOC9X 1
#include <zzip/cstdint.h>

#ifdef ZZIP_HAVE_STDINT_H
/* ISO C 9X: 7.18 Integer types <stdint.h> */
#include <stdint.h>
#elif defined ZZIP_HAVE_SYS_INT_TYPES_H /*solaris*/
#include <sys/int_types.h>
#elif defined ZZIP_HAVE_INTTYPES_H /*freebsd*/
#include <inttypes.h>
#else
typedef unsigned char uint8_t;
typedef signed char int8_t;

#if ZZIP_SIZEOF_INT && ZZIP_SIZEOF_INT == 2
typedef unsigned int uint16_t;
typedef signed int int16_t;
#elif ZZIP_SIZEOF_SHORT && ZZIP_SIZEOF_SHORT == 2
typedef unsigned short uint16_t;
typedef signed short int16_t;
#else
#error unable to typedef int16_t from either int or short
typedef unsigned short uint16_t;
typedef signed short int16_t;
#endif

#if defined ZZIP_SIZEOF_INT && ZZIP_SIZEOF_INT == 4
typedef unsigned int uint32_t;
typedef signed int int32_t;
#elif defined ZZIP_SIZEOF_LONG && ZZIP_SIZEOF_LONG == 4
typedef unsigned long uint32_t;
typedef signed long int32_t;
#else
#error unable to typedef int32_t from either int or long
typedef unsigned long uint32_t;
typedef signed long int32_t;
#endif

/* either (long long) on Unix or (__int64) on Windows */
typedef unsigned _zzip___int64 uint64_t;
typedef _zzip___int64 int64_t;

#if defined ZZIP_SIZEOF_INT_P
#if ZZIP_SIZEOF_INT_P == ZZIP_SIZEOF_LONG + 0
typedef long intptr_t;
#elif ZZIP_SIZEOF_INT_P == ZZIP_SIZEOF_INT + 0
typedef int intptr_t;
#else
typedef int64_t intptr_t;
#endif
#endif

#endif /* ZZIP_HAVE_... */
#endif /*_ZZIP_STDINT_H*/

0 comments on commit 5aca1fd

Please sign in to comment.