android_system_core/liblog/log_event_write.c
Mark Salyzyn cfd5b080af system/core: preparation to pull back interfaces from android/log.h
Point to log/log.h where necessary, define LOG_TAG where necessary.
Accept that private/android_logger.h is suitable replacement for
log/logger.h and android/log.h.

Correct liblog/README

Effectively a cleanup and controlled select revert of
'system/core: drop or replace log/logger.h' and
'system/core: Replace log/log.h with android/log.h'.

Test: compile
Bug: 30465923
Change-Id: Ic2ad157bad6f5efe2c6af293a73bb753300b17a2
2016-10-20 08:11:39 -07:00

53 lines
1.5 KiB
C

/*
* Copyright (C) 2015 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <errno.h>
#include <stdint.h>
#include <log/log.h>
#include "log_portability.h"
#define MAX_SUBTAG_LEN 32
LIBLOG_ABI_PUBLIC int __android_log_error_write(
int tag,
const char *subTag,
int32_t uid,
const char *data, uint32_t dataLen)
{
int ret = -EINVAL;
if (subTag && (data || !dataLen)) {
android_log_context ctx = create_android_logger(tag);
ret = -ENOMEM;
if (ctx) {
ret = android_log_write_string8_len(ctx, subTag, MAX_SUBTAG_LEN);
if (ret >= 0) {
ret = android_log_write_int32(ctx, uid);
if (ret >= 0) {
ret = android_log_write_string8_len(ctx, data, dataLen);
if (ret >= 0) {
ret = android_log_write_list(ctx, LOG_ID_EVENTS);
}
}
}
android_log_destroy(&ctx);
}
}
return ret;
}