NeoMutt  2025-12-11-911-gd8d604
Teaching an old dog new tricks
DOXYGEN
Loading...
Searching...
No Matches
lib.h
Go to the documentation of this file.
1
22
39
40#ifndef MUTT_BROWSER_LIB_H
41#define MUTT_BROWSER_LIB_H
42
43#include <stdbool.h>
44#include <stdint.h>
45#include <sys/types.h>
46#include "mutt/lib.h"
47
48struct Mailbox;
49struct Menu;
50struct MuttWindow;
51struct stat;
52struct SubMenu;
53
64typedef uint8_t SelectFileFlags;
65
66extern const struct CompleteOps CompleteFileOps;
67extern const struct CompleteOps CompleteMailboxOps;
68
72struct Folder
73{
74 struct FolderFile *ff;
75 int num;
76};
77
82{
83 mode_t mode;
84 off_t size;
85 time_t mtime;
86 uid_t uid;
87 gid_t gid;
88 nlink_t nlink;
89
90 char *name;
91 char *desc;
92
96
97 char delim;
98
99 bool imap : 1;
100 bool selectable : 1;
101 bool inferiors : 1;
102 bool has_mailbox : 1;
103 bool local : 1;
104 bool notify_user : 1;
105 bool poll_new_mail : 1;
106 bool tagged : 1;
107 struct NntpMboxData *nd;
108
109 int gen;
110};
111ARRAY_HEAD(BrowserEntryArray, struct FolderFile);
112ARRAY_HEAD(FolderFilePtrArray, struct FolderFile *);
113
143
148{
149 struct BrowserEntryArray entry;
151 char *folder;
153};
154
155struct NeoMutt;
156
157void browser_init_keys(struct NeoMutt *n, struct SubMenu *sm_generic);
158
159void dlg_browser(struct Buffer *file, SelectFileFlags flags, struct Mailbox *m, char ***files, int *numfiles);
160void mutt_browser_select_dir(const char *f);
161void browser_sort(struct BrowserState *state);
162void browser_add_folder(const struct Menu *menu, struct BrowserState *state, const char *name, const char *desc, const struct stat *st, struct Mailbox *m, void *data);
163void browser_highlight_default(struct BrowserState *state, struct Menu *menu);
164int examine_directory(struct Mailbox *m, struct Menu *menu, struct BrowserState *state, const char *d, const char *prefix);
165int examine_mailboxes(struct Mailbox *m, struct Menu *menu, struct BrowserState *state);
166void init_menu(struct BrowserState *state, struct Menu *menu, struct Mailbox *m, struct MuttWindow *sbar);
167void init_state(struct BrowserState *state);
168bool link_is_dir(const char *folder, const char *path);
169void destroy_state(struct BrowserState *state);
170void dump_state(struct BrowserState *state);
171
172#endif /* MUTT_BROWSER_LIB_H */
#define ARRAY_HEAD(name, T)
Define a named struct for arrays of elements of a certain type.
Definition array.h:47
const struct CompleteOps CompleteFileOps
Auto-Completion of Files.
Definition complete.c:152
const struct CompleteOps CompleteMailboxOps
Auto-Completion of Files / Mailboxes.
Definition complete.c:159
void init_menu(struct BrowserState *state, struct Menu *menu, struct Mailbox *m, struct MuttWindow *sbar)
Set up a new menu.
void browser_sort(struct BrowserState *state)
Sort the entries in the browser.
Definition sort.c:186
ExpandoDataFolder
Expando UIDs for the File Browser.
Definition lib.h:120
@ ED_FOL_POLL
FolderFile.poll_new_mail.
Definition lib.h:139
@ ED_FOL_NOTIFY
FolderFile.notify_user.
Definition lib.h:137
@ ED_FOL_NEW_COUNT
FolderFile.nd (NntpMboxData)
Definition lib.h:135
@ ED_FOL_FILE_OWNER
FolderFile.uid.
Definition lib.h:128
@ ED_FOL_FILE_GROUP
FolderFile.gid.
Definition lib.h:126
@ ED_FOL_FILENAME
FolderFile.name.
Definition lib.h:125
@ ED_FOL_DATE_FORMAT
FolderFile.mtime.
Definition lib.h:122
@ ED_FOL_DATE_STRF
FolderFile.mtime.
Definition lib.h:123
@ ED_FOL_UNREAD_COUNT
FolderFile.msg_unread.
Definition lib.h:141
@ ED_FOL_FLAGS2
FolderFile.nd (NntpMboxData)
Definition lib.h:131
@ ED_FOL_FILE_MODE
FolderFile.move.
Definition lib.h:127
@ ED_FOL_NEW_MAIL
FolderFile.has_new_mail.
Definition lib.h:136
@ ED_FOL_FILE_SIZE
FolderFile.size.
Definition lib.h:129
@ ED_FOL_HARD_LINKS
FolderFile.nlink.
Definition lib.h:132
@ ED_FOL_DATE
FolderFile.mtime.
Definition lib.h:121
@ ED_FOL_TAGGED
FolderFile.tagged.
Definition lib.h:140
@ ED_FOL_NUMBER
Folder.num.
Definition lib.h:138
@ ED_FOL_DESCRIPTION
FolderFile.desc, FolderFile.name.
Definition lib.h:124
@ ED_FOL_MESSAGE_COUNT
FolderFile.msg_count.
Definition lib.h:133
@ ED_FOL_NEWSGROUP
FolderFile.name.
Definition lib.h:134
@ ED_FOL_FLAGS
FolderFile.nd (NntpMboxData)
Definition lib.h:130
void browser_init_keys(struct NeoMutt *n, struct SubMenu *sm_generic)
Initialise the Browser Keybindings - Implements ::init_keys_api.
Definition functions.c:129
void mutt_browser_select_dir(const char *f)
Remember the last directory selected.
SelectFileFlag
Flags for mutt_select_file(), e.g.
Definition lib.h:58
@ MUTT_SEL_MAILBOX
Select a mailbox.
Definition lib.h:60
@ MUTT_SEL_MULTI
Multi-selection is enabled.
Definition lib.h:61
@ MUTT_SEL_FOLDER
Select a local directory.
Definition lib.h:62
@ MUTT_SEL_NONE
No flags are set.
Definition lib.h:59
void init_state(struct BrowserState *state)
Initialise a browser state.
void destroy_state(struct BrowserState *state)
Free the BrowserState.
Definition functions.c:152
int examine_directory(struct Mailbox *m, struct Menu *menu, struct BrowserState *state, const char *d, const char *prefix)
Get list of all files/newsgroups with mask.
void browser_add_folder(const struct Menu *menu, struct BrowserState *state, const char *name, const char *desc, const struct stat *st, struct Mailbox *m, void *data)
Add a folder to the browser list.
void browser_highlight_default(struct BrowserState *state, struct Menu *menu)
Decide which browser item should be highlighted.
void dump_state(struct BrowserState *state)
int examine_mailboxes(struct Mailbox *m, struct Menu *menu, struct BrowserState *state)
Get list of mailboxes/subscribed newsgroups.
uint8_t SelectFileFlags
Definition lib.h:64
bool link_is_dir(const char *folder, const char *path)
Does this symlink point to a directory?
void dlg_browser(struct Buffer *file, SelectFileFlags flags, struct Mailbox *m, char ***files, int *numfiles)
Let the user select a file -.
Convenience wrapper for the library headers.
State of the file/mailbox browser.
Definition lib.h:148
char * folder
Folder name.
Definition lib.h:151
bool is_mailbox_list
Viewing mailboxes.
Definition lib.h:152
struct BrowserEntryArray entry
Array of files / dirs / mailboxes.
Definition lib.h:149
bool imap_browse
IMAP folder.
Definition lib.h:150
String manipulation buffer.
Definition buffer.h:36
Browser entry representing a folder/dir.
Definition lib.h:82
bool selectable
Folder can be selected.
Definition lib.h:100
char delim
Path delimiter.
Definition lib.h:97
bool imap
This is an IMAP folder.
Definition lib.h:99
bool has_mailbox
This is a mailbox.
Definition lib.h:102
char * name
Name of file/dir/mailbox.
Definition lib.h:90
uid_t uid
File's User ID.
Definition lib.h:86
bool tagged
Folder is tagged.
Definition lib.h:106
gid_t gid
File's Group ID.
Definition lib.h:87
bool has_new_mail
true if mailbox has "new mail"
Definition lib.h:93
bool poll_new_mail
Check mailbox for new mail.
Definition lib.h:105
bool notify_user
User will be notified of new mail.
Definition lib.h:104
nlink_t nlink
Number of hard links.
Definition lib.h:88
char * desc
Description of mailbox.
Definition lib.h:91
struct NntpMboxData * nd
Extra NNTP data.
Definition lib.h:107
off_t size
File size.
Definition lib.h:84
int gen
Unique id, used for (un)sorting.
Definition lib.h:109
bool local
Folder is on local filesystem.
Definition lib.h:103
time_t mtime
Modification time.
Definition lib.h:85
int msg_count
total number of messages
Definition lib.h:94
mode_t mode
File permissions.
Definition lib.h:83
bool inferiors
Folder has children.
Definition lib.h:101
int msg_unread
number of unread messages
Definition lib.h:95
A folder/dir in the browser.
Definition lib.h:73
int num
Number in the index.
Definition lib.h:75
struct FolderFile * ff
File / Dir / Mailbox.
Definition lib.h:74
A mailbox.
Definition mailbox.h:81
Definition lib.h:86
Container for Accounts, Notifications.
Definition neomutt.h:41
NNTP-specific Mailbox data -.
Definition mdata.h:34
Collection of related functions.
Definition menu.h:65