190{
191 int rc = -1;
192 struct Progress *progress = NULL;
194
196 if (prompt)
197 {
200 {
202 return -1;
203 }
204 }
205
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 }
227 }
228 else
229 {
230 match_all = true;
231 }
232
235
236 int vcounter = 0;
239 {
241
242 if (match_all ||
244 {
245 switch (action)
246 {
249 break;
252 break;
255 vcounter++;
256 break;
257 }
258 }
259 else
260 {
261 switch (action)
262 {
265
266 break;
269 break;
270 }
271 }
272 }
274
276 if (!match_all)
277 {
278 mdata->
limit = simple;
279 simple = NULL;
280 }
281
283 {
284 menu->
max = vcounter;
286 }
287
289
290 rc = 0;
291
292bail:
296
297 return rc;
298}
#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.
@ 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
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.