76 |
{"width", 1, 'w', MH_OPT_ARG, "number"}, |
{"width", 1, 'w', MH_OPT_ARG, "number"}, |
77 |
{"draftfolder", 6, 'd', MH_OPT_ARG, "folder"}, |
{"draftfolder", 6, 'd', MH_OPT_ARG, "folder"}, |
78 |
{"nodraftfolder", 3, ARG_NODRAFTFOLDER, }, |
{"nodraftfolder", 3, ARG_NODRAFTFOLDER, }, |
79 |
|
{"draftmessage", 6, 'm' }, |
80 |
{"editor", 1, 'e', MH_OPT_ARG, "program"}, |
{"editor", 1, 'e', MH_OPT_ARG, "program"}, |
81 |
{"noedit", 3, ARG_NOEDIT, }, |
{"noedit", 3, ARG_NOEDIT, }, |
82 |
{"fcc", 1, ARG_FCC, MH_OPT_ARG, "folder"}, |
{"fcc", 1, ARG_FCC, MH_OPT_ARG, "folder"}, |
102 |
|
|
103 |
static mh_format_t format; |
static mh_format_t format; |
104 |
static int width = 80; |
static int width = 80; |
105 |
static char *draft_folder; |
|
106 |
static char *draft_file; |
struct mh_whatnow_env wh_env = { 0 }; |
107 |
|
static int initial_edit = 1; |
108 |
static mh_msgset_t msgset; |
static mh_msgset_t msgset; |
109 |
static mailbox_t mbox; |
static mailbox_t mbox; |
110 |
static int build_only = 0; /* --build flag */ |
static int build_only = 0; /* --build flag */ |
119 |
mh_error (_("%s %s is unknown"), opt, arg); |
mh_error (_("%s %s is unknown"), opt, arg); |
120 |
exit (1); |
exit (1); |
121 |
} |
} |
122 |
|
return 0; /* never reached */ |
123 |
} |
} |
124 |
|
|
125 |
static int |
static int |
128 |
switch (key) |
switch (key) |
129 |
{ |
{ |
130 |
case 'b': |
case 'b': |
131 |
|
case ARG_NOWHATNOWPROC: |
132 |
build_only = 1; |
build_only = 1; |
133 |
break; |
break; |
134 |
|
|
141 |
break; |
break; |
142 |
|
|
143 |
case 'd': |
case 'd': |
144 |
draft_folder = arg; |
wh_env.draftfolder = arg; |
145 |
|
break; |
146 |
|
|
147 |
|
case 'e': |
148 |
|
wh_env.editor = arg; |
149 |
break; |
break; |
150 |
|
|
151 |
case '+': |
case '+': |
157 |
mh_read_formfile (arg, &format_str); |
mh_read_formfile (arg, &format_str); |
158 |
break; |
break; |
159 |
|
|
160 |
|
case 'm': |
161 |
|
wh_env.draftmessage = arg; |
162 |
|
break; |
163 |
|
|
164 |
case 'w': |
case 'w': |
165 |
width = strtoul (arg, NULL, 0); |
width = strtoul (arg, NULL, 0); |
166 |
if (!width) |
if (!width) |
171 |
break; |
break; |
172 |
|
|
173 |
case ARG_NODRAFTFOLDER: |
case ARG_NODRAFTFOLDER: |
174 |
draft_folder = NULL; |
wh_env.draftfolder = NULL; |
175 |
break; |
break; |
176 |
|
|
177 |
|
case ARG_NOEDIT: |
178 |
|
initial_edit = 0; |
179 |
|
break; |
180 |
|
|
181 |
case ARG_QUERY: |
case ARG_QUERY: |
182 |
query_mode = is_true (arg); |
query_mode = is_true (arg); |
183 |
break; |
break; |
184 |
|
|
185 |
case 'a': |
case 'a': |
|
case 'm': |
|
|
case 'e': |
|
|
case ARG_NOEDIT: |
|
186 |
case ARG_FCC: |
case ARG_FCC: |
187 |
case ARG_FILTER: |
case ARG_FILTER: |
188 |
case ARG_INPLACE: |
case ARG_INPLACE: |
206 |
#define bufsize sizeof(buffer) |
#define bufsize sizeof(buffer) |
207 |
|
|
208 |
/* FIXME: first check if the draft exists */ |
/* FIXME: first check if the draft exists */ |
209 |
fp = fopen (draft_file, "w+"); |
fp = fopen (wh_env.file, "w+"); |
210 |
if (!fp) |
if (!fp) |
211 |
{ |
{ |
212 |
mh_error (_("cannot open draft file %s: %s"), |
mh_error (_("cannot open draft file %s: %s"), |
213 |
draft_file, strerror (errno)); |
wh_env.file, strerror (errno)); |
214 |
exit (1); |
exit (1); |
215 |
} |
} |
216 |
|
|
226 |
mh_format (&format, msg, msgset.list[0], buffer, bufsize); |
mh_format (&format, msg, msgset.list[0], buffer, bufsize); |
227 |
fprintf (fp, "%s", buffer); |
fprintf (fp, "%s", buffer); |
228 |
fclose (fp); |
fclose (fp); |
229 |
|
|
230 |
|
{ |
231 |
|
url_t url; |
232 |
|
size_t num; |
233 |
|
char *msgname, *p; |
234 |
|
|
235 |
|
mailbox_get_url (mbox, &url); |
236 |
|
mh_message_number (msg, &num); |
237 |
|
asprintf (&msgname, "%s/%lu", url_to_string (url), (unsigned long) num); |
238 |
|
p = strchr (msgname, ':'); |
239 |
|
if (!p) |
240 |
|
wh_env.msg = msgname; |
241 |
|
else |
242 |
|
{ |
243 |
|
wh_env.msg = strdup (p+1); |
244 |
|
free (msgname); |
245 |
|
} |
246 |
|
} |
247 |
} |
} |
248 |
|
|
249 |
int |
int |
262 |
exit (1); |
exit (1); |
263 |
} |
} |
264 |
|
|
265 |
if (!draft_folder) |
if (!wh_env.draftfolder) |
266 |
draft_folder = mh_global_profile_get ("Draft-Folder", mu_path_folder_dir); |
wh_env.draftfolder = mh_global_profile_get ("Draft-Folder", |
267 |
|
mu_path_folder_dir); |
268 |
|
|
269 |
mbox = mh_open_folder (current_folder, 0); |
mbox = mh_open_folder (current_folder, 0); |
270 |
mh_msgset_parse (mbox, &msgset, argc - index, argv + index, "cur"); |
mh_msgset_parse (mbox, &msgset, argc - index, argv + index, "cur"); |
274 |
return 1; |
return 1; |
275 |
} |
} |
276 |
|
|
277 |
draft_file = mh_expand_name (draft_folder, "reply", 0); |
wh_env.file = mh_expand_name (wh_env.draftfolder, "reply", 0); |
278 |
|
|
279 |
make_draft (); |
make_draft (); |
280 |
|
|
281 |
return 0; |
/* Exit immediately if --build is given */ |
282 |
|
if (build_only) |
283 |
|
return 0; |
284 |
|
|
285 |
|
return mh_whatnow (&wh_env, initial_edit); |
286 |
} |
} |