From: Timo Sirainen Date: Mon, 23 Aug 2010 14:28:35 +0000 (+0100) Subject: lib-imap: Added imap_seq_set_nostar_parse() X-Git-Tag: 2.0.1~14 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e12ccf1e6b606d96bd55ff77db3aa873127d6c72;p=thirdparty%2Fdovecot%2Fcore.git lib-imap: Added imap_seq_set_nostar_parse() --- diff --git a/src/lib-imap/imap-seqset.c b/src/lib-imap/imap-seqset.c index 33ece9c8a2..87243fb42c 100644 --- a/src/lib-imap/imap-seqset.c +++ b/src/lib-imap/imap-seqset.c @@ -85,6 +85,18 @@ int imap_seq_set_parse(const char *str, ARRAY_TYPE(seq_range) *dest) return 0; } +int imap_seq_set_nostar_parse(const char *str, ARRAY_TYPE(seq_range) *dest) +{ + if (imap_seq_set_parse(str, dest) < 0) + return -1; + + if (seq_range_exists(dest, (uint32_t)-1)) { + /* '*' used */ + return -1; + } + return 0; +} + int imap_seq_range_parse(const char *str, uint32_t *seq1_r, uint32_t *seq2_r) { if (get_next_seq_range(&str, seq1_r, seq2_r) < 0) diff --git a/src/lib-imap/imap-seqset.h b/src/lib-imap/imap-seqset.h index b92a409585..a7e1ffd93d 100644 --- a/src/lib-imap/imap-seqset.h +++ b/src/lib-imap/imap-seqset.h @@ -6,6 +6,8 @@ /* Parse IMAP sequence-set and store the result in dest. '*' is stored as (uint32_t)-1. Returns 0 if successful, -1 if input is invalid. */ int imap_seq_set_parse(const char *str, ARRAY_TYPE(seq_range) *dest); +/* Like imap_seq_set_parse(), but fail if '*' is used. */ +int imap_seq_set_nostar_parse(const char *str, ARRAY_TYPE(seq_range) *dest); /* Parse IMAP seq-number / seq-range. */ int imap_seq_range_parse(const char *str, uint32_t *seq1_r, uint32_t *seq2_r);