diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2003-02-22 22:35:25 +0000 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2003-02-22 22:35:25 +0000 |
commit | 77b342a655ce7a8fa59408cac07d0a5a2f32ef39 (patch) | |
tree | 182e75d9aa65d15dbfc5de4c655bc3c64198bad2 | |
parent | 5b8f8d5afa7c0330d3e29ecdb2514e2c2464a0e2 (diff) | |
download | mailutils-77b342a655ce7a8fa59408cac07d0a5a2f32ef39.tar.gz mailutils-77b342a655ce7a8fa59408cac07d0a5a2f32ef39.tar.bz2 |
Moved .*_to_message stuff to mh_stream.c
-rw-r--r-- | mh/mh_init.c | 170 |
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) { |