int str_first_escape; /* ARG_PARSE_STRING: index to first '\' */
uoff_t literal_size; /* ARG_PARSE_LITERAL: string size */
- const char *error;
+ const char *error_msg;
unsigned int literal_skip_crlf:1;
unsigned int literal_nonsync:1;
parser->str_first_escape = 0;
parser->literal_size = 0;
- parser->error = NULL;
+ parser->error_msg = NULL;
parser->literal_skip_crlf = FALSE;
parser->eol = FALSE;
const char *imap_parser_get_error(struct imap_parser *parser, bool *fatal)
{
*fatal = parser->fatal_error;
- return parser->error;
+ return parser->error_msg;
}
/* skip over everything parsed so far, plus the following whitespace */
parser->cur_type = ARG_PARSE_NONE;
return TRUE;
}
- parser->error = "Unexpected ')'";
+ parser->error_msg = "Unexpected ')'";
return FALSE;
}
static int is_valid_atom_char(struct imap_parser *parser, char chr)
{
- const char *error;
+ const char *error_msg;
if (IS_ATOM_PARSER_INPUT((unsigned char)chr))
- error = "Invalid characters in atom";
+ error_msg = "Invalid characters in atom";
else if ((chr & 0x80) != 0)
- error = "8bit data in atom";
+ error_msg = "8bit data in atom";
else
return TRUE;
if ((parser->flags & IMAP_PARSE_FLAG_ATOM_ALLCHARS) != 0)
return TRUE;
- parser->error = error;
+ parser->error_msg = error_msg;
return FALSE;
}
break;
} else if ((parser->flags &
IMAP_PARSE_FLAG_ATOM_ALLCHARS) == 0) {
- parser->error = "Unexpected ')'";
+ parser->error_msg = "Unexpected ')'";
return FALSE;
}
/* assume it's part of the atom */
a linebreak.. */
if (is_linebreak(data[i]) &&
(parser->flags & IMAP_PARSE_FLAG_MULTILINE_STR) == 0) {
- parser->error = "Missing '\"'";
+ parser->error_msg = "Missing '\"'";
return FALSE;
}
}
parser->literal_size >
parser->max_line_size - parser->line_size) {
/* too long string, abort. */
- parser->error = "Literal size too large";
+ parser->error_msg = "Literal size too large";
parser->fatal_error = TRUE;
return FALSE;
}
}
if (parser->literal_nonsync) {
- parser->error = "Expecting '}' after '+'";
+ parser->error_msg = "Expecting '}' after '+'";
return FALSE;
}
}
if (data[i] < '0' || data[i] > '9') {
- parser->error = "Invalid literal size";
+ parser->error_msg = "Invalid literal size";
return FALSE;
}
if (parser->literal_size < prev_size) {
/* wrapped around, abort. */
- parser->error = "Literal size too large";
+ parser->error_msg = "Literal size too large";
return FALSE;
}
}
}
if (*data != '\n') {
- parser->error = "Missing LF after literal size";
+ parser->error_msg = "Missing LF after literal size";
return FALSE;
}
return FALSE;
}
if (data[1] != '\n') {
- parser->error = "CR sent without LF";
+ parser->error_msg = "CR sent without LF";
return FALSE;
}
/* fall through */
case '\n':
/* unexpected end of line */
if ((parser->flags & IMAP_PARSE_FLAG_INSIDE_LIST) != 0) {
- parser->error = "Missing ')'";
+ parser->error_msg = "Missing ')'";
return FALSE;
}
parser->eol = TRUE;
break;
}
if ((parser->flags & IMAP_PARSE_FLAG_LITERAL8) == 0) {
- parser->error = "literal8 not allowed here";
+ parser->error_msg = "literal8 not allowed here";
return FALSE;
}
parser->cur_type = ARG_PARSE_LITERAL8;
if (parser->cur_pos == data_size)
return FALSE;
if (data[parser->cur_pos] != '{') {
- parser->error = "Expected '{'";
+ parser->error_msg = "Expected '{'";
return FALSE;
}
parser->cur_type = ARG_PARSE_LITERAL;
if (parser->list_arg != NULL && !parser->literal_size_return &&
(parser->flags & IMAP_PARSE_FLAG_STOP_AT_LIST) == 0) {
- parser->error = "Missing ')'";
+ parser->error_msg = "Missing ')'";
*args_r = NULL;
return -1;
}
break;
if (parser->line_size > parser->max_line_size) {
- parser->error = "IMAP command line too large";
+ parser->error_msg = "IMAP command line too large";
break;
}
}
- if (parser->error != NULL) {
+ if (parser->error_msg != NULL) {
/* error, abort */
parser->line_size += parser->cur_pos;
i_stream_skip(parser->input, parser->cur_pos);