mirror of
git://git.psyc.eu/libpsyc
synced 2024-08-15 03:19:02 +00:00
commiting broken state
This commit is contained in:
parent
2294dabea2
commit
1f89fb579b
3 changed files with 108 additions and 62 deletions
|
@ -9,12 +9,14 @@ enum PSYC_Flags
|
||||||
|
|
||||||
enum PSYC_ReturnCodes
|
enum PSYC_ReturnCodes
|
||||||
{
|
{
|
||||||
PSYC_METHOD = 1,
|
PSYC_ERROR_EXPECTED_TAB = -8,
|
||||||
|
PSYC_BODY = 1,
|
||||||
|
PSYC_BODY_INCOMPLETE,
|
||||||
PSYC_INSUFFICIENT,
|
PSYC_INSUFFICIENT,
|
||||||
PSYC_ROUTING,
|
PSYC_ROUTING,
|
||||||
PSYC_ENTITY,
|
PSYC_ENTITY,
|
||||||
PSYC_COMPLETE,
|
PSYC_ENTITY_INCOMPLETE,
|
||||||
PSYC_HEADER_COMPLETE,
|
PSYC_HEADER_DONE,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -24,14 +26,16 @@ typedef struct
|
||||||
const uint8_t * ptr;
|
const uint8_t * ptr;
|
||||||
} PSYC_Array;
|
} PSYC_Array;
|
||||||
|
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
unsigned int cursor; // current position in buffer
|
unsigned int cursor; // current position in buffer
|
||||||
PSYC_Array buffer;
|
PSYC_Array buffer;
|
||||||
uint8_t flags;
|
uint8_t flags;
|
||||||
|
|
||||||
char inBody;
|
unsigned int contentParsed; //
|
||||||
unsigned int length;
|
char inContent;
|
||||||
|
unsigned int valueRemaining;
|
||||||
unsigned int contentLength;
|
unsigned int contentLength;
|
||||||
} PSYC_State;
|
} PSYC_State;
|
||||||
|
|
||||||
|
@ -42,22 +46,26 @@ typedef struct
|
||||||
* @param length length of that buffer
|
* @param length length of that buffer
|
||||||
*
|
*
|
||||||
* @returns an instance of the PSYC_Array struct */
|
* @returns an instance of the PSYC_Array struct */
|
||||||
inline PSYC_Array PSYC_CreateArray (uint8_t* const memory, unsigned int length)
|
inline PSYC_Array PSYC_createArray (uint8_t* const memory, unsigned int length)
|
||||||
{
|
{
|
||||||
PSYC_Array arr = {length, memory};
|
PSYC_Array arr = {length, memory};
|
||||||
|
|
||||||
return arr;
|
return arr;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* @brief initiates the state struct with flags
|
/* @brief initiates the state struct with flags
|
||||||
*
|
*
|
||||||
* @param state pointer to the state struct that should be initiated
|
* @param state pointer to the state struct that should be initiated
|
||||||
* @param flags the flags that one ones to set, se PSYC_Flags */
|
* @param flags the flags that one ones to set, see PSYC_Flags */
|
||||||
inline void PSYC_initState2 (PSYC_State* state, uint8_t flags )
|
inline void PSYC_initState2 (PSYC_State* state, uint8_t flags )
|
||||||
{
|
{
|
||||||
memset(state, 0, sizeof(PSYC_State));
|
memset(state, 0, sizeof(PSYC_State));
|
||||||
state->flags = flags;
|
state->flags = flags;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* @brief initiates the state struct
|
||||||
|
*
|
||||||
|
* @param state pointer to the state struct that should be initiated */
|
||||||
inline void PSYC_initState (PSYC_State* state)
|
inline void PSYC_initState (PSYC_State* state)
|
||||||
{
|
{
|
||||||
memset(state, 0, sizeof(PSYC_State));
|
memset(state, 0, sizeof(PSYC_State));
|
||||||
|
@ -66,16 +74,23 @@ inline void PSYC_initState (PSYC_State* state)
|
||||||
inline void PSYC_nextBuffer (PSYC_State* state, PSYC_Array newBuf)
|
inline void PSYC_nextBuffer (PSYC_State* state, PSYC_Array newBuf)
|
||||||
{
|
{
|
||||||
state->buffer = newBuf;
|
state->buffer = newBuf;
|
||||||
|
state->cursor = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline unsigned int PSYC_getBodyLength (PSYC_State* state)
|
inline unsigned int PSYC_getContentLength (PSYC_State* s)
|
||||||
{
|
{
|
||||||
return state->length;
|
return s->contentLength;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline unsigned int PSYC_getValueRemaining (PSYC_State* s)
|
||||||
|
{
|
||||||
|
return s->valueRemaining;
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int PSYC_parse(PSYC_State* state,
|
int PSYC_parse(PSYC_State* state,
|
||||||
PSYC_Array* name, PSYC_Array* value,
|
uint8_t* modifier, PSYC_Array* name, PSYC_Array* value,
|
||||||
uint8_t* modifier, unsigned long *expectedBytes);
|
unsigned long* bytesParsed, unsigned long *bytesExpected);
|
||||||
|
|
||||||
|
|
||||||
|
|
117
src/parser.c
117
src/parser.c
|
@ -47,10 +47,13 @@ inline char isAlphaNumeric(uint8_t c)
|
||||||
/** @brief generalized linebased parser */
|
/** @brief generalized linebased parser */
|
||||||
inline int PSYC_parse(
|
inline int PSYC_parse(
|
||||||
PSYC_State* state,
|
PSYC_State* state,
|
||||||
PSYC_Array* name, PSYC_Array* value,
|
uint8_t* modifier, PSYC_Array* name, PSYC_Array* value)
|
||||||
uint8_t* modifier, unsigned long* expectedBytes)
|
|
||||||
{
|
{
|
||||||
start:
|
start:
|
||||||
|
|
||||||
|
if (state->valueRemaining != 0)
|
||||||
|
goto binaryArg;
|
||||||
|
|
||||||
/* first we test if we can access the first char */
|
/* first we test if we can access the first char */
|
||||||
if(state->buffer.length<=state->cursor) // cursor is not inside the length
|
if(state->buffer.length<=state->cursor) // cursor is not inside the length
|
||||||
return PSYC_INSUFFICIENT; // return insufficient data.
|
return PSYC_INSUFFICIENT; // return insufficient data.
|
||||||
|
@ -58,16 +61,19 @@ start:
|
||||||
// in case we return insufficent, we rewind to the start.
|
// in case we return insufficent, we rewind to the start.
|
||||||
unsigned int startc=state->cursor;
|
unsigned int startc=state->cursor;
|
||||||
|
|
||||||
|
/******************************************
|
||||||
|
* * * * * * * Inspect Header * * * * * * *
|
||||||
|
*******************************************/
|
||||||
/* each line of the header starts with a glyph.
|
/* each line of the header starts with a glyph.
|
||||||
* iE :_name, -_name +_name etc, so just test if
|
* iE :_name, -_name +_name etc, so just test if
|
||||||
* the first char is a glyph. */
|
* the first char is a glyph. */
|
||||||
if(0==state->inBody)
|
if(0==state->inContent)
|
||||||
{
|
{
|
||||||
if(!isGlyph(state->buffer.ptr[state->cursor])) // is the first char not a glyph?
|
if(!isGlyph(state->buffer.ptr[state->cursor])) // is the first char not a glyph?
|
||||||
{
|
{ // parse length of content here
|
||||||
if(isNumeric(state->buffer.ptr[state->cursor]))
|
if(isNumeric(state->buffer.ptr[state->cursor]))
|
||||||
{
|
{
|
||||||
if(state->buffer.length<=++(state->cursor)) // incremented cursor inside lenght?
|
if(state->buffer.length<=++(state->cursor)) // incremented cursor inside length?
|
||||||
{
|
{
|
||||||
state->cursor=startc; // set to start value
|
state->cursor=startc; // set to start value
|
||||||
return PSYC_INSUFFICIENT; // return insufficient
|
return PSYC_INSUFFICIENT; // return insufficient
|
||||||
|
@ -75,27 +81,33 @@ start:
|
||||||
|
|
||||||
while(isNumeric(state->buffer.ptr[state->cursor]));
|
while(isNumeric(state->buffer.ptr[state->cursor]));
|
||||||
{
|
{
|
||||||
state->length = 10 * state->length + state->buffer.ptr[state->cursor] - '0';
|
state->contentLength = 10 * state->contentLength + state->buffer.ptr[state->cursor] - '0';
|
||||||
|
|
||||||
if(state->buffer.length<=++(state->cursor)) // incremented cursor inside lenght?
|
if(state->buffer.length<=++(state->cursor)) // incremented cursor inside length?
|
||||||
{
|
{
|
||||||
state->cursor=startc; // set to start value
|
state->cursor=startc; // set to start value
|
||||||
return PSYC_INSUFFICIENT; // return insufficient
|
return PSYC_INSUFFICIENT; // return insufficient
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
// a NL follows the length
|
// header ends with a NL
|
||||||
if (state->buffer.ptr[state->cursor] != '\n')
|
if (state->buffer.ptr[state->cursor] != '\n')
|
||||||
{
|
{
|
||||||
return -10;
|
return -10;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (state->buffer.length<=++(state->cursor)) // incremented cursor inside length?
|
||||||
|
{
|
||||||
|
state->cursor=startc; // set to start value
|
||||||
|
return PSYC_INSUFFICIENT; // return insufficient
|
||||||
}
|
}
|
||||||
|
|
||||||
// the only other possibility now is that the packet
|
// the only other possibility now is that the packet
|
||||||
// is complete(empty packet) or that the method started.
|
// is complete(empty packet) or that the method started.
|
||||||
if (isAlphaNumeric(state->buffer.ptr[state->cursor]))
|
if (isAlphaNumeric(state->buffer.ptr[state->cursor]))
|
||||||
{
|
{
|
||||||
state->inBody = 1;
|
state->inContent = 1;
|
||||||
|
|
||||||
if (state->flags & PSYC_HEADER_ONLY)
|
if (state->flags & PSYC_HEADER_ONLY)
|
||||||
return PSYC_HEADER_COMPLETE; // return header finished
|
return PSYC_HEADER_COMPLETE; // return header finished
|
||||||
else
|
else
|
||||||
|
@ -104,7 +116,7 @@ start:
|
||||||
|
|
||||||
if (state->buffer.ptr[state->cursor] == '|')
|
if (state->buffer.ptr[state->cursor] == '|')
|
||||||
{
|
{
|
||||||
if(state->buffer.length<=++(state->cursor)) // incremented cursor inside lenght?
|
if (state->buffer.length<=++(state->cursor)) // incremented cursor inside length?
|
||||||
{
|
{
|
||||||
state->cursor=startc; // set to start value
|
state->cursor=startc; // set to start value
|
||||||
return PSYC_INSUFFICIENT; // return insufficient
|
return PSYC_INSUFFICIENT; // return insufficient
|
||||||
|
@ -113,7 +125,7 @@ start:
|
||||||
if (state->buffer.ptr[state->cursor]=='\n')
|
if (state->buffer.ptr[state->cursor]=='\n')
|
||||||
{
|
{
|
||||||
++(state->cursor);
|
++(state->cursor);
|
||||||
state->inBody = 0;
|
state->inContent = 0;
|
||||||
return PSYC_COMPLETE; // return packet finished
|
return PSYC_COMPLETE; // return packet finished
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -121,6 +133,10 @@ start:
|
||||||
}
|
}
|
||||||
else // it is a glyph, so a variable name starts here
|
else // it is a glyph, so a variable name starts here
|
||||||
{
|
{
|
||||||
|
/***************************************************
|
||||||
|
* * * * * * * Routing Variable Start * * * * * * *
|
||||||
|
**************************************************/
|
||||||
|
|
||||||
*modifier = *(state->buffer.ptr+state->cursor);
|
*modifier = *(state->buffer.ptr+state->cursor);
|
||||||
|
|
||||||
if (state->buffer.length <= ++(state->cursor))
|
if (state->buffer.length <= ++(state->cursor))
|
||||||
|
@ -133,7 +149,7 @@ start:
|
||||||
|
|
||||||
name->length = 1;
|
name->length = 1;
|
||||||
}
|
}
|
||||||
} // endif inBody=0
|
} // endif inContent=0
|
||||||
|
|
||||||
char method=0;
|
char method=0;
|
||||||
/* each line of the header starts with a glyph.
|
/* each line of the header starts with a glyph.
|
||||||
|
@ -141,7 +157,7 @@ start:
|
||||||
* the first char is a glyph. */
|
* the first char is a glyph. */
|
||||||
/* in the body, the same applies, only that the
|
/* in the body, the same applies, only that the
|
||||||
* method does not start with a glyph.*/
|
* method does not start with a glyph.*/
|
||||||
if(1==state->inBody)
|
if(1==state->inContent)
|
||||||
{
|
{
|
||||||
if(!isGlyph(state->buffer.ptr[state->cursor]))
|
if(!isGlyph(state->buffer.ptr[state->cursor]))
|
||||||
{
|
{
|
||||||
|
@ -151,7 +167,7 @@ start:
|
||||||
// that now also just |\n can follow.
|
// that now also just |\n can follow.
|
||||||
if(state->buffer.ptr[state->cursor] == '|')
|
if(state->buffer.ptr[state->cursor] == '|')
|
||||||
{
|
{
|
||||||
if(state->buffer.length<=++(state->cursor)) // incremented cursor inside lenght?
|
if(state->buffer.length<=++(state->cursor)) // incremented cursor inside length?
|
||||||
{
|
{
|
||||||
state->cursor=startc; // set to start value
|
state->cursor=startc; // set to start value
|
||||||
return PSYC_INSUFFICIENT; // return insufficient
|
return PSYC_INSUFFICIENT; // return insufficient
|
||||||
|
@ -160,7 +176,7 @@ start:
|
||||||
if(state->buffer.ptr[state->cursor]=='\n')
|
if(state->buffer.ptr[state->cursor]=='\n')
|
||||||
{
|
{
|
||||||
++(state->cursor);
|
++(state->cursor);
|
||||||
state->inBody = 0;
|
state->inContent = 0;
|
||||||
return PSYC_COMPLETE; // return packet finished
|
return PSYC_COMPLETE; // return packet finished
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -209,7 +225,7 @@ start:
|
||||||
unsigned int i=0;
|
unsigned int i=0;
|
||||||
while(1)
|
while(1)
|
||||||
{
|
{
|
||||||
if(state->buffer.length<= ++(state->cursor)) // incremented cursor inside lenght?
|
if(state->buffer.length<= ++(state->cursor)) // incremented cursor inside length?
|
||||||
{
|
{
|
||||||
state->cursor=startc; // set to start value
|
state->cursor=startc; // set to start value
|
||||||
return PSYC_INSUFFICIENT; // return insufficient
|
return PSYC_INSUFFICIENT; // return insufficient
|
||||||
|
@ -259,13 +275,13 @@ start:
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
value->ptr=state->buffer.ptr+state->cursor+1;
|
value->ptr=state->buffer.ptr+state->cursor+1;
|
||||||
if (0 != state->length) // we know the length of the packet
|
if (0 != state->contentLength) // we know the length of the packet
|
||||||
{
|
{
|
||||||
// is the packet in the buffer?
|
// is the packet in the buffer?
|
||||||
if (value->ptr + state->length + 3 > state->buffer.ptr + state->buffer.length)
|
if (value->ptr + state->contentLength + 3 > state->buffer.ptr + state->buffer.length)
|
||||||
{ // no
|
{ // no
|
||||||
value->length = state->buffer.length - state->cursor;
|
value->length = state->buffer.length - state->cursor;
|
||||||
*expectedBytes = state->length - value->length;
|
*expectedBytes = state->contentLength - value->length;
|
||||||
}
|
}
|
||||||
else // yes, the packet is complete in the buffer.
|
else // yes, the packet is complete in the buffer.
|
||||||
{
|
{
|
||||||
|
@ -279,7 +295,7 @@ start:
|
||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
if(state->buffer.length<=++(state->cursor)) // incremented cursor inside lenght?
|
if(state->buffer.length<=++(state->cursor)) // incremented cursor inside length?
|
||||||
{
|
{
|
||||||
state->cursor=startc; // set to start value
|
state->cursor=startc; // set to start value
|
||||||
return PSYC_INSUFFICIENT ; // return insufficient
|
return PSYC_INSUFFICIENT ; // return insufficient
|
||||||
|
@ -290,7 +306,7 @@ start:
|
||||||
|
|
||||||
if(1 == method && state->buffer.ptr[state->cursor] == '\n')
|
if(1 == method && state->buffer.ptr[state->cursor] == '\n')
|
||||||
{
|
{
|
||||||
if(state->buffer.length<=(state->cursor)+2) // incremented cursor inside lenght?
|
if(state->buffer.length<=(state->cursor)+2) // incremented cursor inside length?
|
||||||
{
|
{
|
||||||
state->cursor=startc; // set to start value
|
state->cursor=startc; // set to start value
|
||||||
return PSYC_INSUFFICIENT; // return insufficient
|
return PSYC_INSUFFICIENT; // return insufficient
|
||||||
|
@ -301,7 +317,7 @@ start:
|
||||||
{
|
{
|
||||||
/* packet finishes here */
|
/* packet finishes here */
|
||||||
state->cursor+=3;
|
state->cursor+=3;
|
||||||
state->inBody = 0;
|
state->inContent = 0;
|
||||||
return PSYC_COMPLETE;
|
return PSYC_COMPLETE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -311,11 +327,9 @@ start:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(state->inBody == 1 && method==0 && state->buffer.ptr[state->cursor] == ' ') // oi, its a binary var!
|
else if(state->inContent == 1 && method==0 && state->buffer.ptr[state->cursor] == ' ') // oi, its a binary var!
|
||||||
{ // after SP the length follows.
|
{ // after SP the length follows.
|
||||||
unsigned int binLength= 0;
|
if(state->buffer.length<=++(state->cursor)) // incremented cursor inside length?
|
||||||
|
|
||||||
if(state->buffer.length<=++(state->cursor)) // incremented cursor inside lenght?
|
|
||||||
{
|
{
|
||||||
state->cursor=startc; // set to start value
|
state->cursor=startc; // set to start value
|
||||||
return PSYC_INSUFFICIENT; // return insufficient
|
return PSYC_INSUFFICIENT; // return insufficient
|
||||||
|
@ -323,9 +337,9 @@ start:
|
||||||
|
|
||||||
while(isNumeric(state->buffer.ptr[state->cursor]))
|
while(isNumeric(state->buffer.ptr[state->cursor]))
|
||||||
{
|
{
|
||||||
binLength = 10 * binLength + state->buffer.ptr[state->cursor] - '0';
|
value->length = 10 * value->length + state->buffer.ptr[state->cursor] - '0';
|
||||||
|
|
||||||
if(state->buffer.length<=++(state->cursor)) // incremented cursor inside lenght?
|
if(state->buffer.length<=++(state->cursor)) // incremented cursor inside length?
|
||||||
{
|
{
|
||||||
state->cursor=startc; // set to start value
|
state->cursor=startc; // set to start value
|
||||||
return PSYC_INSUFFICIENT; // return insufficient
|
return PSYC_INSUFFICIENT; // return insufficient
|
||||||
|
@ -333,18 +347,35 @@ start:
|
||||||
}
|
}
|
||||||
// after the length a TAB follows
|
// after the length a TAB follows
|
||||||
if (state->buffer.ptr[state->cursor] != '\t')
|
if (state->buffer.ptr[state->cursor] != '\t')
|
||||||
return -8;
|
return PSYC_ERROR_EXPECTED_TAB;
|
||||||
|
|
||||||
// is the length still in this buffer?
|
binaryArg:
|
||||||
if(state->buffer.length <= state->cursor+binLength+1 )
|
if(state->buffer.length<=++(state->cursor)) // incremented cursor inside length?
|
||||||
{
|
{
|
||||||
state->cursor=startc;
|
state->valueRemaining = value->length - state->cursor;
|
||||||
return PSYC_INSUFFICIENT;
|
state->cursor=0;
|
||||||
|
|
||||||
|
value->length = 0;
|
||||||
|
value->ptr = state->buffer.ptr;
|
||||||
|
|
||||||
|
return PSYC_ENTITY_INCOMPLETE;
|
||||||
}
|
}
|
||||||
|
|
||||||
value->ptr = state->buffer.ptr + state->cursor+1;
|
// is the length still in this buffer?
|
||||||
value->length=binLength;
|
if(state->buffer.length <= state->cursor+value->length+1 )
|
||||||
state->cursor += binLength+1;
|
{
|
||||||
|
state->valueRemaining = value->length - state->cursor;
|
||||||
|
state->cursor=0;
|
||||||
|
|
||||||
|
value->ptr = state->buffer.ptr + state->cursor;
|
||||||
|
value->length = state->buffer.length - state->cursor;
|
||||||
|
|
||||||
|
return PSYC_ENTITY_INCOMPLETE;
|
||||||
|
}
|
||||||
|
|
||||||
|
value->ptr = state->buffer.ptr + state->cursor;
|
||||||
|
state->cursor += value->length;
|
||||||
|
state->valueRemaining = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return -8;
|
return -8;
|
||||||
|
@ -369,28 +400,28 @@ start:
|
||||||
|
|
||||||
/* if a \n follows now, the an body is attached.
|
/* if a \n follows now, the an body is attached.
|
||||||
* if not, a |\n must follow */
|
* if not, a |\n must follow */
|
||||||
if(state->buffer.length<=++(state->cursor)) // incremented cursor inside lenght?
|
if(state->buffer.length<=++(state->cursor)) // incremented cursor inside length?
|
||||||
{
|
{
|
||||||
state->cursor=startc; // set to start value
|
state->cursor=startc; // set to start value
|
||||||
return PSYC_INSUFFICIENT; // return insufficient
|
return PSYC_INSUFFICIENT; // return insufficient
|
||||||
}
|
}
|
||||||
|
|
||||||
if(0 == state->inBody && state->buffer.ptr[state->cursor] == '\n')
|
if(0 == state->inContent && state->buffer.ptr[state->cursor] == '\n')
|
||||||
{
|
{
|
||||||
state->cursor+=1;
|
state->cursor+=1;
|
||||||
state->inBody = 1;
|
state->inContent = 1;
|
||||||
|
|
||||||
return PSYC_ROUTING; // return header finished
|
return PSYC_ROUTING; // return header finished
|
||||||
}
|
}
|
||||||
|
|
||||||
if(state->buffer.ptr[state->cursor] != '|') // no pipe, then only line complete, not the packet.
|
if(state->buffer.ptr[state->cursor] != '|') // no pipe, then only line complete, not the packet.
|
||||||
{
|
{
|
||||||
if (state->inBody == 0)
|
if (state->inContent == 0)
|
||||||
return PSYC_ROUTING;
|
return PSYC_ROUTING;
|
||||||
else
|
else
|
||||||
return PSYC_ENTITY;
|
return PSYC_ENTITY;
|
||||||
}
|
}
|
||||||
if(state->buffer.length<=++(state->cursor)) // incremented cursor inside lenght?
|
if(state->buffer.length<=++(state->cursor)) // incremented cursor inside length?
|
||||||
{
|
{
|
||||||
state->cursor=startc; // set to start value
|
state->cursor=startc; // set to start value
|
||||||
return PSYC_INSUFFICIENT; // return insufficient
|
return PSYC_INSUFFICIENT; // return insufficient
|
||||||
|
@ -399,7 +430,7 @@ start:
|
||||||
return -4;
|
return -4;
|
||||||
|
|
||||||
state->cursor+=1;
|
state->cursor+=1;
|
||||||
state->inBody = 0;
|
state->inContent = 0;
|
||||||
return PSYC_COMPLETE; // packet is complete
|
return PSYC_COMPLETE; // packet is complete
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,10 +23,10 @@ int main(int argc, char** argv)
|
||||||
int ret;
|
int ret;
|
||||||
PSYC_Array name, value;
|
PSYC_Array name, value;
|
||||||
|
|
||||||
PSYC_nextBuffer(&state, PSYC_CreateArray(buffer, index));
|
PSYC_nextBuffer(&state, PSYC_createArray(buffer, index));
|
||||||
|
|
||||||
// try parsing that now
|
// try parsing that now
|
||||||
while(ret=PSYC_parse(&state, &name, &value, &modifier, &expectedBytes))
|
while(ret=PSYC_parse(&state, &name, &value, &modifier))
|
||||||
{
|
{
|
||||||
switch (ret)
|
switch (ret)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue