Cross Reference: mail-search-parser.c
xref
: /
dovecot
/
src
/
lib-storage
/
mail-search-parser.c
Home
History
Annotate
Line#
Navigate
Download
Search
only in
./
/* Copyright (c) 2010-2018 Dovecot authors, see the included COPYING file */
#
include
"
lib.h
"
#
include
"
mail-search-parser-private.h
"
void
mail_search_parser_deinit
(
struct
mail_search_parser
**
_parser
)
{
struct
mail_search_parser
*
parser
= *
_parser
;
*
_parser
=
NULL
;
pool_unref
(&
parser
->
pool
);
}
int
mail_search_parse_key
(
struct
mail_search_parser
*
parser
,
const
char
**
key_r
)
{
int
ret
;
if
((
ret
=
parser
->v.
parse_key
(
parser
,
key_r
)) <= 0)
return
ret
;
parser
->
cur_key
= *
key_r
;
return
1
;
}
int
mail_search_parse_string
(
struct
mail_search_parser
*
parser
,
const
char
**
value_r
)
{
int
ret
;
ret
=
parser
->v.
parse_string
(
parser
,
value_r
);
if
(
ret
< 0 &&
parser
->
cur_key
!=
NULL
) {
parser
->
error
=
p_strdup_printf
(
parser
->
pool
,
"%s (for search key: %s)"
,
parser
->
error
,
t_str_ucase
(
parser
->
cur_key
));
}
return
ret
;
}
bool
mail_search_parse_skip_next
(
struct
mail_search_parser
*
parser
,
const
char
*
str
)
{
return
parser
->v.
parse_skip_next
(
parser
,
str
);
}
const
char
*
mail_search_parser_get_error
(
struct
mail_search_parser
*
parser
)
{
return
parser
->
error
;
}