aboutsummaryrefslogtreecommitdiffstats
path: root/src/hs-helper.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/hs-helper.cpp')
-rw-r--r--src/hs-helper.cpp49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/hs-helper.cpp b/src/hs-helper.cpp
index 50a3ae1..159668e 100644
--- a/src/hs-helper.cpp
+++ b/src/hs-helper.cpp
@@ -17,6 +17,7 @@
#include <string.h>
#include <cstdarg>
#include "hs-helper.h"
+#include <unistd.h>
const char* evlist[] = {
@@ -272,3 +273,51 @@ std::string get_application_id(const afb_req_t request)
return appid;
}
+
+/**
+ * read json file
+ *
+ * #### Parameters
+ * - file : file name
+ * - obj : json_object
+ *
+ * #### Return
+ * 0 : read success
+ * 1 : read fail
+ *
+ */
+int readJsonFile(const char* file, struct json_object **obj)
+{
+ *obj = nullptr;
+ int ret = -1;
+ FILE *fp = fopen(file, "rb");
+ if(fp == nullptr) {
+ AFB_ERROR("open %s failed", file);
+ return ret;
+ }
+
+ const int buf_size = 128;
+ char buf[buf_size];
+ struct json_tokener *tokener = json_tokener_new();
+ enum json_tokener_error json_error;
+ while(1) {
+ size_t len = fread(buf, sizeof(char), buf_size, fp);
+ *obj = json_tokener_parse_ex(tokener, buf, len);
+ if(nullptr != *obj) {
+ AFB_NOTICE("read %s success", file);
+ ret = 0;
+ break;
+ }
+
+ json_error = json_tokener_get_error(tokener);
+ if ((json_tokener_continue != json_error) || (buf_size > len)) {
+ AFB_ERROR("parse %s error", file);
+ *obj = nullptr;
+ break;
+ }
+ }
+
+ fclose(fp);
+ json_tokener_free(tokener);
+ return ret;
+}