Merge "Move libcutils source to C++."
This commit is contained in:
commit
d2ce2f4f45
40 changed files with 150 additions and 126 deletions
|
|
@ -19,14 +19,14 @@
|
||||||
// which are also hard or even impossible to port to native Win32
|
// which are also hard or even impossible to port to native Win32
|
||||||
libcutils_nonwindows_sources = [
|
libcutils_nonwindows_sources = [
|
||||||
"android_get_control_file.cpp",
|
"android_get_control_file.cpp",
|
||||||
"fs.c",
|
"fs.cpp",
|
||||||
"multiuser.c",
|
"multiuser.c",
|
||||||
"socket_inaddr_any_server_unix.c",
|
"socket_inaddr_any_server_unix.cpp",
|
||||||
"socket_local_client_unix.c",
|
"socket_local_client_unix.cpp",
|
||||||
"socket_local_server_unix.c",
|
"socket_local_server_unix.cpp",
|
||||||
"socket_network_client_unix.c",
|
"socket_network_client_unix.cpp",
|
||||||
"sockets_unix.cpp",
|
"sockets_unix.cpp",
|
||||||
"str_parms.c",
|
"str_parms.cpp",
|
||||||
]
|
]
|
||||||
|
|
||||||
cc_library_headers {
|
cc_library_headers {
|
||||||
|
|
@ -56,21 +56,21 @@ cc_library {
|
||||||
},
|
},
|
||||||
host_supported: true,
|
host_supported: true,
|
||||||
srcs: [
|
srcs: [
|
||||||
"config_utils.c",
|
"config_utils.cpp",
|
||||||
"fs_config.cpp",
|
"fs_config.cpp",
|
||||||
"canned_fs_config.c",
|
"canned_fs_config.cpp",
|
||||||
"hashmap.c",
|
"hashmap.cpp",
|
||||||
"iosched_policy.c",
|
"iosched_policy.cpp",
|
||||||
"load_file.c",
|
"load_file.cpp",
|
||||||
"native_handle.c",
|
"native_handle.cpp",
|
||||||
"open_memstream.c",
|
"open_memstream.c",
|
||||||
"record_stream.c",
|
"record_stream.cpp",
|
||||||
"sched_policy.cpp",
|
"sched_policy.cpp",
|
||||||
"sockets.cpp",
|
"sockets.cpp",
|
||||||
"strdup16to8.c",
|
"strdup16to8.cpp",
|
||||||
"strdup8to16.c",
|
"strdup8to16.cpp",
|
||||||
"strlcpy.c",
|
"strlcpy.c",
|
||||||
"threads.c",
|
"threads.cpp",
|
||||||
],
|
],
|
||||||
|
|
||||||
target: {
|
target: {
|
||||||
|
|
@ -83,14 +83,14 @@ cc_library {
|
||||||
},
|
},
|
||||||
not_windows: {
|
not_windows: {
|
||||||
srcs: libcutils_nonwindows_sources + [
|
srcs: libcutils_nonwindows_sources + [
|
||||||
"ashmem-host.c",
|
"ashmem-host.cpp",
|
||||||
"trace-host.c",
|
"trace-host.cpp",
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
windows: {
|
windows: {
|
||||||
srcs: [
|
srcs: [
|
||||||
"socket_inaddr_any_server_windows.c",
|
"socket_inaddr_any_server_windows.cpp",
|
||||||
"socket_network_client_windows.c",
|
"socket_network_client_windows.cpp",
|
||||||
"sockets_windows.cpp",
|
"sockets_windows.cpp",
|
||||||
],
|
],
|
||||||
|
|
||||||
|
|
@ -105,13 +105,13 @@ cc_library {
|
||||||
|
|
||||||
android: {
|
android: {
|
||||||
srcs: libcutils_nonwindows_sources + [
|
srcs: libcutils_nonwindows_sources + [
|
||||||
"android_reboot.c",
|
"android_reboot.cpp",
|
||||||
"ashmem-dev.c",
|
"ashmem-dev.cpp",
|
||||||
"klog.cpp",
|
"klog.cpp",
|
||||||
"partition_utils.c",
|
"partition_utils.cpp",
|
||||||
"properties.cpp",
|
"properties.cpp",
|
||||||
"qtaguid.cpp",
|
"qtaguid.cpp",
|
||||||
"trace-dev.c",
|
"trace-dev.cpp",
|
||||||
"uevent.cpp",
|
"uevent.cpp",
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,9 @@
|
||||||
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <cutils/android_get_control_file.h>
|
||||||
|
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
|
@ -36,8 +39,6 @@
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#include <cutils/android_get_control_file.h>
|
|
||||||
|
|
||||||
#include "android_get_control_env.h"
|
#include "android_get_control_env.h"
|
||||||
|
|
||||||
#ifndef TEMP_FAILURE_RETRY
|
#ifndef TEMP_FAILURE_RETRY
|
||||||
|
|
|
||||||
|
|
@ -13,10 +13,12 @@
|
||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <cutils/android_reboot.h>
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include <cutils/android_reboot.h>
|
|
||||||
#include <cutils/properties.h>
|
#include <cutils/properties.h>
|
||||||
|
|
||||||
#define TAG "android_reboot"
|
#define TAG "android_reboot"
|
||||||
|
|
@ -26,7 +28,7 @@ int android_reboot(int cmd, int flags __unused, const char* arg) {
|
||||||
const char* restart_cmd = NULL;
|
const char* restart_cmd = NULL;
|
||||||
char* prop_value;
|
char* prop_value;
|
||||||
|
|
||||||
switch (cmd) {
|
switch (static_cast<unsigned>(cmd)) {
|
||||||
case ANDROID_RB_RESTART: // deprecated
|
case ANDROID_RB_RESTART: // deprecated
|
||||||
case ANDROID_RB_RESTART2:
|
case ANDROID_RB_RESTART2:
|
||||||
restart_cmd = "reboot";
|
restart_cmd = "reboot";
|
||||||
|
|
@ -14,6 +14,8 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <cutils/ashmem.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Implementation of the user-space ashmem API for devices, which have our
|
* Implementation of the user-space ashmem API for devices, which have our
|
||||||
* ashmem-enabled kernel. See ashmem-sim.c for the "fake" tmp-based version,
|
* ashmem-enabled kernel. See ashmem-sim.c for the "fake" tmp-based version,
|
||||||
|
|
@ -31,8 +33,6 @@
|
||||||
#include <sys/sysmacros.h>
|
#include <sys/sysmacros.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#include <cutils/ashmem.h>
|
|
||||||
#include <log/log.h>
|
#include <log/log.h>
|
||||||
|
|
||||||
#define ASHMEM_DEVICE "/dev/ashmem"
|
#define ASHMEM_DEVICE "/dev/ashmem"
|
||||||
|
|
@ -192,7 +192,8 @@ int ashmem_set_prot_region(int fd, int prot)
|
||||||
|
|
||||||
int ashmem_pin_region(int fd, size_t offset, size_t len)
|
int ashmem_pin_region(int fd, size_t offset, size_t len)
|
||||||
{
|
{
|
||||||
struct ashmem_pin pin = { offset, len };
|
// TODO: should LP64 reject too-large offset/len?
|
||||||
|
ashmem_pin pin = { static_cast<uint32_t>(offset), static_cast<uint32_t>(len) };
|
||||||
|
|
||||||
int ret = __ashmem_is_ashmem(fd, 1);
|
int ret = __ashmem_is_ashmem(fd, 1);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
|
|
@ -204,7 +205,8 @@ int ashmem_pin_region(int fd, size_t offset, size_t len)
|
||||||
|
|
||||||
int ashmem_unpin_region(int fd, size_t offset, size_t len)
|
int ashmem_unpin_region(int fd, size_t offset, size_t len)
|
||||||
{
|
{
|
||||||
struct ashmem_pin pin = { offset, len };
|
// TODO: should LP64 reject too-large offset/len?
|
||||||
|
ashmem_pin pin = { static_cast<uint32_t>(offset), static_cast<uint32_t>(len) };
|
||||||
|
|
||||||
int ret = __ashmem_is_ashmem(fd, 1);
|
int ret = __ashmem_is_ashmem(fd, 1);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
|
|
@ -14,6 +14,8 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <cutils/ashmem.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Implementation of the user-space ashmem API for the simulator, which lacks
|
* Implementation of the user-space ashmem API for the simulator, which lacks
|
||||||
* an ashmem-enabled kernel. See ashmem-dev.c for the real ashmem-based version.
|
* an ashmem-enabled kernel. See ashmem-dev.c for the real ashmem-based version.
|
||||||
|
|
@ -31,7 +33,6 @@
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#include <cutils/ashmem.h>
|
|
||||||
#include <utils/Compat.h>
|
#include <utils/Compat.h>
|
||||||
|
|
||||||
#ifndef __unused
|
#ifndef __unused
|
||||||
|
|
@ -40,12 +41,12 @@
|
||||||
|
|
||||||
int ashmem_create_region(const char *ignored __unused, size_t size)
|
int ashmem_create_region(const char *ignored __unused, size_t size)
|
||||||
{
|
{
|
||||||
char template[PATH_MAX];
|
char pattern[PATH_MAX];
|
||||||
snprintf(template, sizeof(template), "/tmp/android-ashmem-%d-XXXXXXXXX", getpid());
|
snprintf(pattern, sizeof(pattern), "/tmp/android-ashmem-%d-XXXXXXXXX", getpid());
|
||||||
int fd = mkstemp(template);
|
int fd = mkstemp(pattern);
|
||||||
if (fd == -1) return -1;
|
if (fd == -1) return -1;
|
||||||
|
|
||||||
unlink(template);
|
unlink(pattern);
|
||||||
|
|
||||||
if (TEMP_FAILURE_RETRY(ftruncate(fd, size)) == -1) {
|
if (TEMP_FAILURE_RETRY(ftruncate(fd, size)) == -1) {
|
||||||
close(fd);
|
close(fd);
|
||||||
|
|
@ -14,6 +14,10 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <private/android_filesystem_config.h>
|
||||||
|
#include <private/canned_fs_config.h>
|
||||||
|
#include <private/fs_config.h>
|
||||||
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
|
|
@ -22,10 +26,6 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include <private/android_filesystem_config.h>
|
|
||||||
#include <private/fs_config.h>
|
|
||||||
#include <private/canned_fs_config.h>
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
const char* path;
|
const char* path;
|
||||||
unsigned uid;
|
unsigned uid;
|
||||||
|
|
@ -14,20 +14,19 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <cutils/config_utils.h>
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#include <cutils/config_utils.h>
|
|
||||||
#include <cutils/misc.h>
|
#include <cutils/misc.h>
|
||||||
|
|
||||||
cnode* config_node(const char *name, const char *value)
|
cnode* config_node(const char *name, const char *value)
|
||||||
{
|
{
|
||||||
cnode *node;
|
cnode* node = static_cast<cnode*>(calloc(sizeof(cnode), 1));
|
||||||
|
|
||||||
node = calloc(sizeof(cnode), 1);
|
|
||||||
if(node) {
|
if(node) {
|
||||||
node->name = name ? name : "";
|
node->name = name ? name : "";
|
||||||
node->value = value ? value : "";
|
node->value = value ? value : "";
|
||||||
|
|
@ -311,9 +310,9 @@ void config_load(cnode *root, char *data)
|
||||||
|
|
||||||
void config_load_file(cnode *root, const char *fn)
|
void config_load_file(cnode *root, const char *fn)
|
||||||
{
|
{
|
||||||
char *data;
|
char* data = static_cast<char*>(load_file(fn, nullptr));
|
||||||
data = load_file(fn, 0);
|
|
||||||
config_load(root, data);
|
config_load(root, data);
|
||||||
|
// TODO: deliberate leak :-/
|
||||||
}
|
}
|
||||||
|
|
||||||
void config_free(cnode *root)
|
void config_free(cnode *root)
|
||||||
|
|
@ -14,6 +14,8 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <cutils/fs.h>
|
||||||
|
|
||||||
#define LOG_TAG "cutils"
|
#define LOG_TAG "cutils"
|
||||||
|
|
||||||
/* These defines are only needed because prebuilt headers are out of date */
|
/* These defines are only needed because prebuilt headers are out of date */
|
||||||
|
|
@ -32,7 +34,6 @@
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#include <cutils/fs.h>
|
|
||||||
#include <log/log.h>
|
#include <log/log.h>
|
||||||
|
|
||||||
#define ALL_PERMS (S_ISUID | S_ISGID | S_ISVTX | S_IRWXU | S_IRWXG | S_IRWXO)
|
#define ALL_PERMS (S_ISUID | S_ISGID | S_ISVTX | S_IRWXU | S_IRWXG | S_IRWXO)
|
||||||
|
|
@ -40,6 +41,11 @@
|
||||||
|
|
||||||
static int fs_prepare_path_impl(const char* path, mode_t mode, uid_t uid, gid_t gid,
|
static int fs_prepare_path_impl(const char* path, mode_t mode, uid_t uid, gid_t gid,
|
||||||
int allow_fixup, int prepare_as_dir) {
|
int allow_fixup, int prepare_as_dir) {
|
||||||
|
// TODO: fix the goto hell below.
|
||||||
|
int type_ok;
|
||||||
|
int owner_match;
|
||||||
|
int mode_match;
|
||||||
|
|
||||||
// Check if path needs to be created
|
// Check if path needs to be created
|
||||||
struct stat sb;
|
struct stat sb;
|
||||||
int create_result = -1;
|
int create_result = -1;
|
||||||
|
|
@ -53,14 +59,14 @@ static int fs_prepare_path_impl(const char* path, mode_t mode, uid_t uid, gid_t
|
||||||
}
|
}
|
||||||
|
|
||||||
// Exists, verify status
|
// Exists, verify status
|
||||||
int type_ok = prepare_as_dir ? S_ISDIR(sb.st_mode) : S_ISREG(sb.st_mode);
|
type_ok = prepare_as_dir ? S_ISDIR(sb.st_mode) : S_ISREG(sb.st_mode);
|
||||||
if (!type_ok) {
|
if (!type_ok) {
|
||||||
ALOGE("Not a %s: %s", (prepare_as_dir ? "directory" : "regular file"), path);
|
ALOGE("Not a %s: %s", (prepare_as_dir ? "directory" : "regular file"), path);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int owner_match = ((sb.st_uid == uid) && (sb.st_gid == gid));
|
owner_match = ((sb.st_uid == uid) && (sb.st_gid == gid));
|
||||||
int mode_match = ((sb.st_mode & ALL_PERMS) == mode);
|
mode_match = ((sb.st_mode & ALL_PERMS) == mode);
|
||||||
if (owner_match && mode_match) {
|
if (owner_match && mode_match) {
|
||||||
return 0;
|
return 0;
|
||||||
} else if (allow_fixup) {
|
} else if (allow_fixup) {
|
||||||
|
|
@ -188,23 +194,20 @@ fail_closed:
|
||||||
#ifndef __APPLE__
|
#ifndef __APPLE__
|
||||||
|
|
||||||
int fs_mkdirs(const char* path, mode_t mode) {
|
int fs_mkdirs(const char* path, mode_t mode) {
|
||||||
int res = 0;
|
if (*path != '/') {
|
||||||
int fd = 0;
|
ALOGE("Relative paths are not allowed: %s", path);
|
||||||
struct stat sb;
|
return -EINVAL;
|
||||||
char* buf = strdup(path);
|
|
||||||
|
|
||||||
if (*buf != '/') {
|
|
||||||
ALOGE("Relative paths are not allowed: %s", buf);
|
|
||||||
res = -EINVAL;
|
|
||||||
goto done;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((fd = open("/", 0)) == -1) {
|
int fd = open("/", 0);
|
||||||
|
if (fd == -1) {
|
||||||
ALOGE("Failed to open(/): %s", strerror(errno));
|
ALOGE("Failed to open(/): %s", strerror(errno));
|
||||||
res = -errno;
|
return -errno;
|
||||||
goto done;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct stat sb;
|
||||||
|
int res = 0;
|
||||||
|
char* buf = strdup(path);
|
||||||
char* segment = buf + 1;
|
char* segment = buf + 1;
|
||||||
char* p = segment;
|
char* p = segment;
|
||||||
while (*p != '\0') {
|
while (*p != '\0') {
|
||||||
|
|
@ -266,7 +269,6 @@ int fs_mkdirs(const char* path, mode_t mode) {
|
||||||
|
|
||||||
done_close:
|
done_close:
|
||||||
close(fd);
|
close(fd);
|
||||||
done:
|
|
||||||
free(buf);
|
free(buf);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
@ -14,6 +14,8 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <private/fs_config.h>
|
||||||
|
|
||||||
// This file is used to define the properties of the filesystem
|
// This file is used to define the properties of the filesystem
|
||||||
// images generated by build tools (mkbootfs and mkyaffs2image) and
|
// images generated by build tools (mkbootfs and mkyaffs2image) and
|
||||||
// by the device side of adb.
|
// by the device side of adb.
|
||||||
|
|
@ -31,7 +33,6 @@
|
||||||
|
|
||||||
#include <log/log.h>
|
#include <log/log.h>
|
||||||
#include <private/android_filesystem_config.h>
|
#include <private/android_filesystem_config.h>
|
||||||
#include <private/fs_config.h>
|
|
||||||
#include <utils/Compat.h>
|
#include <utils/Compat.h>
|
||||||
|
|
||||||
#ifndef O_BINARY
|
#ifndef O_BINARY
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <cutils/hashmap.h>
|
#include <cutils/hashmap.h>
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <cutils/threads.h>
|
#include <cutils/threads.h>
|
||||||
|
|
@ -45,7 +46,7 @@ Hashmap* hashmapCreate(size_t initialCapacity,
|
||||||
assert(hash != NULL);
|
assert(hash != NULL);
|
||||||
assert(equals != NULL);
|
assert(equals != NULL);
|
||||||
|
|
||||||
Hashmap* map = malloc(sizeof(Hashmap));
|
Hashmap* map = static_cast<Hashmap*>(malloc(sizeof(Hashmap)));
|
||||||
if (map == NULL) {
|
if (map == NULL) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
@ -58,7 +59,7 @@ Hashmap* hashmapCreate(size_t initialCapacity,
|
||||||
map->bucketCount <<= 1;
|
map->bucketCount <<= 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
map->buckets = calloc(map->bucketCount, sizeof(Entry*));
|
map->buckets = static_cast<Entry**>(calloc(map->bucketCount, sizeof(Entry*)));
|
||||||
if (map->buckets == NULL) {
|
if (map->buckets == NULL) {
|
||||||
free(map);
|
free(map);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
@ -106,7 +107,7 @@ static void expandIfNecessary(Hashmap* map) {
|
||||||
if (map->size > (map->bucketCount * 3 / 4)) {
|
if (map->size > (map->bucketCount * 3 / 4)) {
|
||||||
// Start off with a 0.33 load factor.
|
// Start off with a 0.33 load factor.
|
||||||
size_t newBucketCount = map->bucketCount << 1;
|
size_t newBucketCount = map->bucketCount << 1;
|
||||||
Entry** newBuckets = calloc(newBucketCount, sizeof(Entry*));
|
Entry** newBuckets = static_cast<Entry**>(calloc(newBucketCount, sizeof(Entry*)));
|
||||||
if (newBuckets == NULL) {
|
if (newBuckets == NULL) {
|
||||||
// Abort expansion.
|
// Abort expansion.
|
||||||
return;
|
return;
|
||||||
|
|
@ -171,7 +172,7 @@ int hashmapHash(void* key, size_t keySize) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static Entry* createEntry(void* key, int hash, void* value) {
|
static Entry* createEntry(void* key, int hash, void* value) {
|
||||||
Entry* entry = malloc(sizeof(Entry));
|
Entry* entry = static_cast<Entry*>(malloc(sizeof(Entry)));
|
||||||
if (entry == NULL) {
|
if (entry == NULL) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
#ifndef __CUTILS_ANDROID_REBOOT_H__
|
#ifndef __CUTILS_ANDROID_REBOOT_H__
|
||||||
#define __CUTILS_ANDROID_REBOOT_H__
|
#define __CUTILS_ANDROID_REBOOT_H__
|
||||||
|
|
||||||
|
#include <sys/cdefs.h>
|
||||||
|
|
||||||
__BEGIN_DECLS
|
__BEGIN_DECLS
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,8 @@
|
||||||
#ifndef __CUTILS_PARTITION_WIPED_H__
|
#ifndef __CUTILS_PARTITION_WIPED_H__
|
||||||
#define __CUTILS_PARTITION_WIPED_H__
|
#define __CUTILS_PARTITION_WIPED_H__
|
||||||
|
|
||||||
|
#include <sys/cdefs.h>
|
||||||
|
|
||||||
__BEGIN_DECLS
|
__BEGIN_DECLS
|
||||||
|
|
||||||
int partition_wiped(char *source);
|
int partition_wiped(char *source);
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
typedef struct RecordStream RecordStream;
|
typedef struct RecordStream RecordStream;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,8 +19,12 @@
|
||||||
|
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
|
|
||||||
|
__BEGIN_DECLS
|
||||||
|
|
||||||
int load_canned_fs_config(const char* fn);
|
int load_canned_fs_config(const char* fn);
|
||||||
void canned_fs_config(const char* path, int dir, const char* target_out_path, unsigned* uid,
|
void canned_fs_config(const char* path, int dir, const char* target_out_path, unsigned* uid,
|
||||||
unsigned* gid, unsigned* mode, uint64_t* capabilities);
|
unsigned* gid, unsigned* mode, uint64_t* capabilities);
|
||||||
|
|
||||||
|
__END_DECLS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
|
||||||
#if defined(__BIONIC__)
|
#if defined(__BIONIC__)
|
||||||
#include <linux/capability.h>
|
#include <linux/capability.h>
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,8 @@
|
||||||
** limitations under the License.
|
** limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <cutils/iosched_policy.h>
|
||||||
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
@ -21,8 +23,6 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#include <cutils/iosched_policy.h>
|
|
||||||
|
|
||||||
#if defined(__ANDROID__)
|
#if defined(__ANDROID__)
|
||||||
#define IOPRIO_WHO_PROCESS (1)
|
#define IOPRIO_WHO_PROCESS (1)
|
||||||
#define IOPRIO_CLASS_SHIFT (13)
|
#define IOPRIO_CLASS_SHIFT (13)
|
||||||
|
|
@ -49,7 +49,7 @@ int android_get_ioprio(int pid __android_unused, IoSchedClass *clazz, int *iopri
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
*clazz = (rc >> IOPRIO_CLASS_SHIFT);
|
*clazz = static_cast<IoSchedClass>(rc >> IOPRIO_CLASS_SHIFT);
|
||||||
*ioprio = (rc & 0xff);
|
*ioprio = (rc & 0xff);
|
||||||
#else
|
#else
|
||||||
*clazz = IoSchedClass_NONE;
|
*clazz = IoSchedClass_NONE;
|
||||||
|
|
@ -14,6 +14,8 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <cutils/klog.h>
|
||||||
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
|
@ -25,7 +27,6 @@
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#include <cutils/android_get_control_file.h>
|
#include <cutils/android_get_control_file.h>
|
||||||
#include <cutils/klog.h>
|
|
||||||
|
|
||||||
static int klog_level = KLOG_INFO_LEVEL;
|
static int klog_level = KLOG_INFO_LEVEL;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,8 @@
|
||||||
** limitations under the License.
|
** limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <cutils/misc.h>
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
|
@ -45,7 +45,7 @@ native_handle_t* native_handle_create(int numFds, int numInts) {
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t mallocSize = sizeof(native_handle_t) + (sizeof(int) * (numFds + numInts));
|
size_t mallocSize = sizeof(native_handle_t) + (sizeof(int) * (numFds + numInts));
|
||||||
native_handle_t* h = malloc(mallocSize);
|
native_handle_t* h = static_cast<native_handle_t*>(malloc(mallocSize));
|
||||||
if (h) {
|
if (h) {
|
||||||
h->version = sizeof(native_handle_t);
|
h->version = sizeof(native_handle_t);
|
||||||
h->numFds = numFds;
|
h->numFds = numFds;
|
||||||
|
|
@ -14,6 +14,8 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <cutils/partition_utils.h>
|
||||||
|
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <sys/ioctl.h>
|
#include <sys/ioctl.h>
|
||||||
#include <sys/mount.h> /* for BLKGETSIZE */
|
#include <sys/mount.h> /* for BLKGETSIZE */
|
||||||
|
|
@ -14,6 +14,8 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <cutils/properties.h>
|
||||||
|
|
||||||
#define LOG_TAG "properties"
|
#define LOG_TAG "properties"
|
||||||
// #define LOG_NDEBUG 0
|
// #define LOG_NDEBUG 0
|
||||||
|
|
||||||
|
|
@ -25,7 +27,6 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#include <cutils/properties.h>
|
|
||||||
#include <cutils/sockets.h>
|
#include <cutils/sockets.h>
|
||||||
#include <log/log.h>
|
#include <log/log.h>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,8 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <cutils/qtaguid.h>
|
||||||
|
|
||||||
// #define LOG_NDEBUG 0
|
// #define LOG_NDEBUG 0
|
||||||
|
|
||||||
#define LOG_TAG "qtaguid"
|
#define LOG_TAG "qtaguid"
|
||||||
|
|
@ -26,7 +28,6 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#include <cutils/qtaguid.h>
|
|
||||||
#include <log/log.h>
|
#include <log/log.h>
|
||||||
|
|
||||||
class netdHandler {
|
class netdHandler {
|
||||||
|
|
|
||||||
|
|
@ -15,11 +15,12 @@
|
||||||
** limitations under the License.
|
** limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <cutils/record_stream.h>
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <cutils/record_stream.h>
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
|
|
@ -14,6 +14,8 @@
|
||||||
** limitations under the License.
|
** limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <cutils/sched_policy.h>
|
||||||
|
|
||||||
#define LOG_TAG "SchedPolicy"
|
#define LOG_TAG "SchedPolicy"
|
||||||
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
@ -24,7 +26,6 @@
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#include <log/log.h>
|
#include <log/log.h>
|
||||||
#include <cutils/sched_policy.h>
|
|
||||||
|
|
||||||
#define UNUSED __attribute__((__unused__))
|
#define UNUSED __attribute__((__unused__))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,8 @@
|
||||||
** limitations under the License.
|
** limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <cutils/sockets.h>
|
||||||
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
@ -25,8 +27,6 @@
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <netinet/in.h>
|
#include <netinet/in.h>
|
||||||
|
|
||||||
#include <cutils/sockets.h>
|
|
||||||
|
|
||||||
#define LISTEN_BACKLOG 4
|
#define LISTEN_BACKLOG 4
|
||||||
|
|
||||||
/* open listen() port on any interface */
|
/* open listen() port on any interface */
|
||||||
|
|
@ -26,10 +26,10 @@
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <errno.h>
|
|
||||||
|
|
||||||
#include <cutils/sockets.h>
|
#include <cutils/sockets.h>
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
#define LISTEN_BACKLOG 4
|
#define LISTEN_BACKLOG 4
|
||||||
|
|
||||||
extern bool initialize_windows_sockets();
|
extern bool initialize_windows_sockets();
|
||||||
|
|
@ -14,14 +14,14 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <cutils/sockets.h>
|
||||||
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#include <cutils/sockets.h>
|
|
||||||
|
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
|
|
||||||
int socket_local_client(const char *name, int namespaceId, int type)
|
int socket_local_client(const char *name, int namespaceId, int type)
|
||||||
|
|
@ -94,7 +94,7 @@ int socket_local_server_bind(int s, const char *name, int namespaceId)
|
||||||
* Returns fd on success, -1 on fail
|
* Returns fd on success, -1 on fail
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int socket_local_server(const char *name, int namespace, int type)
|
int socket_local_server(const char *name, int namespaceId, int type)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
int s;
|
int s;
|
||||||
|
|
@ -102,7 +102,7 @@ int socket_local_server(const char *name, int namespace, int type)
|
||||||
s = socket(AF_LOCAL, type, 0);
|
s = socket(AF_LOCAL, type, 0);
|
||||||
if (s < 0) return -1;
|
if (s < 0) return -1;
|
||||||
|
|
||||||
err = socket_local_server_bind(s, name, namespace);
|
err = socket_local_server_bind(s, name, namespaceId);
|
||||||
|
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
close(s);
|
close(s);
|
||||||
|
|
@ -14,6 +14,8 @@
|
||||||
** limitations under the License.
|
** limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <cutils/sockets.h>
|
||||||
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
|
@ -27,8 +29,6 @@
|
||||||
#include <netinet/in.h>
|
#include <netinet/in.h>
|
||||||
#include <netdb.h>
|
#include <netdb.h>
|
||||||
|
|
||||||
#include <cutils/sockets.h>
|
|
||||||
|
|
||||||
static int toggle_O_NONBLOCK(int s) {
|
static int toggle_O_NONBLOCK(int s) {
|
||||||
int flags = fcntl(s, F_GETFL);
|
int flags = fcntl(s, F_GETFL);
|
||||||
if (flags == -1 || fcntl(s, F_SETFL, flags ^ O_NONBLOCK) == -1) {
|
if (flags == -1 || fcntl(s, F_SETFL, flags ^ O_NONBLOCK) == -1) {
|
||||||
|
|
@ -14,6 +14,8 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <cutils/sockets.h>
|
||||||
|
|
||||||
#define LOG_TAG "socket-unix"
|
#define LOG_TAG "socket-unix"
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
@ -26,7 +28,6 @@
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#include <cutils/android_get_control_file.h>
|
#include <cutils/android_get_control_file.h>
|
||||||
#include <cutils/sockets.h>
|
|
||||||
#include <log/log.h>
|
#include <log/log.h>
|
||||||
|
|
||||||
#include "android_get_control_env.h"
|
#include "android_get_control_env.h"
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@
|
||||||
// Both adb (1) and Chrome (2) purposefully avoid WSACleanup() with no issues.
|
// Both adb (1) and Chrome (2) purposefully avoid WSACleanup() with no issues.
|
||||||
// (1) https://android.googlesource.com/platform/system/core.git/+/master/adb/sysdeps_win32.cpp
|
// (1) https://android.googlesource.com/platform/system/core.git/+/master/adb/sysdeps_win32.cpp
|
||||||
// (2) https://code.google.com/p/chromium/codesearch#chromium/src/net/base/winsock_init.cc
|
// (2) https://code.google.com/p/chromium/codesearch#chromium/src/net/base/winsock_init.cc
|
||||||
extern "C" bool initialize_windows_sockets() {
|
bool initialize_windows_sockets() {
|
||||||
// There's no harm in calling WSAStartup() multiple times but no benefit
|
// There's no harm in calling WSAStartup() multiple times but no benefit
|
||||||
// either, we may as well skip it after the first.
|
// either, we may as well skip it after the first.
|
||||||
static bool init_success = false;
|
static bool init_success = false;
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,8 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <cutils/str_parms.h>
|
||||||
|
|
||||||
#define LOG_TAG "str_params"
|
#define LOG_TAG "str_params"
|
||||||
//#define LOG_NDEBUG 0
|
//#define LOG_NDEBUG 0
|
||||||
|
|
||||||
|
|
@ -26,7 +28,6 @@
|
||||||
|
|
||||||
#include <cutils/hashmap.h>
|
#include <cutils/hashmap.h>
|
||||||
#include <cutils/memory.h>
|
#include <cutils/memory.h>
|
||||||
#include <cutils/str_parms.h>
|
|
||||||
#include <log/log.h>
|
#include <log/log.h>
|
||||||
|
|
||||||
#define UNUSED __attribute__((unused))
|
#define UNUSED __attribute__((unused))
|
||||||
|
|
@ -62,30 +63,24 @@ __attribute__((no_sanitize("integer")))
|
||||||
static int str_hash_fn(void *str)
|
static int str_hash_fn(void *str)
|
||||||
{
|
{
|
||||||
uint32_t hash = 5381;
|
uint32_t hash = 5381;
|
||||||
char *p;
|
|
||||||
|
|
||||||
for (p = str; p && *p; p++)
|
for (char* p = static_cast<char*>(str); p && *p; p++)
|
||||||
hash = ((hash << 5) + hash) + *p;
|
hash = ((hash << 5) + hash) + *p;
|
||||||
return (int)hash;
|
return (int)hash;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct str_parms *str_parms_create(void)
|
struct str_parms *str_parms_create(void)
|
||||||
{
|
{
|
||||||
struct str_parms *str_parms;
|
str_parms* s = static_cast<str_parms*>(calloc(1, sizeof(str_parms)));
|
||||||
|
if (!s) return NULL;
|
||||||
|
|
||||||
str_parms = calloc(1, sizeof(struct str_parms));
|
s->map = hashmapCreate(5, str_hash_fn, str_eq);
|
||||||
if (!str_parms)
|
if (!s->map) {
|
||||||
|
free(s);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
str_parms->map = hashmapCreate(5, str_hash_fn, str_eq);
|
return s;
|
||||||
if (!str_parms->map)
|
|
||||||
goto err;
|
|
||||||
|
|
||||||
return str_parms;
|
|
||||||
|
|
||||||
err:
|
|
||||||
free(str_parms);
|
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
struct remove_ctxt {
|
struct remove_ctxt {
|
||||||
|
|
@ -95,7 +90,7 @@ struct remove_ctxt {
|
||||||
|
|
||||||
static bool remove_pair(void *key, void *value, void *context)
|
static bool remove_pair(void *key, void *value, void *context)
|
||||||
{
|
{
|
||||||
struct remove_ctxt *ctxt = context;
|
remove_ctxt* ctxt = static_cast<remove_ctxt*>(context);
|
||||||
bool should_continue;
|
bool should_continue;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -109,7 +104,7 @@ static bool remove_pair(void *key, void *value, void *context)
|
||||||
if (!ctxt->key) {
|
if (!ctxt->key) {
|
||||||
should_continue = true;
|
should_continue = true;
|
||||||
goto do_remove;
|
goto do_remove;
|
||||||
} else if (!strcmp(ctxt->key, key)) {
|
} else if (!strcmp(ctxt->key, static_cast<const char*>(key))) {
|
||||||
should_continue = false;
|
should_continue = false;
|
||||||
goto do_remove;
|
goto do_remove;
|
||||||
}
|
}
|
||||||
|
|
@ -292,9 +287,8 @@ int str_parms_has_key(struct str_parms *str_parms, const char *key) {
|
||||||
int str_parms_get_str(struct str_parms *str_parms, const char *key, char *val,
|
int str_parms_get_str(struct str_parms *str_parms, const char *key, char *val,
|
||||||
int len)
|
int len)
|
||||||
{
|
{
|
||||||
char *value;
|
// TODO: hashmapGet should take a const* key.
|
||||||
|
char* value = static_cast<char*>(hashmapGet(str_parms->map, (void*)key));
|
||||||
value = hashmapGet(str_parms->map, (void *)key);
|
|
||||||
if (value)
|
if (value)
|
||||||
return strlcpy(val, value, len);
|
return strlcpy(val, value, len);
|
||||||
|
|
||||||
|
|
@ -303,10 +297,10 @@ int str_parms_get_str(struct str_parms *str_parms, const char *key, char *val,
|
||||||
|
|
||||||
int str_parms_get_int(struct str_parms *str_parms, const char *key, int *val)
|
int str_parms_get_int(struct str_parms *str_parms, const char *key, int *val)
|
||||||
{
|
{
|
||||||
char *value;
|
|
||||||
char *end;
|
char *end;
|
||||||
|
|
||||||
value = hashmapGet(str_parms->map, (void *)key);
|
// TODO: hashmapGet should take a const* key.
|
||||||
|
char* value = static_cast<char*>(hashmapGet(str_parms->map, (void*)key));
|
||||||
if (!value)
|
if (!value)
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
|
|
||||||
|
|
@ -321,10 +315,10 @@ int str_parms_get_float(struct str_parms *str_parms, const char *key,
|
||||||
float *val)
|
float *val)
|
||||||
{
|
{
|
||||||
float out;
|
float out;
|
||||||
char *value;
|
|
||||||
char *end;
|
char *end;
|
||||||
|
|
||||||
value = hashmapGet(str_parms->map, (void *)key);
|
// TODO: hashmapGet should take a const* key.
|
||||||
|
char* value = static_cast<char*>(hashmapGet(str_parms->map, (void*)(key)));
|
||||||
if (!value)
|
if (!value)
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
|
|
||||||
|
|
@ -338,7 +332,7 @@ int str_parms_get_float(struct str_parms *str_parms, const char *key,
|
||||||
|
|
||||||
static bool combine_strings(void *key, void *value, void *context)
|
static bool combine_strings(void *key, void *value, void *context)
|
||||||
{
|
{
|
||||||
char **old_str = context;
|
char** old_str = static_cast<char**>(context);
|
||||||
char *new_str;
|
char *new_str;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
|
@ -15,10 +15,10 @@
|
||||||
** limitations under the License.
|
** limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <limits.h> /* for SIZE_MAX */
|
|
||||||
|
|
||||||
#include <cutils/jstring.h>
|
#include <cutils/jstring.h>
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
#include <limits.h> /* for SIZE_MAX */
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -145,14 +145,11 @@ extern char* strncpy16to8(char* utf8Str, const char16_t* utf16Str, size_t len)
|
||||||
*/
|
*/
|
||||||
char * strndup16to8 (const char16_t* s, size_t n)
|
char * strndup16to8 (const char16_t* s, size_t n)
|
||||||
{
|
{
|
||||||
char* ret;
|
|
||||||
size_t len;
|
|
||||||
|
|
||||||
if (s == NULL) {
|
if (s == NULL) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
len = strnlen16to8(s, n);
|
size_t len = strnlen16to8(s, n);
|
||||||
|
|
||||||
/* We are paranoid, and we check for SIZE_MAX-1
|
/* We are paranoid, and we check for SIZE_MAX-1
|
||||||
* too since it is an overflow value for our
|
* too since it is an overflow value for our
|
||||||
|
|
@ -161,7 +158,7 @@ char * strndup16to8 (const char16_t* s, size_t n)
|
||||||
if (len >= SIZE_MAX-1)
|
if (len >= SIZE_MAX-1)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
ret = malloc(len + 1);
|
char* ret = static_cast<char*>(malloc(len + 1));
|
||||||
if (ret == NULL)
|
if (ret == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
|
@ -16,9 +16,10 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <cutils/jstring.h>
|
#include <cutils/jstring.h>
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <stdlib.h>
|
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
/* See http://www.unicode.org/reports/tr22/ for discussion
|
/* See http://www.unicode.org/reports/tr22/ for discussion
|
||||||
* on invalid sequences
|
* on invalid sequences
|
||||||
|
|
@ -116,7 +117,7 @@ static inline uint32_t getUtf32FromUtf8(const char** pUtf8Ptr)
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
/* Mask for leader byte for lengths 1, 2, 3, and 4 respectively*/
|
/* Mask for leader byte for lengths 1, 2, 3, and 4 respectively*/
|
||||||
static const char leaderMask[4] = {0xff, 0x1f, 0x0f, 0x07};
|
static const unsigned char leaderMask[4] = {0xff, 0x1f, 0x0f, 0x07};
|
||||||
|
|
||||||
/* Bytes that start with bits "10" are not leading characters. */
|
/* Bytes that start with bits "10" are not leading characters. */
|
||||||
if (((**pUtf8Ptr) & 0xc0) == 0x80) {
|
if (((**pUtf8Ptr) & 0xc0) == 0x80) {
|
||||||
|
|
@ -25,7 +25,7 @@
|
||||||
#include <android-base/test_utils.h>
|
#include <android-base/test_utils.h>
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
#include "../trace-dev.c"
|
#include "../trace-dev.cpp"
|
||||||
|
|
||||||
class TraceDevTest : public ::testing::Test {
|
class TraceDevTest : public ::testing::Test {
|
||||||
protected:
|
protected:
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@
|
||||||
** limitations under the License.
|
** limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "cutils/threads.h"
|
#include <cutils/threads.h>
|
||||||
|
|
||||||
// For gettid.
|
// For gettid.
|
||||||
#if defined(__APPLE__)
|
#if defined(__APPLE__)
|
||||||
|
|
@ -14,6 +14,8 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <cutils/trace.h>
|
||||||
|
|
||||||
#include "trace-dev.inc"
|
#include "trace-dev.inc"
|
||||||
|
|
||||||
#include <cutils/sockets.h>
|
#include <cutils/sockets.h>
|
||||||
|
|
@ -14,6 +14,8 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <cutils/trace.h>
|
||||||
|
|
||||||
#include "trace-dev.inc"
|
#include "trace-dev.inc"
|
||||||
|
|
||||||
static pthread_once_t atrace_once_control = PTHREAD_ONCE_INIT;
|
static pthread_once_t atrace_once_control = PTHREAD_ONCE_INIT;
|
||||||
Loading…
Add table
Reference in a new issue