Simplify NEXT_LINE macro and put most of it in a separate function.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@21520 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
reimar 2006-12-06 12:25:52 +00:00
parent a900d6f59a
commit f030c777b8
1 changed files with 16 additions and 16 deletions

View File

@ -35,6 +35,21 @@
#include "parserpriv.h"
/**
* \brief find the start of the next line
* \param c pointer to current position in string
* \return pointer to start of next line or NULL if illegal (i.e.
* a '\r' is not followed by a '\n'
*/
static const char *next_line(const char *c) {
c += strcspn(c, "\n\r");
if (*c == 0) return c;
if (*c == '\r') c++;
if (*c == '\n')
return c + 1;
return NULL;
}
/**
* Moves the <code>c<code> pointer up to the beginning of the next
* line.
@ -43,22 +58,7 @@
* @retval FSDPE_ILLEGAL_CHARACTER, when an illegal '\r' character
* (not followed by a '\n') is found, returns
*/
#define NEXT_LINE(c) \
{ \
while ((*(c) != '\0') && (*(c) != '\r') && (*(c) != '\n')) { \
(c)++; \
} \
if (*(c) == '\n') { \
(c)++; \
} else if (*(c) == '\r') { \
(c)++; \
if (*(c) == '\n') { \
(c)++; \
} else { \
return FSDPE_ILLEGAL_CHARACTER; \
} \
} \
}
#define NEXT_LINE(c) do { if (!(c = next_line(c))) return FSDPE_ILLEGAL_CHARACTER; } while (0);
fsdp_error_t
fsdp_parse (const char *text_description, fsdp_description_t * dsc)