Skip to content
Snippets Groups Projects
Commit b3a9cdb8 authored by alexey.stratulat's avatar alexey.stratulat
Browse files

[*] Fix. Translated use for building a list of manifests from dap_list _t to utlist.

parent e5434255
No related branches found
No related tags found
1 merge request!27Support update sdk and merge plugins repo
#ifndef _DAP_CHAIN_PLUGINS_MANIFEST_ #ifndef _DAP_CHAIN_PLUGINS_MANIFEST_
#define _DAP_CHAIN_PLUGINS_MANIFEST_ #define _DAP_CHAIN_PLUGINS_MANIFEST_
#include "dap_common.h" #include "dap_common.h"
#include "dap_list.h"
#include "dap_strfuncs.h" #include "dap_strfuncs.h"
#include "stdio.h" #include "stdio.h"
#include "json-c/json_object.h" #include "json-c/json_object.h"
#include "json-c/json_tokener.h" #include "json-c/json_tokener.h"
#include "utlist.h"
#ifdef __cplusplus #ifdef __cplusplus
extern "C"{ extern "C"{
...@@ -14,37 +14,32 @@ extern "C"{ ...@@ -14,37 +14,32 @@ extern "C"{
#undef LOG_TAG #undef LOG_TAG
#define LOG_TAG "dap_chain_plugins_manifest" #define LOG_TAG "dap_chain_plugins_manifest"
enum data_in_manifest{ typedef struct dap_chain_plugins_list_char{
NAME, char *value;
VERSION, struct dap_chain_plugins_list_char *next;
DEPENDENCYS, }dap_chain_plugins_list_char_t;
AUTHOR,
DESCRIPTION
};
typedef struct manifest{ typedef struct dap_list_manifest{
char *name; char *name;
char *version; char *version;
dap_list_t *dependencys;
char *author; char *author;
char *description; char *description;
bool init; dap_chain_plugins_list_char_t *dependencys;
}manifest_t; struct dap_list_manifest *next;
}dap_chain_plugins_list_manifest_t;
manifest_t *dap_chain_plugins_manifest_new(const char *name, const char *version, const dap_list_t *dep, const char *author, dap_chain_plugins_list_manifest_t* manifests;
const char *description);
void dap_chain_plugins_manifest_free(manifest_t *manifest);
manifest_t* dap_chain_plugins_add_manifest_from_file(const char *file_path);
static dap_list_t *manifests; dap_chain_plugins_list_manifest_t *dap_chain_plugins_manifest_new(const char *name, const char *version, const dap_chain_plugins_list_char_t *dep, const char *author,
const char *description);
void dap_chain_plugins_manifest_list_create(); void dap_chain_plugins_manifest_list_create();
manifest_t *dap_chain_plugins_manifest_get_list(size_t index);
unsigned int dap_chain_plugins_manifests_get_lenght();
void dap_chain_plugins_manifest_list_free();
void dap_chain_plugins_manifest_list_add_manifest(manifest_t *manifest);
bool dap_chain_plugins_manifest_list_add_from_file(const char *file_path);
dap_chain_plugins_list_manifest_t* dap_chain_plugins_manifests_get_list();
dap_chain_plugins_list_manifest_t* dap_chain_plugins_add_manifest_from_file(const char *file_path);
bool dap_chain_plugins_manifest_list_add_from_file(const char *path_file);
#ifdef __cplusplus #ifdef __cplusplus
} }
......
#include "dap_chain_plugins_manifest.h" #include "dap_chain_plugins_manifest.h"
dap_list_t *JSON_array_to_dap_list(json_object *obj){ dap_chain_plugins_list_manifest_t *dap_chain_plugins_manifest_new(const char *name, const char *version, const dap_chain_plugins_list_char_t *dep, const char *author,
int len = json_object_array_length(obj); const char *description){
dap_list_t *list = NULL; dap_chain_plugins_list_manifest_t *man = (dap_chain_plugins_list_manifest_t*)DAP_NEW(dap_chain_plugins_list_manifest_t);
json_object *j_data; man->name = dap_strdup(name);
char *data; man->author = dap_strdup(author);
for (int i = 0; i < len; i++){ man->version = dap_strdup(version);
j_data = json_object_array_get_idx(obj, i); man->description = dap_strdup(description);
data = dap_strdup(json_object_get_string(j_data)); man->dependencys = NULL;
dap_list_append(list, data); //copy informantion from dep to man->dependencys
int len_dep;
dap_chain_plugins_list_char_t *char_t;
LL_COUNT((dap_chain_plugins_list_char_t*)dep, char_t, len_dep);
LL_FOREACH((dap_chain_plugins_list_char_t*)dep, char_t){
LL_APPEND(man->dependencys, char_t);
} }
return list; man->dependencys = (dap_chain_plugins_list_char_t*)dep;
return man;
} }
manifest_t *dap_chain_plugins_manifest_new(const char *name, const char *version, const dap_list_t *dep, const char *author, static dap_chain_plugins_list_char_t* JSON_array_to_dap_list_char(json_object *j_obj){
const char *description){ dap_chain_plugins_list_char_t *list = NULL;
manifest_t *manifest = (manifest_t*)malloc(sizeof(manifest_t));//DAP_NEW(manifest_t); dap_chain_plugins_list_char_t *element = NULL;
manifest->name = dap_strdup(name); for (int i = 0; i < json_object_array_length(j_obj); i++){
manifest->version = dap_strdup(version); element = (dap_chain_plugins_list_char_t*)DAP_NEW(dap_chain_plugins_list_char_t);
manifest->dependencys = dap_list_copy((dap_list_t*)dep); element->value = dap_strdup(json_object_get_string(json_object_array_get_idx(j_obj, i)));
manifest->author = dap_strdup(author); LL_APPEND(list, element);
manifest->description = dap_strdup(description); }
manifest->init = false; return list;
return manifest;
} }
void dap_chain_plugins_manifest_free(manifest_t *manifest){
free(manifest->name); void dap_chain_plugins_manifest_list_create(){
free(manifest->version); manifests = NULL;
free(manifest->author);
free(manifest->description);
dap_list_free(manifest->dependencys);
free(manifest);
} }
manifest_t* dap_chain_plugins_add_manifest_from_file(const char *file_path){
dap_chain_plugins_list_manifest_t* dap_chain_plugins_add_manifest_from_file(const char *file_path){
//READ File in char //READ File in char
log_it(L_INFO, "Parse json file"); log_it(L_INFO, "Parse json file");
FILE *file = fopen(file_path, "rt"); FILE *file = fopen(file_path, "rt");
...@@ -58,38 +60,23 @@ manifest_t* dap_chain_plugins_add_manifest_from_file(const char *file_path){ ...@@ -58,38 +60,23 @@ manifest_t* dap_chain_plugins_add_manifest_from_file(const char *file_path){
version = json_object_get_string(j_version); version = json_object_get_string(j_version);
author = json_object_get_string(j_author); author = json_object_get_string(j_author);
description = json_object_get_string(j_description); description = json_object_get_string(j_description);
dap_list_t *dep = JSON_array_to_dap_list(j_dependencys); dap_chain_plugins_list_char_t *dep = JSON_array_to_dap_list_char(j_dependencys);
DAP_FREE(json); DAP_FREE(json);
manifest_t *manifest = dap_chain_plugins_manifest_new(name, version, dep, author, description); dap_chain_plugins_list_char_t *tmp = NULL;
dap_chain_plugins_list_manifest_t *manifest = dap_chain_plugins_manifest_new(name, version, dep, author, description);
return manifest; return manifest;
} }
//-------------------------------------------------------- void dap_chain_plugins_manifest_list_add_manifest(dap_chain_plugins_list_manifest_t *man){
void dap_chain_plugins_manifest_list_create(){ LL_APPEND(manifests, man);
manifests = NULL;
}
manifest_t *dap_chain_plugins_manifest_get_list(size_t index){
return (manifest_t*)dap_list_nth_data(manifests, (unsigned int)index);
} }
unsigned int dap_chain_plugins_manifests_get_lenght(){ dap_chain_plugins_list_manifest_t* dap_chain_plugins_manifests_get_list(){
return dap_list_length(manifests); return manifests;
} }
void dap_chain_plugins_manifest_list_free(){
unsigned int len = dap_list_length(manifests);
for (unsigned int i = 0; i < len;i++){
manifest_t* manifest = dap_list_nth_data(manifests, i);
dap_chain_plugins_manifest_free(manifest);
}
dap_list_free(manifests);
}
void dap_chain_plugins_manifest_list_add_manifest(manifest_t *manifest){
manifests = dap_list_append(manifests, manifest);
}
bool dap_chain_plugins_manifest_list_add_from_file(const char *file_path){ bool dap_chain_plugins_manifest_list_add_from_file(const char *file_path){
manifest_t *manifest = dap_chain_plugins_add_manifest_from_file(file_path); dap_chain_plugins_list_manifest_t *manifest = dap_chain_plugins_add_manifest_from_file(file_path);
if (manifest == NULL) if (manifest == NULL)
return false; return false;
dap_chain_plugins_manifest_list_add_manifest(manifest); dap_chain_plugins_manifest_list_add_manifest(manifest);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment