summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/cuesheet.c16
-rw-r--r--apps/metadata/id3tags.c8
-rw-r--r--apps/misc.c10
-rw-r--r--apps/misc.h7
4 files changed, 25 insertions, 16 deletions
diff --git a/apps/cuesheet.c b/apps/cuesheet.c
index ab4063a66a..2c2567b391 100644
--- a/apps/cuesheet.c
+++ b/apps/cuesheet.c
@@ -127,23 +127,23 @@ bool parse_cuesheet(struct cuesheet_file *cue_file, struct cuesheet *cue)
/* Look for a Unicode BOM */
unsigned char bom_read = 0;
- read(fd, line, 3);
- if(!memcmp(line, "\xef\xbb\xbf", 3))
+ read(fd, line, BOM_UTF_8_SIZE);
+ if(!memcmp(line, BOM_UTF_8, BOM_UTF_8_SIZE))
{
char_enc = CHAR_ENC_UTF_8;
- bom_read = 3;
+ bom_read = BOM_UTF_8_SIZE;
}
- else if(!memcmp(line, "\xff\xfe", 2))
+ else if(!memcmp(line, BOM_UTF_16_LE, BOM_UTF_16_SIZE))
{
char_enc = CHAR_ENC_UTF_16_LE;
- bom_read = 2;
+ bom_read = BOM_UTF_16_SIZE;
}
- else if(!memcmp(line, "\xfe\xff", 2))
+ else if(!memcmp(line, BOM_UTF_16_BE, BOM_UTF_16_SIZE))
{
char_enc = CHAR_ENC_UTF_16_BE;
- bom_read = 2;
+ bom_read = BOM_UTF_16_SIZE;
}
- if (bom_read < 3 )
+ if (bom_read < BOM_UTF_8_SIZE)
lseek(fd, cue_file->pos + bom_read, SEEK_SET);
if (is_embedded)
{
diff --git a/apps/metadata/id3tags.c b/apps/metadata/id3tags.c
index edd58da3f5..dcb80347db 100644
--- a/apps/metadata/id3tags.c
+++ b/apps/metadata/id3tags.c
@@ -49,6 +49,7 @@
#include "metadata_common.h"
#endif
#include "metadata_parsers.h"
+#include "misc.h"
static unsigned long unsync(unsigned long b0,
unsigned long b1,
@@ -1008,10 +1009,13 @@ void setid3v2title(int fd, struct mp3entry *entry)
break;
case 0x01:
tag++;
- if (!memcmp(tag, "\xfe\xff", 2))
+ if (!memcmp(tag,
+ BOM_UTF_16_BE, BOM_UTF_16_SIZE)) {
char_enc = CHAR_ENC_UTF_16_BE;
- else if (!memcmp(tag, "\xff\xfe", 2))
+ } else if (!memcmp(tag,
+ BOM_UTF_16_LE, BOM_UTF_16_SIZE)) {
char_enc = CHAR_ENC_UTF_16_LE;
+ }
/* \1 + BOM(2) + C0U0E0S0H0E0E0T000 = 21 */
cuesheet_offset = 21;
break;
diff --git a/apps/misc.c b/apps/misc.c
index 407a26c90f..b1def596ab 100644
--- a/apps/misc.c
+++ b/apps/misc.c
@@ -1011,13 +1011,11 @@ void format_time(char* buf, int buf_size, long t)
* If the file is opened for writing and O_TRUNC is set, write a BOM to
* the opened file and leave the file pointer set after the BOM.
*/
-#define BOM "\xef\xbb\xbf"
-#define BOM_SIZE 3
int open_utf8(const char* pathname, int flags)
{
int fd;
- unsigned char bom[BOM_SIZE];
+ unsigned char bom[BOM_UTF_8_SIZE];
fd = open(pathname, flags, 0666);
if(fd < 0)
@@ -1025,13 +1023,13 @@ int open_utf8(const char* pathname, int flags)
if(flags & (O_TRUNC | O_WRONLY))
{
- write(fd, BOM, BOM_SIZE);
+ write(fd, BOM_UTF_8, BOM_UTF_8_SIZE);
}
else
{
- read(fd, bom, BOM_SIZE);
+ read(fd, bom, BOM_UTF_8_SIZE);
/* check for BOM */
- if(memcmp(bom, BOM, BOM_SIZE))
+ if(memcmp(bom, BOM_UTF_8, BOM_UTF_8_SIZE))
lseek(fd, 0, SEEK_SET);
}
return fd;
diff --git a/apps/misc.h b/apps/misc.h
index 6305bcad62..2206894304 100644
--- a/apps/misc.h
+++ b/apps/misc.h
@@ -66,6 +66,13 @@ bool list_stop_handler(void);
void car_adapter_mode_init(void) INIT_ATTR;
extern int show_logo(void);
+/* Unicode byte order mark sequences and lengths */
+#define BOM_UTF_8 "\xef\xbb\xbf"
+#define BOM_UTF_8_SIZE 3
+#define BOM_UTF_16_LE "\xff\xfe"
+#define BOM_UTF_16_BE "\xfe\xff"
+#define BOM_UTF_16_SIZE 2
+
int open_utf8(const char* pathname, int flags);
#ifdef BOOTFILE