diff options
author | Hiltjo Posthuma <hiltjo@codemadness.org> | 2021-07-11 11:44:13 +0200 |
---|---|---|
committer | Hiltjo Posthuma <hiltjo@codemadness.org> | 2021-07-11 13:29:12 +0200 |
commit | 7086670e4335714e1df982bf1058082b7400b653 (patch) | |
tree | ce8ea740cb0b1b25968a73de34beceb8cc1bc7de | |
parent | 82db1194f331d48515961e66893018db4f100569 (diff) |
sfeed.c: parsetime: support short digit years for RSS pubDate fields (RFC822)
RSS (pubDate) uses RFC822 dates. This standard is obsoleted by RFC2822.
The RSS 2.0 spec says for the pubDate field:
"[...] All date-times in RSS conform to the Date and Time Specification of RFC
822, with the exception that the year may be expressed with two characters or
four characters (four preferred)."
RFC822 section 5.1 describes the syntax with 2 digit years:
https://datatracker.ietf.org/doc/html/rfc822#section-5.1
It was obsoleted/fixed in RFC2822 section 4.3:
https://datatracker.ietf.org/doc/html/rfc2822#section-4.3
" Where a two or three digit year occurs in a date, the year is to be
interpreted as follows: If a two digit year is encountered whose
value is between 00 and 49, the year is interpreted by adding 2000,
ending up with a value between 2000 and 2049. If a two digit year is
encountered with a value between 50 and 99, or any three digit year
is encountered, the year is interpreted by adding 1900."
In the real world I've seen all sites using RSS use the 4-digit format.
For historic context of changes and what feeds it might affect:
- RFC822 was published in 13 august 1982, obsoleted by RFC2822.
- RFC2822 was published in april 2001, obsoleted by RFC5322.
- RFC5322 was published in october 2008.
- RDF was started around 1996. It was published around 2004.
- March 15, 1999: RSS 0.90 (Netscape), published by Netscape and authored by
Ramanathan Guha.
- July 10, 1999: RSS 0.91 (Netscape), published by Netscape and authored by Dan
Libby.
- June 9, 2000: RSS 0.91 (UserLand), published by UserLand Software and
authored by Dave Winer.
- Dec. 25, 2000: RSS 0.92, UserLand.
- Aug. 19, 2002: RSS 2.0, UserLand.
- July 15, 2003: RSS 2.0 (version 2.0.1), published by the Berkman Center for
Internet & Society at Harvard Law School and authored by Dave Winer.
- July 15, 2003: RSS 2.0 (version 2.0.1-rv-1), published by the RSS Advisory
Board.
- July 17, 2003: RSS 2.0 (version 2.0.1-rv-2), RSS Advisory Board.
- April 6, 2004: RSS 2.0 (version 2.0.1-rv-3), RSS Advisory Board.
- May 31, 2004: RSS 2.0 (version 2.0.1-rv-4), RSS Advisory Board.
- June 19, 2004: RSS 2.0 (version 2.0.1-rv-5), RSS Advisory Board.
- January 25, 2005: RSS 2.0 (version 2.0.1-rv-6), RSS Advisory Board.
- Aug. 12, 2006: RSS 2.0 (version 2.0.8), RSS Advisory Board.
- June 5, 2007: RSS 2.0 (version 2.0.9), RSS Advisory Board.
- Oct. 15, 2007: RSS 2.0 (version 2.0.10), RSS Advisory Board.
- March 30, 2009 (current): RSS 2.0 (version 2.0.11), RSS Advisory Board.
RSS history source: https://www.rssboard.org/rss-history
-rw-r--r-- | sfeed.c | 3 |
1 files changed, 3 insertions, 0 deletions
@@ -611,6 +611,9 @@ parsetime(const char *s, time_t *tp) ; for (v = 0, i = 0; i < 4 && isdigit((unsigned char)*s); s++, i++) v = (v * 10) + (*s - '0'); + /* obsolete short year: RFC2822 4.3 */ + if (i <= 3) + v += (v >= 0 && v <= 49) ? 2000 : 1900; va[0] = v; /* year */ for (; isspace((unsigned char)*s); s++) ; |