58 |
return util_finish (command, RESP_NO, "[TRYCREATE] failed"); |
return util_finish (command, RESP_NO, "[TRYCREATE] failed"); |
59 |
} |
} |
60 |
|
|
61 |
|
static int |
62 |
|
_append_date (envelope_t envelope, char *buf, size_t len, size_t *pnwrite) |
63 |
|
{ |
64 |
|
message_t msg = envelope_get_owner (envelope); |
65 |
|
struct tm **tm = message_get_owner (msg); |
66 |
|
|
67 |
|
strftime (buf, len, "%a %b %d %H:%M:%S %Y", *tm); |
68 |
|
return 0; |
69 |
|
} |
70 |
|
|
71 |
|
static int |
72 |
|
_append_sender (envelope_t envelope, char *buf, size_t len, size_t *pnwrite) |
73 |
|
{ |
74 |
|
strncpy (buf, "GNU-imap4d", len); |
75 |
|
return 0; |
76 |
|
} |
77 |
|
|
78 |
int |
int |
79 |
imap4d_append0 (mailbox_t mbox, int flags, char *text) |
imap4d_append0 (mailbox_t mbox, int flags, char *text) |
80 |
{ |
{ |
|
mailbox_t tmp; |
|
81 |
stream_t stream; |
stream_t stream; |
82 |
int rc = 0; |
int rc = 0; |
83 |
size_t len = 0; |
size_t len = 0; |
84 |
message_t msg; |
message_t msg = 0; |
85 |
struct tm *tm; |
struct tm *tm; |
86 |
time_t t; |
time_t t; |
87 |
char date[80]; |
envelope_t env; |
88 |
|
|
89 |
if (mailbox_create (&tmp, "/dev/null")) |
if (message_create (&msg, &tm)) |
|
return 1; |
|
|
if (mailbox_open (tmp, MU_STREAM_READ) != 0) |
|
90 |
return 1; |
return 1; |
91 |
|
|
92 |
if (memory_stream_create (&stream, 0, MU_STREAM_RDWR) |
if (memory_stream_create (&stream, 0, MU_STREAM_RDWR) |
93 |
|| stream_open (stream)) |
|| stream_open (stream)) |
94 |
{ |
{ |
95 |
mailbox_close (tmp); |
message_destroy (&msg, &tm); |
96 |
return 1; |
return 1; |
97 |
} |
} |
98 |
|
|
112 |
time(&t); |
time(&t); |
113 |
} |
} |
114 |
tm = gmtime(&t); |
tm = gmtime(&t); |
115 |
strftime (date, sizeof (date), |
|
|
"From GNU-imap4d %a %b %e %H:%M:%S %Y%n", |
|
|
tm); |
|
|
|
|
|
stream_write (stream, date, strlen (date), 0, &len); |
|
116 |
stream_write (stream, text, strlen (text), len, &len); |
stream_write (stream, text, strlen (text), len, &len); |
117 |
|
message_set_stream (msg, stream, &tm); |
118 |
|
|
119 |
mailbox_set_stream (tmp, stream); |
envelope_create (&env, msg); |
120 |
mailbox_messages_count (tmp, &len); |
envelope_set_date (env, _append_date, msg); |
121 |
if (len == 1) |
envelope_set_sender (env, _append_sender, msg); |
122 |
|
message_set_envelope (msg, env, &tm); |
123 |
|
rc = mailbox_append_message (mbox, msg); |
124 |
|
if (rc == 0 && flags) |
125 |
{ |
{ |
126 |
mailbox_get_message (tmp, 1, &msg); |
size_t num = 0; |
127 |
mailbox_append_message (mbox, msg); |
attribute_t attr = NULL; |
128 |
if (flags) |
mailbox_messages_count (mbox, &num); |
129 |
{ |
mailbox_get_message (mbox, num, &msg); |
130 |
size_t num = 0; |
message_get_attribute (msg, &attr); |
131 |
attribute_t attr = NULL; |
attribute_set_flags (attr, flags); |
|
mailbox_messages_count (mbox, &num); |
|
|
mailbox_get_message (mbox, num, &msg); |
|
|
message_get_attribute (msg, &attr); |
|
|
attribute_set_flags (attr, flags); |
|
|
} |
|
132 |
} |
} |
133 |
else |
|
134 |
rc = 1; |
message_destroy (&msg, &tm); |
|
|
|
|
mailbox_close (tmp); |
|
|
mailbox_destroy (&tmp); |
|
135 |
return rc; |
return rc; |
136 |
} |
} |
137 |
|
|
138 |
|
int |
139 |
|
wd() |
140 |
|
{ |
141 |
|
volatile int _s = 0; |
142 |
|
while (!_s) |
143 |
|
; |
144 |
|
} |
145 |
|
|