/*
 * $Id$
 *
 * parser helper  functions
 *
 */

#include  "parser_f.h"

/* returns pointer to next line or after the end of buffer */
char* eat_line(char* buffer, unsigned int len)
{
	char* nl;
	char c;

	for(nl=buffer;(nl<buffer+len)&& (*nl!='\r')&&(*nl!='\n') ;nl++);
	c=*nl;
	if (nl+1<buffer+len)  nl++;
	if ((nl+1<buffer+len) &&
			((c=='\r' && *nl=='\n')|| (c=='\n' && *nl=='\r'))) 
		nl++;
	return nl;
}



/* returns pointer to first non  white char or after the end  of the buffer */
char* eat_space(char* buffer, unsigned int len)
{
	char* p;

	for(p=buffer;(p<buffer+len)&& (*p==' ' || *p=='\t') ;p++);
	return p;
}



/* returns pointer after the token (first whitespace char or CR/LF) */
char* eat_token(char* buffer, unsigned int len)
{
	char *p;

	for (p=buffer;(p<buffer+len)&&
			(*p!=' ')&&(*p!='\t')&&(*p!='\n')&&(*p!='\r');
		p++);
	return p;
}



/* returns pointer after the token (first delim char or CR/LF) */
char* eat_token2(char* buffer, unsigned int len, char delim)
{
	char *p;

	for (p=buffer;(p<buffer+len)&&
			(*p!=delim)&&(*p!='\n')&&(*p!='\r');
		p++);
	return p;
}



/* returns true if line started  at buffer contains only white space */
int is_empty(char* buffer, unsigned int len)
{
	char *p;
	
	p=eat_space(buffer, len);
	if ((p < buffer+len ) && (*p=='\r' || *p=='\n')) return 1;
	return 0;
}