pass extra param to icalparser_get_next_char (icalparser_get_next_char):

2001-07-23  JP Rosevear  <jpr@ximian.com>

	* src/libical/icalparser.c: pass extra param to
	icalparser_get_next_char
	(icalparser_get_next_char): only use quote mode if the flag is set

svn path=/trunk/; revision=11326
This commit is contained in:
JP Rosevear
2001-07-23 23:30:11 +00:00
committed by JP Rosevear
parent 80f0e61199
commit dc4f47979d
2 changed files with 42 additions and 25 deletions

View File

@ -1,3 +1,9 @@
2001-07-23 JP Rosevear <jpr@ximian.com>
* src/libical/icalparser.c: pass extra param to
icalparser_get_next_char
(icalparser_get_next_char): only use quote mode if the flag is set
2001-07-23 Damon Chaplin <damon@ximian.com>
* src/libical/icaltime.c (icaltime_day_of_year): changed so it doesn't

View File

@ -1,4 +1,4 @@
/* -*- Mode: C -*-
/* -*- Mode: C; tab-width: 4; c-basic-offset: 8; -*-
======================================================================
FILE: icalparser.c
CREATOR: eric 04 August 1999
@ -57,7 +57,7 @@ extern icalvalue* icalparser_yy_value;
void set_parser_value_state(icalvalue_kind kind);
int ical_yyparse(void);
char* icalparser_get_next_char(char c, char *str);
char* icalparser_get_next_char(char c, char *str, int qm);
char* icalparser_get_next_parameter(char* line,char** end);
char* icalparser_get_next_value(char* line, char **end, icalvalue_kind kind);
char* icalparser_get_prop_name(char* line, char** end);
@ -141,28 +141,28 @@ icalvalue* icalvalue_new_From_string_with_error(icalvalue_kind kind,
char* icalparser_get_next_char(char c, char *str)
char* icalparser_get_next_char(char c, char *str, int qm)
{
int quote_mode = 0;
char* p;
for(p=str; *p!=0; p++){
if ( quote_mode == 0 && *p=='"' && *(p-1) != '\\' ){
quote_mode =1;
continue;
}
if ( quote_mode == 1 && *p=='"' && *(p-1) != '\\' ){
quote_mode =0;
continue;
}
if (quote_mode == 0 && *p== c && *(p-1) != '\\' ){
return p;
}
if (qm == 1) {
if ( quote_mode == 0 && *p=='"' && *(p-1) != '\\' ){
quote_mode =1;
continue;
}
if ( quote_mode == 1 && *p=='"' && *(p-1) != '\\' ){
quote_mode =0;
continue;
}
}
if (quote_mode == 0 && *p== c && *(p-1) != '\\' ){
return p;
}
}
return 0;
@ -243,8 +243,8 @@ char* icalparser_get_prop_name(char* line, char** end)
char* v;
char *str;
p = icalparser_get_next_char(';',line);
v = icalparser_get_next_char(':',line);
p = icalparser_get_next_char(';',line,1);
v = icalparser_get_next_char(':',line,1);
if (p== 0 && v == 0) {
return 0;
}
@ -266,9 +266,10 @@ char* icalparser_get_param_name(char* line, char **end)
{
char* next;
char* quote;
char *str;
next = icalparser_get_next_char('=',line);
next = icalparser_get_next_char('=',line,1);
if (next == 0) {
return 0;
@ -276,6 +277,16 @@ char* icalparser_get_param_name(char* line, char **end)
str = make_segment(line,next);
*end = next+1;
if (**end == '"') {
*end = *end+1;
next = icalparser_get_next_char('"',*end,0);
if (next == 0) {
return 0;
}
*end = make_segment(*end,next);
}
return str;
}
@ -286,7 +297,7 @@ char* icalparser_get_next_paramvalue(char* line, char **end)
char* next;
char *str;
next = icalparser_get_next_char(',',line);
next = icalparser_get_next_char(',',line,1);
if (next == 0){
next = (char*)(size_t)line+(size_t)strlen(line);\
@ -318,7 +329,7 @@ char* icalparser_get_next_value(char* line, char **end, icalvalue_kind kind)
p = line;
while(1){
next = icalparser_get_next_char(',',p);
next = icalparser_get_next_char(',',p,1);
/* Unforunately, RFC2445 says that for the RECUR value, COMMA
can both seperate digits in a list, and it can seperate
@ -379,14 +390,14 @@ char* icalparser_get_next_parameter(char* line,char** end)
char *v;
char *str;
v = icalparser_get_next_char(':',line);
next = icalparser_get_next_char(';', line);
v = icalparser_get_next_char(':',line,1);
next = icalparser_get_next_char(';', line,1);
/* There is no ';' or, it is after the ':' that marks the beginning of
the value */
if (next == 0 || next > v) {
next = icalparser_get_next_char(':', line);
next = icalparser_get_next_char(':', line,1);
}
if (next != 0) {