188{
189 int rc = -1;
190 struct Progress *progress = NULL;
192
194 if (prompt)
195 {
198 {
200 return -1;
201 }
202 }
203
205
206 bool match_all = false;
207 struct PatternList *pat = NULL;
209 if (simple)
210 {
212 const char *pbuf = buf->
data;
213 while (*pbuf == ' ')
214 pbuf++;
216
219 if (!pat)
220 {
223 goto bail;
224 }
226 }
227 else
228 {
229 match_all = true;
230 }
231
234
235 int vcounter = 0;
238 {
240
241 if (match_all ||
243 {
244 switch (action)
245 {
248 break;
251 break;
254 vcounter++;
255 break;
256 }
257 }
258 else
259 {
260 switch (action)
261 {
264
265 break;
268 break;
269 }
270 }
271 }
273
275 if (!match_all)
276 {
277 mdata->
limit = simple;
278 simple = NULL;
279 }
280
282 {
283 menu->
max = vcounter;
285 }
286
288
289 rc = 0;
290
291bail:
295
296 return rc;
297}
#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.