- small bug fixes
[sip-router] / parser_f.c
1 /*
2  * $Id$
3  *
4  * parser helper  functions
5  *
6  */
7
8 #include  "parser_f.h"
9
10 /* returns pointer to next line or after the end of buffer */
11 char* eat_line(char* buffer, unsigned int len)
12 {
13         char* nl;
14         char c;
15
16         for(nl=buffer;(nl<buffer+len)&& (*nl!='\r')&&(*nl!='\n') ;nl++);
17         c=*nl;
18         if (nl+1<buffer+len)  nl++;
19         if ((nl+1<buffer+len) &&
20                         ((c=='\r' && *nl=='\n')|| (c=='\n' && *nl=='\r'))) 
21                 nl++;
22         return nl;
23 }
24
25
26
27 /* returns pointer to first non  white char or after the end  of the buffer */
28 char* eat_space(char* buffer, unsigned int len)
29 {
30         char* p;
31
32         for(p=buffer;(p<buffer+len)&& (*p==' ' || *p=='\t') ;p++);
33         return p;
34 }
35
36
37
38 /* returns pointer after the token (first whitespace char or CR/LF) */
39 char* eat_token(char* buffer, unsigned int len)
40 {
41         char *p;
42
43         for (p=buffer;(p<buffer+len)&&
44                         (*p!=' ')&&(*p!='\t')&&(*p!='\n')&&(*p!='\r');
45                 p++);
46         return p;
47 }
48
49
50
51 /* returns pointer after the token (first delim char or CR/LF) */
52 char* eat_token2(char* buffer, unsigned int len, char delim)
53 {
54         char *p;
55
56         for (p=buffer;(p<buffer+len)&&
57                         (*p!=delim)&&(*p!='\n')&&(*p!='\r');
58                 p++);
59         return p;
60 }
61
62
63
64 /* returns true if line started  at buffer contains only white space */
65 int is_empty(char* buffer, unsigned int len)
66 {
67         char *p;
68         
69         p=eat_space(buffer, len);
70         if ((p < buffer+len ) && (*p=='\r' || *p=='\n')) return 1;
71         return 0;
72 }