From 5f52d2f736a267fd679407765d8e72d39f858a87 Mon Sep 17 00:00:00 2001 From: Youngjae Cho Date: Fri, 11 Jun 2021 15:12:50 +0900 Subject: [PATCH] libcommon: bring file IO from deviced Change-Id: I0068a42487b31881ff2c8f91de785ae8362984d4 Signed-off-by: Youngjae Cho --- CMakeLists.txt | 1 + src/libcommon/file.c | 133 +++++++++++++++++++++++++++++++++++++++++++++++++++ src/libcommon/file.h | 113 +++---------------------------------------- 3 files changed, 140 insertions(+), 107 deletions(-) create mode 100644 src/libcommon/file.c diff --git a/CMakeLists.txt b/CMakeLists.txt index e16516d..2c1231a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,6 +15,7 @@ SET(libsyscommon_SRCS src/libgdbus/libgdbus.c src/libsystemd/libsystemd.c src/libcommon/ini-parser.c + src/libcommon/file.c ) SET(HEADERS src/libgdbus/libgdbus.h diff --git a/src/libcommon/file.c b/src/libcommon/file.c new file mode 100644 index 0000000..b3ca5f1 --- /dev/null +++ b/src/libcommon/file.c @@ -0,0 +1,133 @@ +/* + * 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. + */ + +#include +#include +#include +#include +#include +#include + +#include "file.h" + +#define SHARED_H_BUF_MAX 255 + +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 -errno; + + r = read(fd, buf, len); + if ((r >= 0) && (r < len)) + buf[r] = '\0'; + else { + buf[0] = '\0'; + r = -EIO; + } + + close(fd); + + return r; +} + +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 -errno; + + r = write(fd, buf, strlen(buf)); + if (r < 0) + r = -EIO; + + close(fd); + + return 0; +} + +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) { + *val = atoi(buf); + } else { + *val = -1; + r = -EIO; + } + + return r; +} + +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; +} + +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; +} + +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; +} diff --git a/src/libcommon/file.h b/src/libcommon/file.h index 4d256a0..1250da8 100644 --- a/src/libcommon/file.h +++ b/src/libcommon/file.h @@ -18,112 +18,11 @@ #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; -} +int sys_read_buf(char *file, char *buf, int len); +int sys_write_buf(char *file, char *buf); +int sys_get_int(char *fname, int *val); +int sys_get_str(char *fname, char *str, int len); +int sys_set_int(char *fname, int val); +int sys_set_str(char *fname, char *val); #endif /* __LIBCOMMON_FILE_H__ */ -- 2.7.4