tm.tm_year = yr < 70 ? yr + 100 : (yr > 1900 ? yr - 1900 : yr);
tm.tm_year = yr > 1900 ? yr - 1900 : (yr < 70 ? yr + 100 : yr);
time_t is_from (const char *s, char *path, size_t pathlen){  struct tm tm;  int yr;  if (path)    *path = 0;  if (mutt_strncmp ("From ", s, 5) != 0)    return 0;  s = next_word (s); /* skip over the From part. */  if (!*s)    return 0;  dprint (3, (debugfile, "\nis_from(): parsing: %s", s));  if (!is_day_name (s))  {    const char *p;    size_t len;    /* looks like we got the return-path, so extract it  */    if (*s == '"')    {      /* sometimes we see bogus addresses like       *	From "/foo/bar baz/"@dumbdar.com Sat Nov 22 15:29:32 PST 1997       */      p = s;      p++; /* skip over the quote */      do      {	if (!(p = strpbrk (p, "\\\"")))	  return 0;	if (*p == '\\')	  p += 2;      }      while (*p != '"');      while (*p && !ISSPACE (*p))	p++;    }    else    {      if ((p = strchr (s, ' ')) == NULL)	return 0;    }    if (path)    {      len = (size_t) (p - s);      if (len + 1 > pathlen)	len = pathlen - 1;      memcpy (path, s, len);      path[len] = 0;    }    s = p + 1;    SKIPWS (s);    if (!*s)      return 0;    if (!is_day_name (s))    {      dprint(1, (debugfile, "is_from():  expected weekday, got: %s\n", s));      return 0;    }  }  s = next_word (s);  if (!*s) return 0;  /* do a quick check to make sure that this isn't really the day of the week.   * this could happen when receiving mail from a local user whose login name   * is the same as a three-letter abbreviation of the day of the week.   */  if (is_day_name (s))  {    s = next_word (s);    if (!*s) return 0;  }  /* now we should be on the month. */  if ((tm.tm_mon = mutt_check_month (s)) < 0) return 0;  /* day */  s = next_word (s);  if (!*s) return 0;  if (sscanf (s, "%d", &tm.tm_mday) != 1) return 0;  /* time */  s = next_word (s);  if (!*s) return 0;  /* Accept either HH:MM or HH:MM:SS */  if (sscanf (s, "%d:%d:%d", &tm.tm_hour, &tm.tm_min, &tm.tm_sec) == 3);  else if (sscanf (s, "%d:%d", &tm.tm_hour, &tm.tm_min) == 2)    tm.tm_sec = 0;  else    return 0;  s = next_word (s);  if (!*s) return 0;  /* timezone? */  if (isalpha ((unsigned char) *s) || *s == '+' || *s == '-')  {    s = next_word (s);    if (!*s) return 0;    /*     * some places have two timezone fields after the time, e.g.     *      From xxxx@yyyyyyy.fr Wed Aug  2 00:39:12 MET DST 1995     */    if (isalpha ((unsigned char) *s))    {      s = next_word (s);      if (!*s) return 0;    }  }  /* year */  if (sscanf (s, "%d", &yr) != 1) return 0;  tm.tm_year = yr < 70 ? yr + 100 : (yr > 1900 ? yr - 1900 : yr);  dprint (3,(debugfile, "is_from(): month=%d, day=%d, hr=%d, min=%d, sec=%d, yr=%d.\n",	     tm.tm_mon, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec, tm.tm_year));  tm.tm_isdst = -1;  return (mutt_mktime (&tm, 0));}