From f7ad1d4158a1efaf620801673b364a3705b98aef Mon Sep 17 00:00:00 2001 From: M.Gergő Date: Wed, 27 May 2020 01:30:33 +0200 Subject: Library OK --- src/ini_read.c | 11 ++++-- src/main.c | 114 +++++++++++++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 111 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/ini_read.c b/src/ini_read.c index 66799a1..e58bc80 100644 --- a/src/ini_read.c +++ b/src/ini_read.c @@ -588,7 +588,7 @@ struct lcini_data *iniFSM(struct lcini_data *data, const uint8_t *in, int32_t le lcini_data *lciniCreateNode( lcini_data *head, int lineLen ){ /* Creates one Node */ lcini_data *curr; - curr = (lcini_data *) malloc(1*sizeof(lcini_data)); + curr = (lcini_data *) calloc(1, sizeof(lcini_data)); curr->nodeState = lcini_EMPTY; curr->lineNum = 0; curr->lineLen = lineLen; @@ -600,6 +600,11 @@ lcini_data *lciniCreateNode( lcini_data *head, int lineLen ){ /* Creates one Nod curr->comment = (uint8_t *) calloc(lineLen, sizeof(uint8_t)); curr->errorMsg = (uint8_t *) calloc(lineLen, sizeof(uint8_t)); } else { + curr->section = NULL; + curr->param = NULL; + curr->value = NULL; + curr->comment = NULL; + curr->errorMsg = NULL; lineLen = 0; } curr->sectionLen = lineLen; @@ -641,7 +646,7 @@ lcini_data *lciniDestroyNodes( lcini_data *head){ /* Destroys Nodes from HEAD to lcini_shortret *lciniMKShortRet(int bufflen){ lcini_shortret *dt=NULL; - dt = (lcini_shortret *) malloc(1*sizeof(lcini_shortret)); + dt = (lcini_shortret *) calloc(1, sizeof(lcini_shortret)); if(dt){ dt->ret = (char *) calloc(bufflen, sizeof(char)); dt->retlen = bufflen; @@ -747,7 +752,7 @@ struct lcini_data *lciniReadOut(const char *filename){ /* Reads the entire } return list; } - + int lciniReadOutOwn(const char *filename){ /* Reads the entire file to a linked-list */ diff --git a/src/main.c b/src/main.c index a0f342a..ff84fd4 100644 --- a/src/main.c +++ b/src/main.c @@ -3,26 +3,35 @@ #include #include #include - -/* #include "inirw_internal.h" */ +/*#define TESTLIBD*/ +/*#define LIBINSTALLED*/ +#ifdef TESTLIBD +#include +#endif +#ifdef LIBINSTALLED +#include +#else #include "lightconfini.h" +#endif #include "main.h" #define main_c +#ifdef LIBINSTALLED +const char* linkpath = "liblightconfini.so.1"; +#else +const char* linkpath = "./libdir/liblightconfini.so.1"; +#endif + /* int lens=46, lenp=36, lenv=56, lenc=74, elen=65; */ int lens=16, lenp=16, lenv=16, lenc=24, elen=55; lcinimyReadFunc mylciniReadOutFunct=myfunct; -/*lcinimyReadFunc mylciniReadOutFunct=NULL;*/ - - - +/*lcinimyReadFunc *mylciniReadOutFunct=NULL;*/ char *search_sec = "bom_section"; char *search_par = "mmm"; - void myfunct(int line, int linelen, char *section, int sectionlen, char *param, int paramlen, char *value, int valuelen, char *comment, int commentlen, char *error, int errorlen ){ printf("LN: %d,\tLL: %d, \tSC: %*s,%2d P: %*s,%2d V: %*s,%2d C: %*s,%2d ER: %*s,%2d\n", line, linelen, lens, section,sectionlen, @@ -37,12 +46,92 @@ int main(int argc, char* argv[]){ lcini_data *ini=NULL, *tmp=NULL; FILE *fp; lcini_shortret *sret=NULL, *sret2=NULL; - +#ifdef TESTLIBD + void *hl; + size_t (*lciniFileMaxLineLen)(FILE *tfd); + struct lcini_data *(*lciniReadOut)(const char *filename); + int (*lciniReadOutOwn)(const char *filename); + lcini_data *(*lciniGet)(lcini_data *head, const char *section, const char *parameter); + int (*lciniGetStr)(lcini_data *head, const char *section, const char *parameter, char *dst, int dstlen); + lcini_shortret *(*lciniGetShort)(lcini_data *head, const char *section, const char *parameter, lcini_shortret *ret); + lcini_shortret *(*lciniGetFromFileShort)(const char *filename, const char *section, const char *parameter, lcini_shortret *ret); + int (*lciniGetFromFileStr)(const char *filename, const char *section, const char *parameter, char *dst, int dstlen); + lcini_data *(*lciniDestroyNodes)( lcini_data *head); + /*lcini_data *(*lciniCreateNode)( lcini_data *head, int lineLen ); */ + /*lcini_shortret *(*lciniMKShortRet)(int bufflen); */ + void (*lciniDestroyShortRet)(lcini_shortret *dt); +#endif if(argc > 1){ memset(filename, 0, 4096); /* snprintf(filename, 4096, "%s", argv[1]); */ sprintf(filename, "%s", argv[1]); } + if(argc > 2){ + search_sec = argv[2]; + } + if(argc > 3){ + search_par = argv[3]; + } + +#ifdef TESTLIBD + hl = dlopen(linkpath, RTLD_LAZY); + if(!hl){ + printf("\nDynamic Library load error - %s \nexit\n",dlerror()); + exit(1); + } + lciniFileMaxLineLen = dlsym(hl, "lciniFileMaxLineLen"); + if((buff1 = dlerror()) != NULL){ + printf("\nsym err - %s\n", buff1); + } + lciniReadOut = dlsym(hl, "lciniReadOut"); + if((buff1 = dlerror()) != NULL){ + printf("\nsym err - %s\n", buff1); + } + lciniReadOutOwn = dlsym(hl, "lciniReadOutOwn"); + if((buff1 = dlerror()) != NULL){ + printf("\nsym err - %s\n", buff1); + } + lciniGet = dlsym(hl,"lciniGet"); + if((buff1 = dlerror()) != NULL){ + printf("\nsym err - %s\n", buff1); + } + lciniGetStr = dlsym(hl,"lciniGetStr"); + if((buff1 = dlerror()) != NULL){ + printf("\nsym err - %s\n", buff1); + } + lciniGetShort = dlsym(hl,"lciniGetShort"); + if((buff1 = dlerror()) != NULL){ + printf("\nsym err - %s\n", buff1); + } + lciniGetFromFileShort = dlsym(hl, "lciniGetFromFileShort"); + if((buff1 = dlerror()) != NULL){ + printf("\nsym err - %s\n", buff1); + } + lciniGetFromFileStr = dlsym(hl,"lciniGetFromFileStr"); + if((buff1 = dlerror()) != NULL){ + printf("\nsym err - %s\n", buff1); + } + lciniDestroyNodes = dlsym(hl,"lciniDestroyNodes"); + if((buff1 = dlerror()) != NULL){ + printf("\nsym err - %s\n", buff1); + } + /*lciniCreateNode = dlsym(hl,"lciniCreateNode"); + if((buff1 = dlerror()) != NULL){ + printf("\nsym err - %s\n", buff1); + }*/ + /*lciniMKShortRet = dlsym(hl,"lciniMKShortRet"); + if((buff1 = dlerror()) != NULL){ + printf("\nsym err - %s\n", buff1); + }*/ + lciniDestroyShortRet = dlsym(hl,"lciniDestroyShortRet"); + if((buff1 = dlerror()) != NULL){ + printf("\nsym err - %s\n", buff1); + } + + +#endif + + fp = fopen(filename, "rb"); len = lciniFileMaxLineLen(fp)+1; if(fp != NULL) { fclose(fp);} @@ -85,7 +174,7 @@ int main(int argc, char* argv[]){ printf("\n\nFUNC: lciniReadOutOwn():\n\n"); - /* lciniReadOutOwn(filename); */ + lciniReadOutOwn(filename); @@ -117,7 +206,7 @@ int main(int argc, char* argv[]){ printf("\n\nFUNC: lciniGetFromFileShort():\n\n"); - sret2 = lciniGetFromFileShort(filename, search_sec, search_par, NULL); + sret2 = lciniGetFromFileShort(filename, search_sec, search_par, sret2); printf("---\n"); if(sret2){ printf("SR: '%s', %d, t: ",sret2->ret,sret2->retlen); @@ -131,7 +220,7 @@ int main(int argc, char* argv[]){ } printf("\n\nFUNC: lciniGetFromFileStr():\n\n"); - /* r=lciniGetFromFileStr(filename, search_sec, search_par, buff6, 100); */ + r=lciniGetFromFileStr(filename, search_sec, search_par, buff6, 100); printf("r: %d, R: '%s' \n",r,buff6); @@ -145,5 +234,8 @@ int main(int argc, char* argv[]){ free(buff5); free(buff6); printf("\n -- end --\n"); +#ifdef TESTLIBD + dlclose(hl); +#endif return 0; } -- cgit v1.2.3