mirror of
git://git.psyc.eu/libpsyc
synced 2024-08-15 03:19:02 +00:00
updated testparser to work with the new api. Debugging time now
This commit is contained in:
parent
c4ffec80c4
commit
9178516d81
5 changed files with 46 additions and 67 deletions
|
@ -9,12 +9,12 @@ enum PSYC_Flags
|
|||
|
||||
enum PSYC_ReturnCodes
|
||||
{
|
||||
PSYC_SUCCESS = 0,
|
||||
PSYC_INSUFFICIENT = 1,
|
||||
PSYC_ROUTING = 2,
|
||||
PSYC_ENTITY = 3,
|
||||
PSYC_COMPLETE = 4,
|
||||
PSYC_HEADER_COMPLETE = 5,
|
||||
PSYC_METHOD = 1,
|
||||
PSYC_INSUFFICIENT,
|
||||
PSYC_ROUTING,
|
||||
PSYC_ENTITY,
|
||||
PSYC_COMPLETE,
|
||||
PSYC_HEADER_COMPLETE,
|
||||
};
|
||||
|
||||
|
||||
|
@ -35,7 +35,7 @@ typedef struct
|
|||
unsigned int contentLength;
|
||||
} PSYC_State;
|
||||
|
||||
|
||||
#ifndef PSYC_COMPILE_LIBRARY
|
||||
inline PSYC_Array PSYC_CreateArray (uint8_t* const memory, unsigned int length)
|
||||
{
|
||||
PSYC_Array arr = {length, memory};
|
||||
|
@ -60,15 +60,15 @@ inline void PSYC_nextBuffer (PSYC_State* state, PSYC_Array newBuf)
|
|||
}
|
||||
|
||||
|
||||
inline int PSYC_parse(PSYC_State* state,
|
||||
PSYC_Array* name, PSYC_Array* value,
|
||||
uint8_t* modifier, unsigned long *expectedBytes);
|
||||
|
||||
|
||||
inline unsigned int PSYC_getBodyLength (PSYC_State* state)
|
||||
{
|
||||
return state->length;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
int PSYC_parse(PSYC_State* state,
|
||||
PSYC_Array* name, PSYC_Array* value,
|
||||
uint8_t* modifier, unsigned long *expectedBytes);
|
||||
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ diet:
|
|||
/opt/diet/bin/diet ar rcs libpsyc.a $O
|
||||
|
||||
lib: $S
|
||||
${CC} -static -c -Os $S -lc -DDEBUG
|
||||
${CC} -static -c -Os $S -lc -DDEBUG -DPSYC_COMPILE_LIBRARY
|
||||
ar rcs libpsyc.a $O
|
||||
|
||||
match: match.c
|
||||
|
|
|
@ -87,7 +87,7 @@ start:
|
|||
// a NL follows the length
|
||||
if (state->buffer.ptr[state->cursor] != '\n')
|
||||
{
|
||||
|
||||
return -10;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@ CFLAGS=-I.. -DDEBUG
|
|||
LDFLAGS=-L.. -lpsyc
|
||||
|
||||
works:
|
||||
cc -I.. -DDEBUG -L.. testParser.c -o testParser -lpsyc
|
||||
cc -I../../include -DDEBUG -L.. parser/testParser.c -o testParser -lpsyc
|
||||
|
||||
it: testParser
|
||||
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
#include <parser.h>
|
||||
#include <psyc/parser.h>
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
const uint8_t buffer[2048];
|
||||
uint8_t buffer[2048];
|
||||
int index;
|
||||
|
||||
int file = open(argv[1],O_RDONLY);
|
||||
|
@ -13,61 +13,40 @@ int main(int argc, char** argv)
|
|||
return -1;
|
||||
index = read(file,(void*)buffer,sizeof(buffer));
|
||||
|
||||
|
||||
PSYC_State state;
|
||||
PSYC_initState(&state);
|
||||
|
||||
unsigned int cursor=0,tmp=0;
|
||||
while(cursor < index)
|
||||
{
|
||||
unsigned long expectedBytes=0;
|
||||
uint8_t modifier;
|
||||
int ret;
|
||||
const uint8_t *varname,*varvalue;
|
||||
unsigned int nl,vl;
|
||||
PSYC_Array name, value;
|
||||
|
||||
PSYC_nextBuffer(&state, PSYC_CreateArray(buffer, index));
|
||||
|
||||
// try parsing that now
|
||||
while((ret=PSYC_parseHeader(
|
||||
&cursor,
|
||||
buffer,index,
|
||||
&varname,&nl,
|
||||
&varvalue,&vl)) == 0)
|
||||
while(ret=PSYC_parse(&state, &name, &value, &modifier, &expectedBytes))
|
||||
{
|
||||
write(0,varname,nl);
|
||||
write(0," = ",3);
|
||||
write(0,varvalue,vl);
|
||||
write(0,"\n",1);
|
||||
}
|
||||
printf("ret0: %d\ncursor0: %d\n",
|
||||
ret,cursor);
|
||||
|
||||
if(ret == 3 || ret == 2)
|
||||
switch (ret)
|
||||
{
|
||||
write(0,varname,nl);
|
||||
write(0," = ",3);
|
||||
write(0,varvalue,vl);
|
||||
write(0,"\n",1);
|
||||
}
|
||||
if(ret ==2) // header finished
|
||||
while((ret=PSYC_parseOpenBody(
|
||||
&cursor,
|
||||
buffer,index,
|
||||
&varname,&nl,
|
||||
&varvalue,&vl)) == 0)
|
||||
{
|
||||
write(0,varname,nl);
|
||||
write(0," = ",3);
|
||||
write(0,varvalue,vl);
|
||||
write(0,"\n",1);
|
||||
case PSYC_ROUTING:
|
||||
case PSYC_ENTITY:
|
||||
case PSYC_METHOD:
|
||||
write(0,&modifier,1);
|
||||
write(0,name.ptr, name.length);
|
||||
write(0," = ", 3);
|
||||
write(0,value.ptr, value.length);
|
||||
write(0,"\n", 1);
|
||||
break;
|
||||
case PSYC_COMPLETE:
|
||||
write(0, "Done parsing.\n", 15);
|
||||
continue;
|
||||
default:
|
||||
printf("Error while parsing: %i\n", ret);
|
||||
return;
|
||||
}
|
||||
|
||||
if(ret == 3 || ret == 2)
|
||||
{
|
||||
write(0,varname,nl);
|
||||
write(0," = ",3);
|
||||
write(0,varvalue,vl);
|
||||
write(0,"\n",1);
|
||||
}
|
||||
|
||||
if(tmp != cursor)
|
||||
tmp=cursor;
|
||||
else
|
||||
return 1;
|
||||
printf("ret: %d\ncursor: %d\n--------\n",
|
||||
ret,cursor);
|
||||
}
|
||||
return 0;
|
||||
|
||||
|
|
Loading…
Reference in a new issue