summaryrefslogtreecommitdiff
path: root/apps/metadata/metadata_common.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/metadata/metadata_common.c')
-rw-r--r--apps/metadata/metadata_common.c35
1 files changed, 34 insertions, 1 deletions
diff --git a/apps/metadata/metadata_common.c b/apps/metadata/metadata_common.c
index 685b32a25e..d81d9f71d3 100644
--- a/apps/metadata/metadata_common.c
+++ b/apps/metadata/metadata_common.c
@@ -94,8 +94,8 @@ long read_string(int fd, char* buf, long buf_size, int eos, long size)
94 return read_bytes; 94 return read_bytes;
95} 95}
96 96
97/* Read an unsigned 32-bit integer from a big-endian file. */
98#ifdef ROCKBOX_LITTLE_ENDIAN 97#ifdef ROCKBOX_LITTLE_ENDIAN
98/* Read an unsigned 32-bit integer from a big-endian file. */
99int read_uint32be(int fd, unsigned int* buf) 99int read_uint32be(int fd, unsigned int* buf)
100{ 100{
101 size_t n; 101 size_t n;
@@ -104,6 +104,39 @@ int read_uint32be(int fd, unsigned int* buf)
104 *buf = betoh32(*buf); 104 *buf = betoh32(*buf);
105 return n; 105 return n;
106} 106}
107#else
108/* Read unsigned integers from a little-endian file. */
109int read_uint16le(int fd, uint16_t* buf)
110{
111 size_t n;
112
113 n = read(fd, (char*) buf, 2);
114 *buf = letoh16(*buf);
115 return n;
116}
117int read_uint32le(int fd, uint32_t* buf)
118{
119 size_t n;
120
121 n = read(fd, (char*) buf, 4);
122 *buf = letoh32(*buf);
123 return n;
124}
125int read_uint64le(int fd, uint64_t* buf)
126{
127 size_t n;
128 uint8_t data[8];
129 int i;
130
131 n = read(fd, data, 8);
132
133 for (i=7, *buf=0; i>=0; i--) {
134 *buf <<= 8;
135 *buf |= data[i];
136 }
137
138 return n;
139}
107#endif 140#endif
108 141
109/* Read an unaligned 32-bit little endian long from buffer. */ 142/* Read an unaligned 32-bit little endian long from buffer. */