1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-07-22 17:18:39 +00:00

Rework iconv encoding detection

WCHAR_T doesn't seem as portable as we thought, so it's just easier
to detect the right encoding using macros at this point.
This commit is contained in:
sfan5 2024-03-16 15:10:11 +01:00
parent d1a1aed23e
commit 008d6be900
2 changed files with 35 additions and 32 deletions

View file

@ -24,25 +24,36 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "ieee_float.h"
#include "config.h"
#if HAVE_ENDIAN_H
#ifdef _WIN32
#define __BYTE_ORDER 0
#define __LITTLE_ENDIAN 0
#define __BIG_ENDIAN 1
#elif defined(__MACH__) && defined(__APPLE__)
#include <machine/endian.h>
#elif defined(__FreeBSD__) || defined(__DragonFly__)
#include <sys/endian.h>
#else
#include <endian.h>
#endif
#endif
#include <cstring> // for memcpy
#include <cassert>
#include <iostream>
#include <string>
#include <string_view>
/* make sure BYTE_ORDER macros are available */
#ifdef _WIN32
#define BYTE_ORDER 1234
#elif defined(__MACH__) && defined(__APPLE__)
#include <machine/endian.h>
#elif defined(__FreeBSD__) || defined(__DragonFly__)
#include <sys/endian.h>
#elif HAVE_ENDIAN_H
#include <endian.h>
#else
#error "Can't detect endian (missing header)"
#endif
#ifndef LITTLE_ENDIAN
#define LITTLE_ENDIAN 1234
#endif
#ifndef BIG_ENDIAN
#define BIG_ENDIAN 4321
#endif
#if !defined(BYTE_ORDER) && defined(_BYTE_ORDER)
#define BYTE_ORDER _BYTE_ORDER
#elif !defined(BYTE_ORDER) && defined(__BYTE_ORDER)
#define BYTE_ORDER __BYTE_ORDER
#endif
#define FIXEDPOINT_FACTOR 1000.0f
// 0x7FFFFFFF / 1000.0f is not serializable.