191{
192 int rc = -1;
193 struct Progress *progress = NULL;
195
197 if (prompt)
198 {
201 {
203 return -1;
204 }
205 }
206
208
209 bool match_all = false;
210 struct PatternList *pat = NULL;
212 if (simple)
213 {
215 const char *pbuf = buf->
data;
216 while (*pbuf == ' ')
217 pbuf++;
219
222 if (!pat)
223 {
226 goto bail;
227 }
228 }
229 else
230 {
231 match_all = true;
232 }
233
236
237 int vcounter = 0;
240 {
242
243 if (match_all ||
245 {
247 vcounter++;
248 }
249 else
250 {
252 }
253 }
255
257 if (!match_all)
258 {
259 mdata->
limit = simple;
260 simple = NULL;
261 }
262
263 if (menu)
264 {
265 menu->
max = vcounter;
267 }
268
270
271 rc = 0;
272
273bail:
277
278 return rc;
279}
#define ARRAY_FOREACH(elem, head)
Iterate over all elements of the array.
#define ARRAY_SIZE(head)
The number of elements stored.
bool buf_is_empty(const struct Buffer *buf)
Is the Buffer empty?
char * buf_strdup(const struct Buffer *buf)
Copy a Buffer's string.
struct PatternList * mutt_pattern_comp(struct MailboxView *mv, struct Menu *menu, const char *s, PatternCompFlags flags, struct Buffer *err)
Create a Pattern.
void mutt_pattern_free(struct PatternList **pat)
Free a Pattern.
bool mutt_pattern_alias_exec(struct Pattern *pat, PatternExecFlags flags, struct AliasView *av, struct PatternCache *cache)
Match a pattern against an alias.
int mw_get_field(const char *prompt, struct Buffer *buf, CompletionFlags complete, enum HistoryClass hclass, const struct CompleteOps *comp_api, void *cdata)
Ask the user for a string -.
#define mutt_message(...)
#define MUTT_COMP_CLEAR
Clear input if printable character is pressed.
void mutt_clear_error(void)
Clear the message line (bottom line of screen)
const struct CompleteOps CompletePatternOps
Auto-Completion of Patterns.
#define MUTT_PC_FULL_MSG
Enable body and header matching.
#define MUTT_MATCH_FULL_ADDRESS
Match the full address.
#define MUTT_ALIAS_SIMPLESEARCH
void mutt_check_simple(struct Buffer *buf, const char *simple)
Convert a simple search into a real request.
@ MUTT_PROGRESS_READ
Progress tracks elements, according to $read_inc
struct Progress * progress_new(enum ProgressType type, size_t size)
Create a new Progress Bar.
void progress_free(struct Progress **ptr)
Free a Progress Bar.
void progress_set_message(struct Progress *progress, const char *fmt,...) __attribute__((__format__(__printf__
bool progress_update(struct Progress *progress, size_t pos, int percent)
Update the state of the progress bar.
#define SLIST_FIRST(head)
GUI data wrapping an Alias.
bool is_visible
Is visible?
char * data
Pointer to data.