summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2003-02-22 22:35:25 +0000
committerSergey Poznyakoff <gray@gnu.org.ua>2003-02-22 22:35:25 +0000
commit77b342a655ce7a8fa59408cac07d0a5a2f32ef39 (patch)
tree182e75d9aa65d15dbfc5de4c655bc3c64198bad2
parent5b8f8d5afa7c0330d3e29ecdb2514e2c2464a0e2 (diff)
downloadmailutils-77b342a655ce7a8fa59408cac07d0a5a2f32ef39.tar.gz
mailutils-77b342a655ce7a8fa59408cac07d0a5a2f32ef39.tar.bz2
Moved .*_to_message stuff to mh_stream.c
-rw-r--r--mh/mh_init.c170
1 files changed, 0 insertions, 170 deletions
diff --git a/mh/mh_init.c b/mh/mh_init.c
index 50c21329c..7325c8a6c 100644
--- a/mh/mh_init.c
+++ b/mh/mh_init.c
@@ -544,176 +544,6 @@ mh_file_copy (const char *from, const char *to)
return rc;
}
-int
-_mh_delim (char *str)
-{
- if (str[0] == '-')
- {
- for (; *str == '-'; str++)
- ;
- for (; *str == ' ' || *str == '\t'; str++)
- ;
- }
- return str[0] == '\n';
-}
-
-char *
-skipws (char *p, size_t off)
-{
- int len;
- for (p += off; *p && isspace (*p); p++)
- ;
- len = strlen (p);
- if (len > 0 && p[len-1] == '\n')
- p[len-1] = 0;
- return p;
-}
-
-struct msg_envelope {
- char *from;
- char *date;
-};
-
-static int
-restore_envelope (stream_t str, struct msg_envelope **pmenv)
-{
- size_t offset = 0;
- char *from = NULL;
- char *env_from = NULL;
- char *env_date = NULL;
- int rc;
- char buffer[80];
- size_t len;
-
- while ((rc = stream_readline (str, buffer, sizeof buffer, offset, &len)) == 0
- && len > 0)
- {
- if (_mh_delim (buffer))
- break;
- buffer[len] = 0;
- offset += len;
- if (strncasecmp (buffer, MU_HEADER_FROM,
- sizeof (MU_HEADER_FROM) - 1) == 0)
- from = strdup (skipws (buffer, sizeof (MU_HEADER_FROM)));
- else if (strncasecmp (buffer, MU_HEADER_ENV_SENDER,
- sizeof (MU_HEADER_ENV_SENDER) - 1) == 0)
- env_from = strdup (skipws (buffer, sizeof (MU_HEADER_ENV_SENDER)));
- else if (strncasecmp (buffer, MU_HEADER_ENV_DATE,
- sizeof (MU_HEADER_ENV_DATE) - 1) == 0)
- env_date = strdup (skipws (buffer, sizeof (MU_HEADER_ENV_DATE)));
- }
-
- if (!env_from)
- {
- if (from)
- {
- address_t addr;
-
- address_create (&addr, from);
- if (!addr
- || address_aget_email (addr, 1, &env_from))
- env_from = strdup ("GNU-MH");
- address_destroy (&addr);
- }
- else
- env_from = strdup ("GNU-MH");
- }
-
- if (!env_date)
- {
- struct tm *tm;
- time_t t;
- char date[80];
-
- time(&t);
- tm = gmtime(&t);
- strftime (date, sizeof (date), "%a %b %e %H:%M:%S %Y", tm);
- env_date = strdup (date);
- }
-
- *pmenv = xmalloc (sizeof (**pmenv)
- + strlen (env_from)
- + strlen (env_date)
- + 2);
- (*pmenv)->from = (char*) (*pmenv + 1);
- (*pmenv)->date = (char*) ((*pmenv)->from + strlen (env_from) + 1);
-
- strcpy ((*pmenv)->from, env_from);
- strcpy ((*pmenv)->date, env_date);
-
- free (env_from);
- free (env_date);
- free (from);
- return 0;
-}
-
-static int
-_env_msg_date (envelope_t envelope, char *buf, size_t len, size_t *pnwrite)
-{
- message_t msg = envelope_get_owner (envelope);
- struct msg_envelope *env = message_get_owner (msg);
-
- if (!env || !env->date)
- return EINVAL;
- strncpy (buf, env->date, len);
- buf[len-1] = 0;
- return 0;
-}
-
-static int
-_env_msg_sender (envelope_t envelope, char *buf, size_t len, size_t *pnwrite)
-{
- message_t msg = envelope_get_owner (envelope);
- struct msg_envelope *env = message_get_owner (msg);
-
- if (!env || !env->from)
- return EINVAL;
- strncpy (buf, env->from, len);
- buf[len-1] = 0;
- return 0;
-}
-
-message_t
-mh_stream_to_message (stream_t instream)
-{
- struct msg_envelope *mp;
- envelope_t env;
- message_t msg;
- stream_t draftstream;
- int rc;
-
- if ((rc = mhdraft_stream_create (&draftstream, instream, 0)))
- {
- mh_error(_("cannot create draft message stream: %s"),
- mu_strerror (rc));
- return NULL;
- }
-
- if ((rc = stream_open (draftstream)))
- {
- mh_error(_("cannot open draft message stream: %s"),
- mu_strerror (rc));
- stream_destroy (&draftstream, stream_get_owner (draftstream));
- return NULL;
- }
-
- restore_envelope (instream, &mp);
-
- if (message_create (&msg, mp))
- return NULL;
-
- message_set_stream (msg, draftstream, mp);
-
- if (envelope_create (&env, msg))
- return NULL;
-
- envelope_set_date (env, _env_msg_date, msg);
- envelope_set_sender (env, _env_msg_sender, msg);
- message_set_envelope (msg, env, mp);
-
- return msg;
-}
-
message_t
mh_file_to_message (char *folder, char *file_name)
{

Return to:

Send suggestions and report system problems to the System administrator.