You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
1.9 KiB
85 lines
1.9 KiB
// Printf("running (%ld bytes avail)\n", AvailMem(0));
|
|
#define __CLIB_PRAGMA_LIBCALL
|
|
#include <proto/exec.h>
|
|
#include <proto/dos.h>
|
|
#define __NOLIBBASE__
|
|
#include "stringarray.h"
|
|
#include "linearray.h"
|
|
#include "configmodel.h"
|
|
#include <proto/containerkit.h>
|
|
|
|
#include "cregex.h"
|
|
|
|
#define ZERO ((BPTR)0)
|
|
|
|
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;
|
|
|
|
VOID ProcessFile(BPTR configFile)
|
|
{
|
|
Array lineArray = NULL;
|
|
LINEPTR line = NULL;
|
|
|
|
InitialisePatterns();
|
|
lineArray = LineArrayNew();
|
|
line = LineReadIncludingContinuation(configFile);
|
|
while( line != NULL )
|
|
{
|
|
// Printf("successfully read line {%s}\n", LineGetRawText(line));
|
|
LineArrayAppend(lineArray, line);
|
|
line = LineReadIncludingContinuation(configFile);
|
|
}
|
|
LineArrayFree(lineArray);
|
|
ReleasePatterns();
|
|
}
|
|
|
|
WORD DoTheWork(STRPTR filename)
|
|
{
|
|
WORD result = RETURN_OK;
|
|
if (ContainerkitBase)
|
|
{
|
|
BPTR configFile = ZERO;
|
|
configFile = Open(filename, MODE_OLDFILE);
|
|
if( configFile != ZERO )
|
|
{
|
|
ProcessFile(configFile);
|
|
Close(configFile);
|
|
}
|
|
else
|
|
{
|
|
Printf("file open failed!\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;
|
|
}
|
|
|