Patch from Robert P. Day, moving byte order checks to use platform.h macros.
This commit is contained in:
parent
d9969ea175
commit
688ed0d760
@ -119,10 +119,10 @@ int unlzma(int src_fd, int dst_fd)
|
|||||||
pos_state_mask = (1 << pb) - 1;
|
pos_state_mask = (1 << pb) - 1;
|
||||||
literal_pos_mask = (1 << lp) - 1;
|
literal_pos_mask = (1 << lp) - 1;
|
||||||
|
|
||||||
#if __BYTE_ORDER == __BIG_ENDIAN
|
#if BB_BIG_ENDIAN
|
||||||
header.dict_size = bswap_32(header.dict_size);
|
header.dict_size = bswap_32(header.dict_size);
|
||||||
header.dst_size = bswap_64(header.dst_size);
|
header.dst_size = bswap_64(header.dst_size);
|
||||||
#endif /* __BYTE_ORDER */
|
#endif
|
||||||
|
|
||||||
if (header.dict_size == 0)
|
if (header.dict_size == 0)
|
||||||
header.dict_size = 1;
|
header.dict_size = 1;
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
#include "unarchive.h"
|
#include "unarchive.h"
|
||||||
#include "busybox.h"
|
#include "busybox.h"
|
||||||
|
|
||||||
#if (BYTE_ORDER == BIG_ENDIAN)
|
#if BB_BIG_ENDIAN
|
||||||
static inline unsigned short
|
static inline unsigned short
|
||||||
__swap16(unsigned short x) {
|
__swap16(unsigned short x) {
|
||||||
return (((uint16_t)(x) & 0xFF) << 8) | (((uint16_t)(x) & 0xFF00) >> 8);
|
return (((uint16_t)(x) & 0xFF) << 8) | (((uint16_t)(x) & 0xFF00) >> 8);
|
||||||
@ -45,10 +45,10 @@ __swap32(uint32_t x) {
|
|||||||
((x & 0xFF0000) >> 8) |
|
((x & 0xFF0000) >> 8) |
|
||||||
((x & 0xFF000000) >> 24));
|
((x & 0xFF000000) >> 24));
|
||||||
}
|
}
|
||||||
#else
|
#else /* it's little-endian */
|
||||||
# define __swap16(x) (x)
|
# define __swap16(x) (x)
|
||||||
# define __swap32(x) (x)
|
# define __swap32(x) (x)
|
||||||
#endif
|
#endif /* BB_BIG_ENDIAN */
|
||||||
|
|
||||||
#define ZIP_FILEHEADER_MAGIC __swap32(0x04034b50)
|
#define ZIP_FILEHEADER_MAGIC __swap32(0x04034b50)
|
||||||
#define ZIP_CDS_MAGIC __swap32(0x02014b50)
|
#define ZIP_CDS_MAGIC __swap32(0x02014b50)
|
||||||
@ -253,7 +253,7 @@ extern int unzip_main(int argc, char **argv)
|
|||||||
|
|
||||||
/* Read the file header */
|
/* Read the file header */
|
||||||
unzip_read(src_fd, zip_header.raw, 26);
|
unzip_read(src_fd, zip_header.raw, 26);
|
||||||
#if (BYTE_ORDER == BIG_ENDIAN)
|
#if BB_BIG_ENDIAN
|
||||||
zip_header.formated.version = __swap16(zip_header.formated.version);
|
zip_header.formated.version = __swap16(zip_header.formated.version);
|
||||||
zip_header.formated.flags = __swap16(zip_header.formated.flags);
|
zip_header.formated.flags = __swap16(zip_header.formated.flags);
|
||||||
zip_header.formated.method = __swap16(zip_header.formated.method);
|
zip_header.formated.method = __swap16(zip_header.formated.method);
|
||||||
@ -264,7 +264,7 @@ extern int unzip_main(int argc, char **argv)
|
|||||||
zip_header.formated.ucmpsize = __swap32(zip_header.formated.ucmpsize);
|
zip_header.formated.ucmpsize = __swap32(zip_header.formated.ucmpsize);
|
||||||
zip_header.formated.filename_len = __swap16(zip_header.formated.filename_len);
|
zip_header.formated.filename_len = __swap16(zip_header.formated.filename_len);
|
||||||
zip_header.formated.extra_len = __swap16(zip_header.formated.extra_len);
|
zip_header.formated.extra_len = __swap16(zip_header.formated.extra_len);
|
||||||
#endif
|
#endif /* BB_BIG_ENDIAN */
|
||||||
if ((zip_header.formated.method != 0) && (zip_header.formated.method != 8)) {
|
if ((zip_header.formated.method != 0) && (zip_header.formated.method != 8)) {
|
||||||
bb_error_msg_and_die("Unsupported compression method %d", zip_header.formated.method);
|
bb_error_msg_and_die("Unsupported compression method %d", zip_header.formated.method);
|
||||||
}
|
}
|
||||||
|
@ -48,7 +48,7 @@
|
|||||||
#include <asm/byteorder.h>
|
#include <asm/byteorder.h>
|
||||||
|
|
||||||
|
|
||||||
#if (__BYTE_ORDER == __BIG_ENDIAN) && !defined(__USE_XOPEN)
|
#if BB_BIG_ENDIAN && !defined(__USE_XOPEN)
|
||||||
# define __USE_XOPEN
|
# define __USE_XOPEN
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -268,7 +268,7 @@ extern int insmod_ng_main( int argc, char **argv);
|
|||||||
#define CONFIG_USE_SINGLE
|
#define CONFIG_USE_SINGLE
|
||||||
/* the SH changes have only been tested in =little endian= mode */
|
/* the SH changes have only been tested in =little endian= mode */
|
||||||
/* I'm not sure about big endian, so let's warn: */
|
/* I'm not sure about big endian, so let's warn: */
|
||||||
#if defined(__sh__) && defined(__BIG_ENDIAN__)
|
#if defined(__sh__) && BB_BIG_ENDIAN
|
||||||
# error insmod.c may require changes for use on big endian SH
|
# error insmod.c may require changes for use on big endian SH
|
||||||
#endif
|
#endif
|
||||||
/* it may or may not work on the SH1/SH2... Error on those also */
|
/* it may or may not work on the SH1/SH2... Error on those also */
|
||||||
@ -511,9 +511,9 @@ static const int MODUTILS_OBJ_H = 1;
|
|||||||
#include <elf.h>
|
#include <elf.h>
|
||||||
#include <endian.h>
|
#include <endian.h>
|
||||||
|
|
||||||
#if __BYTE_ORDER == __LITTLE_ENDIAN
|
#if BB_LITTLE_ENDIAN
|
||||||
# define ELFDATAM ELFDATA2LSB
|
# define ELFDATAM ELFDATA2LSB
|
||||||
#elif __BYTE_ORDER == __BIG_ENDIAN
|
#else
|
||||||
# define ELFDATAM ELFDATA2MSB
|
# define ELFDATAM ELFDATA2MSB
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user