Merge "Enable world-readable selinuxfs policy binary."
diff --git a/include/utils/Unicode.h b/include/utils/Unicode.h
index c8c87c3..5b98de2 100644
--- a/include/utils/Unicode.h
+++ b/include/utils/Unicode.h
@@ -22,8 +22,11 @@
extern "C" {
+// Definitions exist in C++11
+#if defined __cplusplus && __cplusplus < 201103L
typedef uint32_t char32_t;
typedef uint16_t char16_t;
+#endif
// Standard string functions on char16_t strings.
int strcmp16(const char16_t *, const char16_t *);
diff --git a/logd/LogStatistics.cpp b/logd/LogStatistics.cpp
index 82a3a90..fc6e6b2 100644
--- a/logd/LogStatistics.cpp
+++ b/logd/LogStatistics.cpp
@@ -446,7 +446,7 @@
static const unsigned short spaces_total = 19;
if (*buf) {
- free(buf);
+ free(*buf);
*buf = NULL;
}
diff --git a/toolbox/date.c b/toolbox/date.c
index d6c9052..aa3b72e 100644
--- a/toolbox/date.c
+++ b/toolbox/date.c
@@ -1,10 +1,13 @@
+#include <ctype.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <inttypes.h>
#include <stdio.h>
#include <stdlib.h>
-#include <unistd.h>
-#include <fcntl.h>
#include <string.h>
-#include <errno.h>
#include <time.h>
+#include <unistd.h>
+
#include <linux/android_alarm.h>
#include <linux/rtc.h>
#include <sys/ioctl.h>
@@ -108,6 +111,33 @@
settime_rtc_tm(&tm);
}
+static char *parse_time(const char *str, struct timeval *ts) {
+ char *s;
+ long fs = 0; /* fractional seconds */
+
+ ts->tv_sec = strtoumax(str, &s, 10);
+
+ if (*s == '.') {
+ s++;
+ int count = 0;
+
+ /* read up to 6 digits (microseconds) */
+ while (*s && isdigit(*s)) {
+ if (++count < 7) {
+ fs = fs*10 + (*s - '0');
+ }
+ s++;
+ }
+
+ for (; count < 6; count++) {
+ fs *= 10;
+ }
+ }
+
+ ts->tv_usec = fs;
+ return s;
+}
+
int date_main(int argc, char *argv[])
{
int c;
@@ -181,7 +211,7 @@
//strptime(argv[optind], NULL, &tm);
//tv.tv_sec = mktime(&tm);
//tv.tv_usec = 0;
- strtotimeval(argv[optind], &tv);
+ parse_time(argv[optind], &tv);
printf("time %s -> %lu.%lu\n", argv[optind], tv.tv_sec, tv.tv_usec);
res = settime_alarm_timeval(&tv);
if (res < 0)