16 |
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ |
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ |
17 |
|
|
18 |
#include "guimb.h" |
#include "guimb.h" |
|
#ifdef HAVE_PATHS_H |
|
|
# include <paths.h> |
|
|
#endif |
|
|
|
|
|
#ifndef _PATH_MAILDIR |
|
|
# define _PATH_MAILDIR "/var/spool/mail" |
|
|
#endif |
|
19 |
|
|
20 |
char *temp_filename; |
char *temp_filename; |
21 |
FILE *temp_file; |
FILE *temp_file; |
25 |
collect_open_default () |
collect_open_default () |
26 |
{ |
{ |
27 |
size_t nmesg; |
size_t nmesg; |
28 |
|
|
29 |
|
if (!default_mailbox) |
30 |
|
{ |
31 |
|
asprintf (&default_mailbox, "%s%s", maildir, user_name); |
32 |
|
if (!default_mailbox) |
33 |
|
{ |
34 |
|
util_error ("not enough memory"); |
35 |
|
exit (1); |
36 |
|
} |
37 |
|
} |
38 |
if (mailbox_create (&mbox, default_mailbox) != 0 |
if (mailbox_create (&mbox, default_mailbox) != 0 |
39 |
|| mailbox_open (mbox, MU_STREAM_RDWR) != 0) |
|| mailbox_open (mbox, MU_STREAM_RDWR) != 0) |
40 |
{ |
{ |
139 |
return 0; |
return 0; |
140 |
} |
} |
141 |
|
|
|
if (!default_mailbox) |
|
|
{ |
|
|
if (!user_name) |
|
|
return 0; |
|
|
asprintf (&default_mailbox, "%s/%s", _PATH_MAILDIR, user_name); |
|
|
if (!default_mailbox) |
|
|
{ |
|
|
fprintf (stderr, "guimb: not enough memory\n"); |
|
|
return 1; |
|
|
} |
|
|
} |
|
|
|
|
142 |
if (user_name) |
if (user_name) |
143 |
saved_umask = umask (077); |
saved_umask = umask (077); |
144 |
|
|
187 |
free (temp_filename); |
free (temp_filename); |
188 |
} |
} |
189 |
} |
} |
190 |
|
|
191 |
|
int |
192 |
|
guimb_catch_handler (void *unused, SCM tag, SCM throw_args) |
193 |
|
{ |
194 |
|
collect_drop_mailbox (); |
195 |
|
return scm_handle_by_message ("guimb", tag, throw_args); |
196 |
|
} |
197 |
|
|
198 |
|
int |
199 |
|
guimb_exit (void *unused1, mailbox_t unused2) |
200 |
|
{ |
201 |
|
int rc = collect_output (); |
202 |
|
collect_drop_mailbox (); |
203 |
|
return rc; |
204 |
|
} |