View Issue Details

IDProjectCategoryView StatusLast Update
0000179file[All Projects] Generalpublic2020-08-14 19:22
ReporterdevnexenAssigned Tochristos 
PrioritynormalSeverityminorReproducibilityhave not tried
Status resolvedResolutionfixed 
Product Version5.39 
Target VersionFixed in Version5.40 
Summary0000179: libmagic: Haiku build fix proposal
DescriptionAs is the whole build however in other contexts (e.g. PHP), the build breaks as
Haiku already define unichar and differs from this one thus renaming the whole type here.
TagsNo tags attached.

Activities

devnexen

2020-08-13 13:33

reporter  

90.diff.txt (9,882 bytes)
diff --git a/src/ascmagic.c b/src/ascmagic.c
index 9d383be32..7b0b17205 100644
--- a/src/ascmagic.c
+++ b/src/ascmagic.c
@@ -50,7 +50,7 @@ FILE_RCSID("@(#)$File: ascmagic.c,v 1.107 2020/06/08 19:58:36 christos Exp $")
 #define ISSPC(x) ((x) == ' ' || (x) == '\t' || (x) == '\r' || (x) == '\n' \
 		  || (x) == 0x85 || (x) == '\f')
 
-private unsigned char *encode_utf8(unsigned char *, size_t, unichar *, size_t);
+private unsigned char *encode_utf8(unsigned char *, size_t, unicodechar *, size_t);
 private size_t trim_nuls(const unsigned char *, size_t);
 
 /*
@@ -69,7 +69,7 @@ trim_nuls(const unsigned char *buf, size_t nbytes)
 protected int
 file_ascmagic(struct magic_set *ms, const struct buffer *b, int text)
 {
-	unichar *ubuf = NULL;
+	unicodechar *ubuf = NULL;
 	size_t ulen = 0;
 	int rv = 1;
 	struct buffer bb;
@@ -102,7 +102,7 @@ file_ascmagic(struct magic_set *ms, const struct buffer *b, int text)
 
 protected int
 file_ascmagic_with_encoding(struct magic_set *ms,
-    const struct buffer *b, unichar *ubuf, size_t ulen, const char *code,
+    const struct buffer *b, unicodechar *ubuf, size_t ulen, const char *code,
     const char *type, int text)
 {
 	struct buffer bb;
@@ -334,7 +334,7 @@ file_ascmagic_with_encoding(struct magic_set *ms,
  * after end of string, or NULL if an invalid character is found.
  */
 private unsigned char *
-encode_utf8(unsigned char *buf, size_t len, unichar *ubuf, size_t ulen)
+encode_utf8(unsigned char *buf, size_t len, unicodechar *ubuf, size_t ulen)
 {
 	size_t i;
 	unsigned char *end = buf + len;
diff --git a/src/encoding.c b/src/encoding.c
index dffb1b398..378118ec5 100644
--- a/src/encoding.c
+++ b/src/encoding.c
@@ -43,14 +43,14 @@ FILE_RCSID("@(#)$File: encoding.c,v 1.24 2020/07/26 17:00:51 christos Exp $")
 #include <stdlib.h>
 
 
-private int looks_ascii(const unsigned char *, size_t, unichar *, size_t *);
-private int looks_utf8_with_BOM(const unsigned char *, size_t, unichar *,
+private int looks_ascii(const unsigned char *, size_t, unicodechar *, size_t *);
+private int looks_utf8_with_BOM(const unsigned char *, size_t, unicodechar *,
     size_t *);
-private int looks_utf7(const unsigned char *, size_t, unichar *, size_t *);
-private int looks_ucs16(const unsigned char *, size_t, unichar *, size_t *);
-private int looks_ucs32(const unsigned char *, size_t, unichar *, size_t *);
-private int looks_latin1(const unsigned char *, size_t, unichar *, size_t *);
-private int looks_extended(const unsigned char *, size_t, unichar *, size_t *);
+private int looks_utf7(const unsigned char *, size_t, unicodechar *, size_t *);
+private int looks_ucs16(const unsigned char *, size_t, unicodechar *, size_t *);
+private int looks_ucs32(const unsigned char *, size_t, unicodechar *, size_t *);
+private int looks_latin1(const unsigned char *, size_t, unicodechar *, size_t *);
+private int looks_extended(const unsigned char *, size_t, unicodechar *, size_t *);
 private void from_ebcdic(const unsigned char *, size_t, unsigned char *);
 
 #ifdef DEBUG_ENCODING
@@ -62,11 +62,11 @@ private void from_ebcdic(const unsigned char *, size_t, unsigned char *);
 /*
  * Try to determine whether text is in some character code we can
  * identify.  Each of these tests, if it succeeds, will leave
- * the text converted into one-unichar-per-character Unicode in
+ * the text converted into one-unicodechar-per-character Unicode in
  * ubuf, and the number of characters converted in ulen.
  */
 protected int
-file_encoding(struct magic_set *ms, const struct buffer *b, unichar **ubuf,
+file_encoding(struct magic_set *ms, const struct buffer *b, unicodechar **ubuf,
     size_t *ulen, const char **code, const char **code_mime, const char **type)
 {
 	const unsigned char *buf = CAST(const unsigned char *, b->fbuf);
@@ -74,7 +74,7 @@ file_encoding(struct magic_set *ms, const struct buffer *b, unichar **ubuf,
 	size_t mlen;
 	int rv = 1, ucs_type;
 	unsigned char *nbuf = NULL;
-	unichar *udefbuf;
+	unicodechar *udefbuf;
 	size_t udeflen;
 
 	if (ubuf == NULL)
@@ -88,7 +88,7 @@ file_encoding(struct magic_set *ms, const struct buffer *b, unichar **ubuf,
 	*code_mime = "binary";
 
 	mlen = (nbytes + 1) * sizeof((*ubuf)[0]);
-	if ((*ubuf = CAST(unichar *, calloc(CAST(size_t, 1), mlen))) == NULL) {
+	if ((*ubuf = CAST(unicodechar *, calloc(CAST(size_t, 1), mlen))) == NULL) {
 		file_oomem(ms, mlen);
 		goto done;
 	}
@@ -250,7 +250,7 @@ private char text_chars[256] = {
 };
 
 private int
-looks_ascii(const unsigned char *buf, size_t nbytes, unichar *ubuf,
+looks_ascii(const unsigned char *buf, size_t nbytes, unicodechar *ubuf,
     size_t *ulen)
 {
 	size_t i;
@@ -270,7 +270,7 @@ looks_ascii(const unsigned char *buf, size_t nbytes, unichar *ubuf,
 }
 
 private int
-looks_latin1(const unsigned char *buf, size_t nbytes, unichar *ubuf, size_t *ulen)
+looks_latin1(const unsigned char *buf, size_t nbytes, unicodechar *ubuf, size_t *ulen)
 {
 	size_t i;
 
@@ -289,7 +289,7 @@ looks_latin1(const unsigned char *buf, size_t nbytes, unichar *ubuf, size_t *ule
 }
 
 private int
-looks_extended(const unsigned char *buf, size_t nbytes, unichar *ubuf,
+looks_extended(const unsigned char *buf, size_t nbytes, unicodechar *ubuf,
     size_t *ulen)
 {
 	size_t i;
@@ -372,11 +372,11 @@ struct accept_range {
 };
 
 protected int
-file_looks_utf8(const unsigned char *buf, size_t nbytes, unichar *ubuf, size_t *ulen)
+file_looks_utf8(const unsigned char *buf, size_t nbytes, unicodechar *ubuf, size_t *ulen)
 {
 	size_t i;
 	int n;
-	unichar c;
+	unicodechar c;
 	int gotone = 0, ctrl = 0;
 
 	if (ubuf)
@@ -451,7 +451,7 @@ file_looks_utf8(const unsigned char *buf, size_t nbytes, unichar *ubuf, size_t *
  * rest of the text.
  */
 private int
-looks_utf8_with_BOM(const unsigned char *buf, size_t nbytes, unichar *ubuf,
+looks_utf8_with_BOM(const unsigned char *buf, size_t nbytes, unicodechar *ubuf,
     size_t *ulen)
 {
 	if (nbytes > 3 && buf[0] == 0xef && buf[1] == 0xbb && buf[2] == 0xbf)
@@ -461,7 +461,7 @@ looks_utf8_with_BOM(const unsigned char *buf, size_t nbytes, unichar *ubuf,
 }
 
 private int
-looks_utf7(const unsigned char *buf, size_t nbytes, unichar *ubuf, size_t *ulen)
+looks_utf7(const unsigned char *buf, size_t nbytes, unicodechar *ubuf, size_t *ulen)
 {
 	if (nbytes > 4 && buf[0] == '+' && buf[1] == '/' && buf[2] == 'v')
 		switch (buf[3]) {
@@ -480,7 +480,7 @@ looks_utf7(const unsigned char *buf, size_t nbytes, unichar *ubuf, size_t *ulen)
 }
 
 private int
-looks_ucs16(const unsigned char *bf, size_t nbytes, unichar *ubf,
+looks_ucs16(const unsigned char *bf, size_t nbytes, unicodechar *ubf,
     size_t *ulen)
 {
 	int bigend;
@@ -503,10 +503,10 @@ looks_ucs16(const unsigned char *bf, size_t nbytes, unichar *ubf,
 
 		if (bigend)
 			ubf[(*ulen)++] = bf[i + 1]
-			    | (CAST(unichar, bf[i]) << 8);
+			    | (CAST(unicodechar, bf[i]) << 8);
 		else
 			ubf[(*ulen)++] = bf[i]
-			    | (CAST(unichar, bf[i + 1]) << 8);
+			    | (CAST(unicodechar, bf[i + 1]) << 8);
 
 		if (ubf[*ulen - 1] == 0xfffe)
 			return 0;
@@ -519,7 +519,7 @@ looks_ucs16(const unsigned char *bf, size_t nbytes, unichar *ubf,
 }
 
 private int
-looks_ucs32(const unsigned char *bf, size_t nbytes, unichar *ubf,
+looks_ucs32(const unsigned char *bf, size_t nbytes, unicodechar *ubf,
     size_t *ulen)
 {
 	int bigend;
@@ -541,15 +541,15 @@ looks_ucs32(const unsigned char *bf, size_t nbytes, unichar *ubf,
 		/* XXX fix to properly handle chars > 65536 */
 
 		if (bigend)
-			ubf[(*ulen)++] = CAST(unichar, bf[i + 3])
-			    | (CAST(unichar, bf[i + 2]) << 8)
-			    | (CAST(unichar, bf[i + 1]) << 16)
-			    | (CAST(unichar, bf[i]) << 24);
+			ubf[(*ulen)++] = CAST(unicodechar, bf[i + 3])
+			    | (CAST(unicodechar, bf[i + 2]) << 8)
+			    | (CAST(unicodechar, bf[i + 1]) << 16)
+			    | (CAST(unicodechar, bf[i]) << 24);
 		else
-			ubf[(*ulen)++] = CAST(unichar, bf[i + 0])
-			    | (CAST(unichar, bf[i + 1]) << 8) 
-			    | (CAST(unichar, bf[i + 2]) << 16)
-			    | (CAST(unichar, bf[i + 3]) << 24);
+			ubf[(*ulen)++] = CAST(unicodechar, bf[i + 0])
+			    | (CAST(unicodechar, bf[i + 1]) << 8) 
+			    | (CAST(unicodechar, bf[i + 2]) << 16)
+			    | (CAST(unicodechar, bf[i + 3]) << 24);
 
 		if (ubf[*ulen - 1] == 0xfffe)
 			return 0;
diff --git a/src/file.h b/src/file.h
index 28ebc0c18..ec30d894c 100644
--- a/src/file.h
+++ b/src/file.h
@@ -464,7 +464,7 @@ struct magic_set {
 };
 
 /* Type for Unicode characters */
-typedef unsigned long unichar;
+typedef unsigned long unicodechar;
 
 struct stat;
 #define FILE_T_LOCAL	1
@@ -498,9 +498,9 @@ protected int file_zmagic(struct magic_set *, const struct buffer *,
 protected int file_ascmagic(struct magic_set *, const struct buffer *,
     int);
 protected int file_ascmagic_with_encoding(struct magic_set *,
-    const struct buffer *, unichar *, size_t, const char *, const char *, int);
+    const struct buffer *, unicodechar *, size_t, const char *, const char *, int);
 protected int file_encoding(struct magic_set *, const struct buffer *,
-    unichar **, size_t *, const char **, const char **, const char **);
+    unicodechar **, size_t *, const char **, const char **, const char **);
 protected int file_is_json(struct magic_set *, const struct buffer *);
 protected int file_is_csv(struct magic_set *, const struct buffer *, int);
 protected int file_is_tar(struct magic_set *, const struct buffer *);
@@ -527,7 +527,7 @@ protected size_t file_mbswidth(const char *);
 protected const char *file_getbuffer(struct magic_set *);
 protected ssize_t sread(int, void *, size_t, int);
 protected int file_check_mem(struct magic_set *, unsigned int);
-protected int file_looks_utf8(const unsigned char *, size_t, unichar *,
+protected int file_looks_utf8(const unsigned char *, size_t, unicodechar *,
     size_t *);
 protected size_t file_pstring_length_size(struct magic_set *,
     const struct magic *);
90.diff.txt (9,882 bytes)

christos

2020-08-14 19:22

manager   ~0003445

Fixed, thanks!

Issue History

Date Modified Username Field Change
2020-08-13 13:33 devnexen New Issue
2020-08-13 13:33 devnexen File Added: 90.diff.txt
2020-08-14 19:22 christos Assigned To => christos
2020-08-14 19:22 christos Status new => assigned
2020-08-14 19:22 christos Status assigned => resolved
2020-08-14 19:22 christos Resolution open => fixed
2020-08-14 19:22 christos Fixed in Version => 5.40
2020-08-14 19:22 christos Note Added: 0003445