Merge r489 from the libfreefare-desfire branch.
This commit is contained in:
parent
d186bfbaa3
commit
5d62cee7d7
3 changed files with 52 additions and 10 deletions
|
@ -22,21 +22,53 @@
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Endienness macros
|
||||||
|
*
|
||||||
|
* POSIX does not describe any API for endianness problems, and solutions are
|
||||||
|
* mostly vendor-dependant. Some operating systems provide a complete
|
||||||
|
* framework for this (FreeBSD, OpenBSD), some provide nothing in the base
|
||||||
|
* system (Mac OS), GNU/Linux systems may or may not provide macros to do the
|
||||||
|
* conversion depending on the version of the libc.
|
||||||
|
*
|
||||||
|
* This is a PITA but unfortunately we have no other solution than doing all
|
||||||
|
* this gymnastic. Depending of what is defined if one or more of endian.h,
|
||||||
|
* sys/endian.h and byteswap.h was included, define a set of macros to stick to
|
||||||
|
* the set of macros provided by FreeBSD (it's a historic choice: development
|
||||||
|
* was done on this operating system when endianness problems first had to be
|
||||||
|
* dealt with).
|
||||||
|
*/
|
||||||
|
|
||||||
#if !defined(le32toh) && defined(letoh32)
|
#if !defined(le32toh) && defined(letoh32)
|
||||||
# define le32toh(x) letoh32(x)
|
# define le32toh(x) letoh32(x)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(HAVE_BYTESWAP_H)
|
#if !defined(le32toh) && defined(bswap_32)
|
||||||
#include <byteswap.h>
|
# if BYTE_ORDER == LITTLE_ENDIAN
|
||||||
#if !defined(le32toh) || !defined(htole32)
|
# define be32toh(x) bswap_32(x)
|
||||||
#if BYTE_ORDER == LITTLE_ENDIAN
|
# define htobe32(x) bswap_32(x)
|
||||||
#define le32toh(x) (x)
|
# define le32toh(x) (x)
|
||||||
#define htole32(x) bswap_32(x)
|
# define htole32(x) (x)
|
||||||
#else
|
# else
|
||||||
#define le32toh(x) bswap_32(x)
|
# define be32toh(x) (x)
|
||||||
#define htole32(x) (x)
|
# define htobe32(x) (x)
|
||||||
#endif
|
# define le32toh(x) bswap_32(x)
|
||||||
|
# define htole32(x) bswap_32(x)
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if !defined(htole16) && defined(bswap_16)
|
||||||
|
# if BYTE_ORDER == LITTLE_ENDIAN
|
||||||
|
# define be16toh(x) (bswap_16(x))
|
||||||
|
# define htobe16(x) (bswap_16(x))
|
||||||
|
# define htole16(x) (x)
|
||||||
|
# define le16toh(x) (x)
|
||||||
|
# else
|
||||||
|
# define be16toh(x) (x)
|
||||||
|
# define htobe16(x) (x)
|
||||||
|
# define htole16(x) (bswap_16(x))
|
||||||
|
# define le16toh(x) (bswap_16(x))
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -47,6 +47,11 @@
|
||||||
#if defined(HAVE_ENDIAN_H)
|
#if defined(HAVE_ENDIAN_H)
|
||||||
# include <endian.h>
|
# include <endian.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(HAVE_BYTESWAP_H)
|
||||||
|
# include <byteswap.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
|
@ -36,11 +36,16 @@
|
||||||
# include <endian.h>
|
# include <endian.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(HAVE_BYTESWAP_H)
|
||||||
|
# include <byteswap.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
#include <freefare.h>
|
#include <freefare.h>
|
||||||
|
#include "freefare_internal.h"
|
||||||
|
|
||||||
#define TLV_TERMINATOR 0xFE
|
#define TLV_TERMINATOR 0xFE
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue