-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy patheasy.txt
272 lines (203 loc) · 6.05 KB
/
easy.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
summary :bind, :color, :account, :hooks
mutt --authors
list of all neomutt contributors
matches {README,AUTHORS}.md
doesn't have to be in-code!
could be distributed file
display in pager
--authors reads file /docs/AUTHORS
--license reads file /docs/LICENSE
if missing, print placeholder URL / GPLv2 respectively
=> getopt long
neomutt -DD # defaults
all config with the default values are #'d out!
neomutt -D with annotations
set timeout = 3 # seconds
hide status/pager bar when empty
format strings: compose_format, pager_format, status_format
when empty DON'T display the bar at all
will need a dividing line between index and pager
wait for Window API
trans: eliminate \n
58 one-liner messages ending in \n
limit-to-tag function
one summary page, each
read from /usr/share/doc/neomutt/
getopt?
what else?
slist
investigate addr functions
mb functions
parse warnings
concat
my first pr
investigate:
convert mutt_traverse_thread -> function with callback?
monthly email to devel ml?
easy notes:
simple
non-contentious
quick to merge
easy web page / wiki page
description links to GH
mention translations too
keep a min of 5 easy tasks (coding)
test a distro -- give feedback
update last checked date
debian open r/o patch #528233 mutt#3261
debian #771125 CVE, mutt #3716
clean build warnings
ccache
neomutt-test-configs.sh
gettext strings
travis build scripts
" -> ' in muttrc
autogen vim syntax file
translations to web page
doxygen -> web /code dir
find and fix imbalanced #ifdefs
write out code in full
easier to understand/parse
change all "int buflen" to "size_t buflen"
merge:
mutt_file_concat_path 14 uses
mutt_file_concatn_path 1 use
replace mbtowc() with mbrtowc() in my_width()
only used in one place
man page says: "The function mbrtowc(3) provides a better interface to the same functionality"
refactor parse_hooks to use (new) flags in mutt_config.c
e.g. TAKES_PATTERN, TAKES_REGEX
mutt_parse_hook()
mutt_commands[] in mutt_commands.c
eliminate all static variables in functions
starting with the libraries
distro helper
instructions for
install
build
test
check installs
test problems
one+ person per distro
task (n+1) (for extra points)
find more examples to fix
(if applicable)
move tmpfp outside of nntp parse_overview_line
1 file, ftruncate(?) & reused rather than 1000!
msg_search, pgp_read_header too
link new easy tasks to old ones (in the future)
to save repeated questions
extra task (for extra points)
find more examples to fix
where applicable (e.g. function-spanning if())
screenshots
user prompting?
:ask VARIABLE|MY_VAR "prompt message"
stailq smimekey
stailq pgpkey
muttindexwindow workaround
refactor mbox_path_probe (does fgetc, then fread)
locale.c
needs to be free of <intl.h>
4 places: setlocale to C and call strftime()
4 places: setlocale to C and call mutt_make_string() which has date/time components
main.c has setlocale(LC_ALL, "");
Some strange code in ncrypt/crypt_gpgme.c
wrap up all but gpgme
format strings
validate when set
intptr_t vs long in config
shrink DT_LONG
DT_LONG to BIGNUM? (+/-2^31)
remove #ifdef for #defines and enums
replace #ifdef with a comment
$tmpdir validator -> try to create sample temp file!
1) validate dir exists
2) create/remove a file
find and convert #define num ranges -> enum
usage() - autowrap at $COLUMNS?
default to 80 if unset
find all OUT-params fn(&val)
and ensure the variable is set before
flag them all in doxy header
use bsearch to search commands list
mutt -D? (extra options)
turn output into valid muttrc
validate muttrc without running
only display CHANGED values
only hide SET values
SORT the options
show default values/keybindings
int url_pct_decode(char *s)
void url_pct_encode(char *dst, size_t l, const char *src)
move to library
list_to_pattern() in ncrypt/crypt_gpgme.c is similar
mutt_hist_complete()
only user of C_History outside of mutt/history.c
create a mutt_hist_get_size()
mutt_mem_calloc(C_History, sizeof(char *));
mutt_charset.c mutt_iconv_open()
Highlight note: The top-well-named MUTT_ICONV_HOOK_FROM
acts on charset-hooks, not at all on iconv-hooks.
easy task: convert to use Buffer
km_expand_key()
need to check uses of result string
unify. write to a Buffer, then merge, then move to libaddress
mutt_addrlist_write()
format_address_header()
add validators for pop/imap/smtp/nntp authenticators
$nntp_authenticators, need to create array. NntpAccountData.authenticators
// L10N: (%s) is the method name, e.g. Anonymous, CRAM-MD5, GSSAPI, SASL
rename SORT_ORDER to SORT_UNSORTED, define as 0 always
dlgalias
alias need field/sort/limit for "this-is-a-group"?
alias pager/preview for details, esp. for groups
list all functions without 100% test coverage
list all the tests that would be required
add patterns (optional) to other index fields
disabled config
docs of all config types
+ flag subtypes
list separators
tie into `neomutt -DD`
more index color patterns
make all patterns optional?
investigate
convert `struct MhSequences` to `MhSeqArray`
add contract to mxapi
declutter called functions
add API mbox_is_empty()
mbox exists/create/delete
typedefs that should be in library headers to reduce dependencies
sort_t
format_t
handler_t
module_init_config_t
set_focus() -> return old focus, so that it can be returned to
on segfault, write backtrace to neomutt-bt-YYYY-MM-DD-HH:MM:SS.txt?
include version text
include github issues address
cwd, or /tmp?
convert mutt_command_get() to use bsearch()
already has compare function
change file tests to clean up tmp/ afterwards
query append
change title to "X + Y + Z + ..."
for each new append
convert history search to use ARRAY
.neomuttdebug*
log "neomutt -v" output on startup
minimise it
after log_translation() in main
need to convert FILE* output to ListHead?
eliminate config from libmutt
first two should be easy
third has a macro, could be trickier
mutt_ch_convert_nonmime_string()
$assumed_charset
$charset
mutt_ch_get_default_charset()
mutt_ch_convert_nonmime_string()
$assumed_charset
mutt_file_mkstemp_full()
$tmpdir