Example #1
0
int
restore_date (mu_message_t msg, mbox_data_t mud)
{
  mu_header_t hdr;
  char *date = NULL;
  time_t t;
  int rc = 0;
  
  if (mu_message_get_header (msg, &hdr) == 0)
    mu_header_aget_value (hdr, MU_HEADER_DATE, &date);

  if (date && mu_parse_date (date, &t, NULL))
    {
      char datebuf[MU_ENVELOPE_DATE_LENGTH+1];
      
      /* FIXME: 1. Preserve TZ info */
      mu_strftime (datebuf, sizeof datebuf, MU_ENVELOPE_DATE_FORMAT,
		   localtime (&t));
      free (date);
      date = strdup (datebuf);
    }
  else
    {
      time (&t);
      free (date);
      date = strdup (ctime (&t));
    }

  mud->date = date;
  if (!mud->date)
    rc = ENOMEM;
  return rc;
}
Example #2
0
/* Message envelope */
static int
message_envelope_date (mu_envelope_t envelope, char *buf, size_t len,
		       size_t *pnwrite)
{
  mu_message_t msg = mu_envelope_get_owner (envelope);
  time_t t;
  size_t n;

  if (msg == NULL)
    return EINVAL;

  /* FIXME: extract the time from "Date:".  */

  if (buf == NULL || len == 0)
    {
      n = MU_DATETIME_FROM_LENGTH;
    }
  else
    {
      char tmpbuf[MU_DATETIME_FROM_LENGTH+1];
      t = time (NULL);
      n = mu_strftime (tmpbuf, sizeof tmpbuf, 
                       MU_DATETIME_FROM, gmtime (&t));
      n = mu_cpystr (buf, tmpbuf, len);
    }
  if (pnwrite)
    *pnwrite = n;
  return 0;
}