Merge Android Pie into master
Bug: 112104996
Change-Id: If4a4f3c2e473a2d60d56ee48fe278abfe4e03af0
diff --git a/lib/blkid/dev.c b/lib/blkid/dev.c
index 1d62dd8..d35513e 100644
--- a/lib/blkid/dev.c
+++ b/lib/blkid/dev.c
@@ -13,7 +13,6 @@
#include "config.h"
#include <stdlib.h>
#include <string.h>
-#include <stdint.h>
#include "blkidP.h"
diff --git a/lib/blkid/probe.c b/lib/blkid/probe.c
index 865d9aa..0293b90 100644
--- a/lib/blkid/probe.c
+++ b/lib/blkid/probe.c
@@ -1160,6 +1160,37 @@
str[j] = '\0';
}
+static void unicode_16le_to_utf8(unsigned char *str, int out_len,
+ const unsigned char *buf, int in_len)
+{
+ int i, j;
+ unsigned int c;
+
+ for (i = j = 0; i + 2 <= in_len; i += 2) {
+ c = (buf[i+1] << 8) | buf[i];
+ if (c == 0) {
+ str[j] = '\0';
+ break;
+ } else if (c < 0x80) {
+ if (j+1 >= out_len)
+ break;
+ str[j++] = (unsigned char) c;
+ } else if (c < 0x800) {
+ if (j+2 >= out_len)
+ break;
+ str[j++] = (unsigned char) (0xc0 | (c >> 6));
+ str[j++] = (unsigned char) (0x80 | (c & 0x3f));
+ } else {
+ if (j+3 >= out_len)
+ break;
+ str[j++] = (unsigned char) (0xe0 | (c >> 12));
+ str[j++] = (unsigned char) (0x80 | ((c >> 6) & 0x3f));
+ str[j++] = (unsigned char) (0x80 | (c & 0x3f));
+ }
+ }
+ str[j] = '\0';
+}
+
static int probe_hfs(struct blkid_probe *probe __BLKID_ATTR((unused)),
struct blkid_magic *id __BLKID_ATTR((unused)),
unsigned char *buf)
@@ -1482,7 +1513,9 @@
label = find_exfat_entry_label(probe, sb);
if (label) {
- blkid_set_tag(probe->dev, "LABEL", label->name, label->length);
+ char utf8_label[128];
+ unicode_16le_to_utf8(utf8_label, sizeof(utf8_label), label->name, label->length * 2);
+ blkid_set_tag(probe->dev, "LABEL", utf8_label, 0);
} else {
blkid_set_tag(probe->dev, "LABEL", "disk", 4);
}
diff --git a/lib/ext2fs/Makefile.in b/lib/ext2fs/Makefile.in
index 99302ca..25dc450 100644
--- a/lib/ext2fs/Makefile.in
+++ b/lib/ext2fs/Makefile.in
@@ -93,7 +93,6 @@
get_pathname.o \
getsize.o \
getsectsize.o \
- hashmap.o \
i_block.o \
icount.o \
ind_block.o \
@@ -173,7 +172,6 @@
$(srcdir)/get_pathname.c \
$(srcdir)/getsize.c \
$(srcdir)/getsectsize.c \
- $(srcdir)/hashmap.c \
$(srcdir)/i_block.c \
$(srcdir)/icount.c \
$(srcdir)/ind_block.c \
diff --git a/misc/blkid.c b/misc/blkid.c
index 96fffae..472f017 100644
--- a/misc/blkid.c
+++ b/misc/blkid.c
@@ -87,7 +87,9 @@
fputc('^', stdout);
ch ^= 0x40; /* ^@, ^A, ^B; ^? for DEL */
}
- fputc(ch, stdout);
+ if (ch != '"') {
+ fputc(ch, stdout);
+ }
}
}