strfcpy (err->data, "error in expression", err->dsize);
strfcpy (err->data, _("error in expression"), err->dsize);
static int eat_date (pattern_t *pat, BUFFER *s, BUFFER *err){  BUFFER buffer;  struct tm min, max;  memset (&buffer, 0, sizeof (buffer));  if (mutt_extract_token (&buffer, s, M_TOKEN_COMMENT | M_TOKEN_PATTERN) != 0      || !buffer.data)  {    strfcpy (err->data, "error in expression", err->dsize);    return (-1);  }  memset (&min, 0, sizeof (min));  /* the `0' time is Jan 1, 1970 UTC, so in order to prevent a negative time     when doing timezone conversion, we use Jan 2, 1970 UTC as the base     here */  min.tm_mday = 2;  min.tm_year = 70;  memset (&max, 0, sizeof (max));  /* Arbitrary year in the future.  Don't set this too high     or mutt_mktime() returns something larger than will     fit in a time_t on some systems */  max.tm_year = 130;  max.tm_mon = 11;  max.tm_mday = 31;  max.tm_hour = 23;  max.tm_min = 59;  max.tm_sec = 59;  if (strchr ("<>=", buffer.data[0]))  {    /* offset from current time       <3d	less than three days ago       >3d	more than three days ago       =3d	exactly three days ago */    time_t now = time (NULL);    struct tm *tm = localtime (&now);    int exact = 0;    if (buffer.data[0] == '<')    {      memcpy (&min, tm, sizeof (min));      tm = &min;    }    else    {      memcpy (&max, tm, sizeof (max));      tm = &max;      if (buffer.data[0] == '=')	exact++;    }    tm->tm_hour = 23;    tm->tm_min = max.tm_sec = 59;    get_offset (tm, buffer.data + 1);    if (exact)    {      /* start at the beginning of the day in question */      memcpy (&min, &max, sizeof (max));      min.tm_hour = min.tm_sec = min.tm_min = 0;    }  }  else  {    const char *pc = buffer.data;    if (*pc != '-')    {      /* mininum date specified */      if ((pc = getDate (pc, &min, err)) == NULL)      {	FREE (&buffer.data);	return (-1);      }    }    if (*pc && *pc == '-')    {      /* max date */      pc++; /* skip the `-' */      SKIPWS (pc);      if (*pc)	if (!getDate (pc, &max, err))	{	  FREE (&buffer.data);	  return (-1);	}    }    else    {      /* search for messages on a specific day */      max.tm_year = min.tm_year;      max.tm_mon = min.tm_mon;      max.tm_mday = min.tm_mday;    }  }  pat->min = mutt_mktime (&min, 1);  pat->max = mutt_mktime (&max, 1);  FREE (&buffer.data);  return 0;}