From 7d4cff7498ad20214fad58d2477370e1470ca3a4 Mon Sep 17 00:00:00 2001 From: Yunmi Ha Date: Mon, 18 Jan 2021 14:44:38 +0900 Subject: [PATCH] libcommon: add file-io library Change-Id: Ifa68bfc79bb96ab11d3f69338abf4c80e80608ea Signed-off-by: Yunmi Ha --- CMakeLists.txt | 1 + src/libcommon/file.h | 129 +++++++++++++++++++++++++++++++++++++++++++ src/shared/log.h | 2 +- 3 files changed, 131 insertions(+), 1 deletion(-) create mode 100644 src/libcommon/file.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 33bf5f4..d314ee5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,6 +24,7 @@ SET(HEADERS src/libsystemd/systemd-state.h src/libcommon/list.h src/libcommon/ini-parser.h + src/libcommon/file.h ) # CHECK PKG diff --git a/src/libcommon/file.h b/src/libcommon/file.h new file mode 100644 index 0000000..1cd4dec --- /dev/null +++ b/src/libcommon/file.h @@ -0,0 +1,129 @@ +/* + * Copyright (c) 2021 Samsung Electronics Co., Ltd All Rights Reserved + * + * 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. + */ + + +#ifndef __LIBCOMMON_FILE_H__ +#define __LIBCOMMON_FILE_H__ + +#include +#include +#include +#include +#include + +#define SHARED_H_BUF_MAX 255 + +static inline int sys_read_buf(char *file, char *buf, int len) +{ + int fd, r; + + if (!file || !buf || len < 0) + return -EINVAL; + + fd = open(file, O_RDONLY); + if (fd == -1) + return -ENOENT; + + r = read(fd, buf, len); + close(fd); + if ((r >= 0) && (r < len)) + buf[r] = '\0'; + else + return -EIO; + + return 0; +} + +static inline int sys_write_buf(char *file, char *buf) +{ + int fd, r; + + if (!file || !buf) + return -EINVAL; + + fd = open(file, O_WRONLY); + if (fd == -1) + return -EPERM; + + r = write(fd, buf, strlen(buf)); + close(fd); + if (r < 0) + return -EIO; + + return 0; +} + +static inline int sys_get_int(char *fname, int *val) +{ + char buf[SHARED_H_BUF_MAX]; + int r; + + if (!fname || !val) + return -EINVAL; + + r = sys_read_buf(fname, buf, sizeof(buf)); + if (r < 0) + return r; + + *val = atoi(buf); + return 0; +} + +static inline int sys_get_str(char *fname, char *str, int len) +{ + int r; + + if (!fname || !str || len < 0) + return -EINVAL; + + r = sys_read_buf(fname, str, len); + if (r < 0) + return r; + + return 0; +} + +static inline int sys_set_int(char *fname, int val) +{ + char buf[SHARED_H_BUF_MAX]; + int r; + + if (!fname) + return -EINVAL; + + snprintf(buf, sizeof(buf), "%d", val); + r = sys_write_buf(fname, buf); + if (r < 0) + return r; + + return 0; +} + +static inline int sys_set_str(char *fname, char *val) +{ + int r; + + if (!fname || !val) + return -EINVAL; + + r = sys_write_buf(fname, val); + if (r < 0) + return r; + + return 0; +} + +#endif /* __LIBCOMMON_FILE_H__ */ diff --git a/src/shared/log.h b/src/shared/log.h index 4e9b338..ad914a3 100644 --- a/src/shared/log.h +++ b/src/shared/log.h @@ -24,7 +24,7 @@ #define ENABLE_DLOG #endif -#define LOG_TAG "LIBSYSTEM" +#define LOG_TAG "LIBSYSCOMMON" #include "shared/log-macro.h" #endif -- 2.34.1