From: wang_zhiqiang Date: Mon, 22 Apr 2019 07:11:27 +0000 (+0800) Subject: add writeJsonFile X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?p=apps%2Fagl-service-homescreen.git;a=commitdiff_plain;h=c393aaa4ae541f1f925981a6f8ae20d46626e8b6 add writeJsonFile Change-Id: I6269845fbd3b40d697bc7c77a457b380a5906bbc --- diff --git a/src/hs-helper.cpp b/src/hs-helper.cpp index 159668e..33ab721 100644 --- a/src/hs-helper.cpp +++ b/src/hs-helper.cpp @@ -283,12 +283,11 @@ std::string get_application_id(const afb_req_t request) * * #### Return * 0 : read success - * 1 : read fail + * -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) { @@ -296,6 +295,7 @@ int readJsonFile(const char* file, struct json_object **obj) return ret; } + *obj = nullptr; const int buf_size = 128; char buf[buf_size]; struct json_tokener *tokener = json_tokener_new(); @@ -321,3 +321,40 @@ int readJsonFile(const char* file, struct json_object **obj) json_tokener_free(tokener); return ret; } + +/** + * write to json file + * + * #### Parameters + * - file : output file name + * - obj : json_object + * + * #### Return + * 0 : read success + * -1 : read fail + * + */ +int writeJsonFile(const char* file, struct json_object *obj) +{ + int ret = -1; + FILE *fp = fopen(file, "wb"); + if(fp == nullptr) { + AFB_ERROR("open %s failed", file); + return ret; + } + + const char *str = json_object_to_json_string(obj); + size_t len = sizeof(str); + size_t cnt = fwrite(str, len, 1, fp); + if(cnt == len) { + ret = 0; + fflush(fp); + fsync(fileno(fp)); + } + else { + AFB_WARNING("write to %s failed.", file); + } + + fclose(fp); + return ret; +} \ No newline at end of file