From 411e982ac00c3cf7ddae4ccb31d4fbd0d877228f Mon Sep 17 00:00:00 2001 From: Alan C Francis Date: Mon, 1 Jan 2024 00:15:29 +0000 Subject: [PATCH] try a wee separate app using the lib and header --- testapp/configfile.h | 36 +++++++++++++++ testapp/main.c | 102 +++++++++++++++++++++++++++++++++++++++++ testapp/smakefile | 22 +++++++++ testapp/testapp | Bin 0 -> 31280 bytes testapp/testconfig.cfg | 20 ++++++++ 5 files changed, 180 insertions(+) create mode 100644 testapp/configfile.h create mode 100644 testapp/main.c create mode 100644 testapp/smakefile create mode 100644 testapp/testapp create mode 100644 testapp/testconfig.cfg diff --git a/testapp/configfile.h b/testapp/configfile.h new file mode 100644 index 0000000..265bc4a --- /dev/null +++ b/testapp/configfile.h @@ -0,0 +1,36 @@ +#ifndef __CONFIGFILE_H +#define __CONFIGFILE_H +#include +#include +#include +typedef APTR CONFIGFILEPTR; + +CONFIGFILEPTR ConfigFileRead(CONST_STRPTR filename); +VOID ConfigFileFree(CONFIGFILEPTR configFile); + +Array ConfigFileGetAll(CONFIGFILEPTR abstractConfigFile, CONST_STRPTR compoundKey); +STRPTR ConfigFileGet(CONFIGFILEPTR abstractConfigFile, CONST_STRPTR compoundKey); +BOOL ConfigFileSet(CONFIGFILEPTR abstractConfigFile, CONST_STRPTR compoundKey, CONST_STRPTR stringValue); + +// --add +VOID ConfigFileAddVariable(CONFIGFILEPTR abstractConfigFile, CONST_STRPTR compoundKey, CONST_STRPTR stringValue); + +// --replace-all +VOID ConfigFileReplaceAll(CONFIGFILEPTR abstractConfigFile, CONST_STRPTR compoundKey, CONST_STRPTR stringValue); + +// --unset +VOID ConfigFileUnset(CONFIGFILEPTR abstractConfigFile, CONST_STRPTR compoundKey, CONST_STRPTR stringValue); + +// --unset-all +VOID ConfigFileUnsetAll(CONFIGFILEPTR abstractConfigFile, CONST_STRPTR compoundKey, CONST_STRPTR stringValue); + +// --remove-section +VOID ConfigFileRemoveSection(CONFIGFILEPTR abstractConfigFile, CONST_STRPTR canonicalName); + +VOID ConfigFileDump(CONFIGFILEPTR configFile); +VOID ConfigFileSave(CONFIGFILEPTR configFile); +VOID ConfigFileWrite(CONFIGFILEPTR abstractConfigFile, BPTR file); + +Array ConfigFileSubsectionsForSection(CONFIGFILEPTR abstractConfigFile, CONST_STRPTR primarySection); + +#endif \ No newline at end of file diff --git a/testapp/main.c b/testapp/main.c new file mode 100644 index 0000000..b9b8f49 --- /dev/null +++ b/testapp/main.c @@ -0,0 +1,102 @@ +// Printf("running (%ld bytes avail)\n", AvailMem(0)); +#define __CLIB_PRAGMA_LIBCALL +#include +#include +#define __NOLIBBASE__ +// #include "containers/stringarray.h" +// #include "containers/linearray.h" +#include "configfile.h" +//#include "configmodel.h" +#include + +WORD DoTheWork(STRPTR filename); +VOID ProcessFile(BPTR configFile); + +char *vers="\0$VER: ConfigReader (dd.mm.yyyy)"; +char *stacksize = "$STACK:8192"; // only works when started from CLI + +struct Library *ContainerkitBase; + +WORD DoTheWork(STRPTR filename) +{ + WORD result = RETURN_OK; + if (ContainerkitBase) + { + CONFIGFILEPTR config = ConfigFileRead(filename); + if( config != NULL ) + { + Array values = NULL; + STRPTR var = NULL; + +// values = ConfigFileGetAll(config, "branch.main.remote"); +// StringArrayForEach(values, Printf("main %s\n", aString);); +// StringArrayFree(values, TRUE); + +// var = ConfigFileGet(config, "branch.config-file-parsing-from-book.remote"); +// Printf("parse %s\n\n\n", var); + // FreeVec(var); + + // ConfigFileDump(config); +// ConfigFileSet(config, "branch.main.foob", "bar"); + // ConfigFileSet(config, "branch.alan.foob", "bar"); + ConfigFileSet(config, "branch.main.remote", "testing"); + ConfigFileSet(config, "branch.main.second", "testing"); +// ConfigFileSet(config, "branch.main.third", "testing"); +// ConfigFileReplaceAll(config, "branch.main.alan", "hello"); +// ConfigFileAddVariable(config, "branch.main.newvar", "alan"); +// ConfigFileAddVariable(config, "branch.main.newvar", "alan2"); +// ConfigFileAddVariable(config, "branch.main.newvar", "alan3"); +// ConfigFileReplaceAll(config, "branch.main.newvar", "goodbye"); +// ConfigFileAddVariable(config, "branch.main.newvar1", "yay"); + + ConfigFileAddVariable(config, "foo1", "alan"); + ConfigFileAddVariable(config, "test.foo1", "alan2"); + ConfigFileAddVariable(config, "test.foo.foo1", "alan3"); + ConfigFileAddVariable(config, "test.foo.bar.foo1", "alan4"); + ConfigFileAddVariable(config, "test.foo.bar.baz.foo1", "alan5"); + ConfigFileAddVariable(config, "test.foo.bar.baz.bat.foo1", "alan6"); + ConfigFileAddVariable(config, "test.section.jane.foo3", "alan3"); + values = ConfigFileSubsectionsForSection(config, "branch"); + if( values ) + { + ArrayForEach(STRPTR, aString, values, Printf("branch:[%s]\n",aString);); + ArrayForEach(STRPTR, aString, values, FreeVec(aString);); + DeleteArray(values); + } + ConfigFileSave(config); + + ConfigFileFree(config); + } + else + { + Printf("could not read the file\n"); + result = RETURN_ERROR; + } + } + return result; +} + +WORD main(WORD argc, STRPTR *argv) +{ + WORD result = RETURN_OK; + + // this does nothing but the first call to Print drops a bunch of memory, + // I assume because of opening some resource so this means my start and + // end markers are "clean" and I can ensure I'm not leaking. + Printf("\n"); + + ContainerkitBase = OpenLibrary("containerkit.library", 1); + if( ContainerkitBase ) + { + Printf("\n\nrunning (%ld bytes avail)\n\n", AvailMem(0)); + result = DoTheWork(argv[1]); + Printf("\n\ndone (%ld bytes avail)\n\n", AvailMem(0)); + CloseLibrary(ContainerkitBase); + } + else + { + Printf("failed to open library\n"); + result = RETURN_ERROR; + } + return result; +} diff --git a/testapp/smakefile b/testapp/smakefile new file mode 100644 index 0000000..a9c3aab --- /dev/null +++ b/testapp/smakefile @@ -0,0 +1,22 @@ +# +# :ts=8 +# + +############################################################################### + +NAME = testapp + +LFLAGS = addsym smallcode smalldata noicons batch +LIBS = lib:sc.lib lib:amiga.lib lib:debug.lib + +############################################################################### + +$(NAME) : main.o configfile.lib configfile.h + slink lib:c.o main.o to $(NAME) noicons lib $(LIBS) configfile.lib $(LFLAGS) + +clean: + delete \#?.o $(NAME) ALL QUIET + +############################################################################### + +main.o : main.c diff --git a/testapp/testapp b/testapp/testapp new file mode 100644 index 0000000000000000000000000000000000000000..337564a52cc9edcca3f9fc9634444b3778dd0da8 GIT binary patch literal 31280 zcmc(IeRxyHmG?-#l7$gQ7{#j)mkdI2WFaKS7(ywVl|LXt7~7F;;v_V_!nVYRY-@#0 z2`?`z6TXs=EJ^c0^LF#*>BG}avov)nr7X)*lcgykG;0W((v&7Ng^;8qWwUITB?iC0 zGxuKID?^&yXa9Ijban5{nKNh3oUb`ES79vg-X*tXNR+f->sD3-} zJWH@DTv23~Whh~%SwQPk)FKe!e#?b~-JP_2NRXf?5CQKKoalA?t+oV}eOIkp=LWSH z<7T;tO3?OL!iKg-s2#osQMZ)eTKC>xt*`Iv=vfs=E?=6Cr5|FDtOJl9*8t|ZliAk3 zFwE@X^S96P^|12w40K%t=flBqF?LJ1G!)6SHsIO&%+cx}FmE`?BKXV-j*YR&XK@$D zCn}!a#$7Ky-QvlLyN&p)rKhi4#@!Bl9u-d?<8A<-7sS))hCi?{o{r(OSCkyZ-35G3 zh^GVLq^ST;pNXee@Z_MoTR!%L(9+Kf5^IA|=HWfe6KrJM?*lKaO`D+&rNJQMRToSy zw~aXH8DIa(@O-q9T7RI!%O{Mjebn00vHQQ^j50$Mt!X>D9^8ZFM0M|aJasYkH06Q@I2odK0n0@e!JE)v*O9ibv^qv)3 z<&E`y_6$i!*Ch8T{huVtl$zuRL!t7oF>C$j%*^7fl||Sb*1;CDFq_SmvSv1)&0;c( zvRYQj9%PNInpLnRte%BfxsI{oRMDyWKI60TDYve^FPOicweB)smR%9Q)fJZ_TjB-o zr1>(xr+zy|jv9`q$oBY|o7XXu)y4Azx7PR7|K)uRRb-p@1hys|{2|;8)NcnzrIgbi zN`YhbeJaEOK-e@0DzE>`@Of73OIk~0XUaMBeI~gV5${S{NWXjw`MCIpu#6>j?=54X zyocE!ffBbleia|)wx$f`JE)Y^w~SnJH>3;d_e)ExRjj<|5bViCKF0CepS~WyQtjCO z*Y#ho?}Kg2fp;@=70XxPKiGOB`0_g{W>n6cb?5A_#+J5sbjG#z_cXX0Dya4NqR$7tRBfsnJ=eF&SHf8GGlSsaSGdRu{woPYw?3Q>r_vf(~E0{Db z#3Xzi@q&~cw$_mvk&CA#^B8lc{_W8BnXCHy%#M#O#e8kVcY$ZDJ6yUzChh(A6mv|p zl{1r#B?{m{Sc;=>iSCLIMJC2i^D(8OUHE*SHDxLbna*I=xa>(;2Z6mM6L)dw$oB6u zN21U@os}G_;$6%UW31KJf>}J}OXk_uGr8OksE9RDWV13UZZFRd55gaK>bJ{OVuoFw z&V(Jo{GX2AE!rNddruw|GzY=YAhUyZ+kFk;^D|}zOdb{tG42b;m^I4HxZ22?#_g$M zl?#l$ZJWkSEI;lnTL+zc&nl%X*}DCxv#|U`VR#KQlkWt@gRKoHwW8GF&QBHaMKOqo zhpJZ3?Ba5Qc}!N$tPDzgpo7S7{{j9Bmge)7o44XeF17xKJ!U&xya z&%0A#sQ@qRu>OtpeLf#=>W#IpFy?x7jm-lpMeRL$V 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 literal 0 HcmV?d00001 diff --git a/testapp/testconfig.cfg b/testapp/testconfig.cfg new file mode 100644 index 0000000..367d98b --- /dev/null +++ b/testapp/testconfig.cfg @@ -0,0 +1,20 @@ +#this is a comment +[core] + repositoryformatversion = 0 + precomposeunicode = true + +[remote "origin.foo"] #this is also a coment + url = git@git.alancfrancis.com:acf/AmigaGit2.git + fetch = +refs/heads/*:refs/remotes/origin/* + +[branch "main"] + remote = origin + merge = refs/heads/main + alan = yes + alan = no + alan = sure + +[branch "config-file-parsing-from-book"] + remote = origin + merge = refs/heads/config-file-parsing-from-book +