aboutsummaryrefslogtreecommitdiffstats
path: root/src/json_helper.cpp
diff options
context:
space:
mode:
authorYuta Doi <yuta-d@witz-inc.co.jp>2018-05-10 13:10:28 +0900
committerYuta Doi <yuta-d@witz-inc.co.jp>2018-05-10 13:10:28 +0900
commit2ea71aa957634ce69681ae34abace0566d52b744 (patch)
treeb9d9ee097a78d3d21ee07d85193a2e2e6862fce6 /src/json_helper.cpp
parent0dcb9ae1f99cffcafac62a324f8f054cc212a880 (diff)
Modify for restriction role
- Add policy for restriction to dummy stm. - Add the function which inputs json file because json_object_from_file can not allows up to only 4KB file. - Bug fix in json files. - Delete unexpected characters. - Delete description because it does not follow the format of json array. Change-Id: I2f8fba1d1001cf244e2531fe3a1a738d5a48091b Signed-off-by: Yuta Doi <yuta-d@witz-inc.co.jp>
Diffstat (limited to 'src/json_helper.cpp')
-rw-r--r--src/json_helper.cpp61
1 files changed, 57 insertions, 4 deletions
diff --git a/src/json_helper.cpp b/src/json_helper.cpp
index ac3d2b0..f9b916e 100644
--- a/src/json_helper.cpp
+++ b/src/json_helper.cpp
@@ -123,13 +123,13 @@ const char* getStringFromJson(json_object* obj, const char* key) {
int getIntFromJson(json_object* obj, const char* key) {
if ((nullptr == obj) || (nullptr == key)) {
- HMI_ERROR("wm", "Argument is nullptr!!!");
+ HMI_ERROR("wm:jh", "Argument is nullptr!!!");
return 0;
}
json_object* tmp;
if (!json_object_object_get_ex(obj, key, &tmp)) {
- HMI_DEBUG("wm", "Not found key \"%s\"", key);
+ HMI_DEBUG("wm:jh", "Not found key \"%s\"", key);
return 0;
}
@@ -138,17 +138,70 @@ int getIntFromJson(json_object* obj, const char* key) {
json_bool getBoolFromJson(json_object* obj, const char* key) {
if ((nullptr == obj) || (nullptr == key)) {
- HMI_ERROR("wm", "Argument is nullptr!!!");
+ HMI_ERROR("wm:jh", "Argument is nullptr!!!");
return 0;
}
json_object* tmp;
if (!json_object_object_get_ex(obj, key, &tmp)) {
- HMI_DEBUG("wm", "Not found key \"%s\"", key);
+ HMI_DEBUG("wm:jh", "Not found key \"%s\"", key);
return 0;
}
return json_object_get_boolean(tmp);
}
+int inputJsonFilie(const char* file, json_object** obj) {
+ const int input_size = 128;
+ int ret = -1;
+
+ if ((nullptr == file) || (nullptr == obj)) {
+ HMI_ERROR("wm:jh", "Argument is nullptr!!!");
+ return ret;
+ }
+
+ HMI_DEBUG("wm:jh", "Input file: %s", file);
+
+ // Open json file
+ FILE *fp = fopen(file, "rb");
+ if (nullptr == fp) {
+ HMI_ERROR("wm:jh", "Could not open file");
+ return ret;
+ }
+
+ // Parse file data
+ struct json_tokener *tokener = json_tokener_new();
+ enum json_tokener_error json_error;
+ char buffer[input_size];
+ int block_cnt = 1;
+ while (1) {
+ size_t len = fread(buffer, sizeof(char), input_size, fp);
+ *obj = json_tokener_parse_ex(tokener, buffer, len);
+ if (nullptr != *obj) {
+ HMI_DEBUG("wm:jh", "File input is success");
+ ret = 0;
+ break;
+ }
+
+ json_error = json_tokener_get_error(tokener);
+ if ((json_tokener_continue != json_error)
+ || (input_size > len)) {
+ HMI_ERROR("wm:jh", "Failed to parse file (byte:%d err:%s)",
+ (input_size * block_cnt), json_tokener_error_desc(json_error));
+ HMI_ERROR("wm:jh", "\n%s", buffer);
+ *obj = nullptr;
+ break;
+ }
+ block_cnt++;
+ }
+
+ // Close json file
+ fclose(fp);
+
+ // Free json_tokener
+ json_tokener_free(tokener);
+
+ return ret;
+}
+
} // namespace jh