188{
189 int rc = -1;
190 struct Progress *progress = NULL;
192
194 if (prompt)
195 {
198 {
200 return -1;
201 }
202 }
203
205
206
207
208 bool match_all = false;
209 struct PatternList *pat = NULL;
211 if (simple)
212 {
214 const char *pbuf = buf->
data;
215 while (*pbuf == ' ')
216 pbuf++;
218
221 if (!pat)
222 {
225 goto bail;
226 }
228 }
229 else
230 {
231 match_all = true;
232 }
233
236
237
238
239 int vcounter = 0;
242 {
244
245 if (match_all ||
247 {
248 switch (action)
249 {
252 break;
255 break;
258 vcounter++;
259 break;
260 }
261 }
262 else
263 {
264 switch (action)
265 {
268
269 break;
272 break;
273 }
274 }
275 }
277
279 if (!match_all)
280 {
281 mdata->
limit = simple;
282 simple = NULL;
283 }
284
286 {
287 menu->
max = vcounter;
289 }
290
292
293 rc = 0;
294
295bail:
299
300 return rc;
301}
#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, const char *s, PatternCompFlags flags, struct Buffer *err)
Create a Pattern.
void mutt_pattern_free(struct PatternList **pat)
Free a Pattern.
#define MUTT_COMP_CLEAR
Clear input if printable character is pressed.
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 FREE(x)
Free memory and set the pointer to NULL.
void mutt_clear_error(void)
Clear the message line (bottom line of screen)
const struct CompleteOps CompletePatternOps
Auto-Completion of Patterns.
bool mutt_pattern_alias_exec(struct Pattern *pat, PatternExecFlags flags, struct AliasView *av, struct PatternCache *cache)
Match a pattern against an alias.
#define MUTT_PC_FULL_MSG
Enable body and header matching.
@ PAA_VISIBLE
Set AliasView.is_visible and hide the rest.
@ PAA_TAG
Set AliasView.is_tagged, but don't touch the others.
@ PAA_UNTAG
Unset AliasView.is_tagged, but don't touch the others.
#define MUTT_MATCH_FULL_ADDRESS
Match the full address.
#define MUTT_ALIAS_SIMPLESEARCH
Simple search pattern for aliases (from/to/cc fields)
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?
bool is_tagged
Is it tagged?
char * data
Pointer to data.