diff options
author | Lukasz Stanislawski <l.stanislaws@samsung.com> | 2018-05-14 10:29:23 +0200 |
---|---|---|
committer | Lukasz Stanislawski <l.stanislaws@samsung.com> | 2018-06-12 09:26:37 +0000 |
commit | 07ca911e94dac571b063901aa18e218a60945918 (patch) | |
tree | dab6ca21ba3afbc0abb313f662899099cc6e0726 | |
parent | ccfc169cd89d7d31f4a6c3138ce8810013493592 (diff) | |
download | ttsd-worker-task-07ca911e94dac571b063901aa18e218a60945918.tar.gz ttsd-worker-task-07ca911e94dac571b063901aa18e218a60945918.tar.bz2 ttsd-worker-task-07ca911e94dac571b063901aa18e218a60945918.zip |
Add error checking macros
Process function input argument validation using macros.
Change-Id: I8845351b9f114f0d02be4460cd4a418075935727
-rw-r--r-- | src/err-check.h | 37 | ||||
-rw-r--r-- | src/procfs.c | 3 |
2 files changed, 40 insertions, 0 deletions
diff --git a/src/err-check.h b/src/err-check.h new file mode 100644 index 0000000..2ee8168 --- /dev/null +++ b/src/err-check.h @@ -0,0 +1,37 @@ +/* +* Copyright 2018 Samsung Electronics Co., Ltd +* +* Licensed under the Flora License, Version 1.1 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://floralicense.org/license/ +* +* 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 __ERR_CHECK_H__ +#define __ERR_CHECK_H__ + +#include "log.h" + +#define ON_NULL_RETURN_VAL(x, v) do { \ + if ((x) == NULL) {\ + ERR(#x" is NULL");\ + return (v);\ + }\ +} while (0) + +#define ON_TRUE_RETURN_VAL(cond, v) do { \ + if ((cond)) {\ + ERR("condition ("#cond") is true");\ + return (v);\ + }\ +} while (0) + +#endif + diff --git a/src/procfs.c b/src/procfs.c index 4c906db..9a594aa 100644 --- a/src/procfs.c +++ b/src/procfs.c @@ -18,6 +18,7 @@ #include "procfs.h" #include "log.h" +#include "err-check.h" #define LOADAVG_FILEPATH "/proc/loadavg" @@ -25,6 +26,8 @@ int procfs_read_system_load_average(struct procfs_load_average_info *info) { float a1, a5, a15; + ON_NULL_RETURN_VAL(info, -1); + FILE *loadavg_fp = fopen(LOADAVG_FILEPATH, "r"); if (!loadavg_fp) { ERR("failed to open " LOADAVG_FILEPATH); |