add a few rough notes - sfeed_tests - sfeed tests and RSS and Atom files | |
git clone git://git.codemadness.org/sfeed_tests | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 3f49a55031acd5d56c3131f299da20473e5332ba | |
parent 3008c110d07eb98413e02e57eced0d53a92b0802 | |
Author: Hiltjo Posthuma <[email protected]> | |
Date: Sun, 16 Apr 2023 13:13:20 +0200 | |
add a few rough notes | |
Diffstat: | |
M notes/specs.txt | 75 +++++++++++++++++++++++------… | |
1 file changed, 55 insertions(+), 20 deletions(-) | |
--- | |
diff --git a/notes/specs.txt b/notes/specs.txt | |
@@ -1,45 +1,80 @@ | |
-https://www.rssboard.org/rss-specification | |
- RSS 1.0 | |
- RSS 0.9, 2.0 | |
+Links to specs | |
+-------------- | |
+- Atom | |
+ https://datatracker.ietf.org/doc/html/rfc4287 | |
-https://datatracker.ietf.org/doc/html/rfc4287 | |
- Atom | |
+- RSS 0.9, 2.0 and 1.0 | |
+ https://www.rssboard.org/rss-specification | |
+- Dublin Core and RDF | |
+ https://www.dublincore.org/specifications/dublin-core/dcmi-terms/ | |
+ https://web.resource.org/rss/1.0/modules/dc/ | |
-https://www.dublincore.org/specifications/dublin-core/dcmi-terms/ | |
-https://web.resource.org/rss/1.0/modules/dc/ | |
- Dublin Core and RDF | |
+- Media RSS (MRSS) | |
+ https://www.rssboard.org/media-rss | |
- | |
-https://www.rssboard.org/media-rss | |
- Media RSS (MRSS) | |
+- OPML | |
+ https://en.wikipedia.org/wiki/OPML | |
+ http://opml.org/ | |
Time formats: | |
-RFC3339 Date and Time on the Internet: Timestamps: | |
+- RFC3339 Date and Time on the Internet: Timestamps: | |
https://www.rfc-editor.org/rfc/rfc3339 | |
-RFC822: | |
+- RFC822: | |
https://www.rfc-editor.org/rfc/rfc822 | |
5. Date and Time Specification | |
-RFC822 obsoleted by RFC2822: | |
+- RFC822 obsoleted by RFC2822: | |
https://www.rfc-editor.org/rfc/rfc2822 | |
-ISO 8601-1: | |
+- ISO 8601-1: | |
https://en.wikipedia.org/wiki/ISO_8601 | |
There might be some free and open resource someplace... | |
-OPML: | |
- https://en.wikipedia.org/wiki/OPML | |
- http://opml.org/ | |
+Some notes about specs | |
+---------------------- | |
+ | |
+- ISO 8601-1 needs to be bought to see it. It is not free as in cost. | |
+ | |
+- RFC822 incorrectly defined military timezones. Mentioned in its succesor RFC… | |
+" The 1 character military time zones were defined in a non-standard | |
+ way in [RFC822] and are therefore unpredictable in their meaning. | |
+ The original definitions of the military zones "A" through "I" are | |
+ equivalent to "+0100" through "+0900" respectively; "K", "L", and "M" | |
+ are equivalent to "+1000", "+1100", and "+1200" respectively; "N" | |
+ through "Y" are equivalent to "-0100" through "-1200" respectively; | |
+ and "Z" is equivalent to "+0000". However, because of the error in | |
+ [RFC822], they SHOULD all be considered equivalent to "-0000" unless | |
+ there is out-of-band information confirming their meaning." | |
+ | |
+ sfeed does not support military timezones anymore. I haven't noticed any | |
+ feeds that use them (apart from Z) anyway. | |
+ | |
+- RFC822 only defines American timezone names (so "CEST" is not supported). | |
+ | |
+- RFC2822 defines leap seconds are allowed (23:59:60). | |
+ | |
+- Second fractions are allowed. sfeed truncates them. | |
+- Timezones can be in the range: -9959 through +9959. sfeed allows -9999 throu… | |
-JSON Feed: | |
- https://www.jsonfeed.org/ | |
+- time_t is typically signed 64-bit on platforms. POSIX defines it simply as an | |
+ integer (not clear if signed or unsigned). | |
+ Many 32-bit platforms use a signed 32-bit long for time_t. | |
+ Open Watcom uses a 32-bit unsigned long for time_t. | |
+ "long long" is a datatype defines as at least 64-bit. | |
+ The sfeed parser consistently parses it to a signed 64-bit number (long long… | |
+ The format tools read this number and convert it to a time_t. Depending on | |
+ the platform and the time (mostly before 1970 or after 2038) this may | |
+ incorrectly wrap the number. | |
+- There were/are many bugs in time parsing implementations in the different | |
+ libcs in various platforms sfeed has a parser for most of the formats used by | |
+ RSS/Atom/etc and handles timezone offsets. |