Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
John McEleney
/
mailutils
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
Commit
5f89bc5e
...
5f89bc5eacd45287679b59fdafa0fd8e3f0400a6
authored
2001-08-03 19:06:57 +0000
by
Sergey Poznyakoff
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
Added collect_output().
1 parent
e3e2f785
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
68 additions
and
3 deletions
guimb/collect.c
guimb/collect.c
View file @
5f89bc5
...
...
@@ -16,13 +16,17 @@
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "guimb.h"
#ifdef HAVE_PATHS_H
# include <paths.h>
#endif
#ifndef _PATH_MAILDIR
# define _PATH_MAILDIR "/var/spool/mail"
#endif
char
*
temp_filename
;
FILE
*
temp_file
;
mailbox_t
mbox
;
size_t
nmesg
;
size_t
current_mesg_no
;
message_t
current_message
;
/* Open temporary file for collecting incoming message */
void
...
...
@@ -78,6 +82,7 @@ void
collect_create_mailbox
()
{
size_t
count
;
size_t
nmesg
;
fclose
(
temp_file
);
...
...
@@ -100,6 +105,66 @@ collect_create_mailbox ()
}
}
int
collect_output
()
{
size_t
i
,
count
=
0
;
mailbox_t
outbox
=
NULL
;
int
saved_umask
;
if
(
!
output_mailbox
)
{
if
(
!
user_name
)
return
0
;
asprintf
(
&
output_mailbox
,
"%s/%s"
,
_PATH_MAILDIR
,
user_name
);
if
(
!
output_mailbox
)
{
fprintf
(
stderr
,
"guimb: not enough memory
\n
"
);
return
1
;
}
}
if
(
store_mailbox
)
unlink
(
output_mailbox
);
if
(
user_name
)
{
saved_umask
=
umask
(
077
);
}
if
(
mailbox_create_default
(
&
outbox
,
output_mailbox
)
!=
0
||
mailbox_open
(
outbox
,
MU_STREAM_RDWR
|
MU_STREAM_CREAT
)
!=
0
)
{
mailbox_destroy
(
&
outbox
);
fprintf
(
stderr
,
"guimb: can't open output mailbox %s: %s
\n
"
,
output_mailbox
,
strerror
(
errno
));
return
1
;
}
mailbox_messages_count
(
mbox
,
&
count
);
for
(
i
=
1
;
i
<=
count
;
i
++
)
{
message_t
msg
=
NULL
;
attribute_t
attr
=
NULL
;
mailbox_get_message
(
mbox
,
i
,
&
msg
);
message_get_attribute
(
msg
,
&
attr
);
if
(
!
attribute_is_deleted
(
attr
))
{
attribute_set_recent
(
attr
);
mailbox_append_message
(
outbox
,
msg
);
}
}
mailbox_close
(
outbox
);
mailbox_destroy
(
&
outbox
);
if
(
user_name
)
umask
(
saved_umask
);
return
0
;
}
/* Close the temporary mailbox and unlink the file associated with it */
void
collect_drop_mailbox
()
...
...
Please
register
or
sign in
to post a comment