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!1Features 2954
#ifndef _DAP_CHAIN_PLUGINS_MANIFEST_
#define _DAP_CHAIN_PLUGINS_MANIFEST_
#include "dap_common.h"
#include "dap_list.h"
#include "dap_strfuncs.h"
#include "stdio.h"
#include "json-c/json_object.h"
#include "json-c/json_tokener.h"
#include "utlist.h"
#ifdef __cplusplus
extern "C"{
......@@ -14,37 +14,32 @@ extern "C"{
#undef LOG_TAG
#define LOG_TAG "dap_chain_plugins_manifest"
enum data_in_manifest{
NAME,
VERSION,
DEPENDENCYS,
AUTHOR,
DESCRIPTION
};
typedef struct dap_chain_plugins_list_char{
char *value;
struct dap_chain_plugins_list_char *next;
}dap_chain_plugins_list_char_t;
typedef struct manifest{
typedef struct dap_list_manifest{
char *name;
char *version;
dap_list_t *dependencys;
char *author;
char *description;
bool init;
}manifest_t;
dap_chain_plugins_list_char_t *dependencys;
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,
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);
dap_chain_plugins_list_manifest_t* manifests;
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();
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
}
......
#include "dap_chain_plugins_manifest.h"
dap_list_t *JSON_array_to_dap_list(json_object *obj){
int len = json_object_array_length(obj);
dap_list_t *list = NULL;
json_object *j_data;
char *data;
for (int i = 0; i < len; i++){
j_data = json_object_array_get_idx(obj, i);
data = dap_strdup(json_object_get_string(j_data));
dap_list_append(list, data);
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){
dap_chain_plugins_list_manifest_t *man = (dap_chain_plugins_list_manifest_t*)DAP_NEW(dap_chain_plugins_list_manifest_t);
man->name = dap_strdup(name);
man->author = dap_strdup(author);
man->version = dap_strdup(version);
man->description = dap_strdup(description);
man->dependencys = NULL;
//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,
const char *description){
manifest_t *manifest = (manifest_t*)malloc(sizeof(manifest_t));//DAP_NEW(manifest_t);
manifest->name = dap_strdup(name);
manifest->version = dap_strdup(version);
manifest->dependencys = dap_list_copy((dap_list_t*)dep);
manifest->author = dap_strdup(author);
manifest->description = dap_strdup(description);
manifest->init = false;
return manifest;
static dap_chain_plugins_list_char_t* JSON_array_to_dap_list_char(json_object *j_obj){
dap_chain_plugins_list_char_t *list = NULL;
dap_chain_plugins_list_char_t *element = NULL;
for (int i = 0; i < json_object_array_length(j_obj); i++){
element = (dap_chain_plugins_list_char_t*)DAP_NEW(dap_chain_plugins_list_char_t);
element->value = dap_strdup(json_object_get_string(json_object_array_get_idx(j_obj, i)));
LL_APPEND(list, element);
}
return list;
}
void dap_chain_plugins_manifest_free(manifest_t *manifest){
free(manifest->name);
free(manifest->version);
free(manifest->author);
free(manifest->description);
dap_list_free(manifest->dependencys);
free(manifest);
void dap_chain_plugins_manifest_list_create(){
manifests = NULL;
}
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
log_it(L_INFO, "Parse json file");
FILE *file = fopen(file_path, "rt");
......@@ -58,38 +60,23 @@ manifest_t* dap_chain_plugins_add_manifest_from_file(const char *file_path){
version = json_object_get_string(j_version);
author = json_object_get_string(j_author);
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);
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;
}
//--------------------------------------------------------
void dap_chain_plugins_manifest_list_create(){
manifests = NULL;
}
manifest_t *dap_chain_plugins_manifest_get_list(size_t index){
return (manifest_t*)dap_list_nth_data(manifests, (unsigned int)index);
void dap_chain_plugins_manifest_list_add_manifest(dap_chain_plugins_list_manifest_t *man){
LL_APPEND(manifests, man);
}
unsigned int dap_chain_plugins_manifests_get_lenght(){
return dap_list_length(manifests);
dap_chain_plugins_list_manifest_t* dap_chain_plugins_manifests_get_list(){
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){
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)
return false;
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