diff options
Diffstat (limited to 'packages/libmrss/files/fix_atom_date_locale.patch')
-rw-r--r-- | packages/libmrss/files/fix_atom_date_locale.patch | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/packages/libmrss/files/fix_atom_date_locale.patch b/packages/libmrss/files/fix_atom_date_locale.patch new file mode 100644 index 0000000000..4d46033d10 --- /dev/null +++ b/packages/libmrss/files/fix_atom_date_locale.patch @@ -0,0 +1,122 @@ +The Atom date formating code tries to create a RFC822 date. This date +requires to use the C locale for the date (for weekday-names and month-names). + +This patch uses new POSIX functionality to create a C locale and strftime_l +to create a right RFC822 date. + +Index: libmrss-0.17/src/mrss.h +=================================================================== +--- libmrss-0.17.orig/src/mrss.h 2007-04-01 00:29:06.000000000 +0200 ++++ libmrss-0.17/src/mrss.h 2007-04-01 01:22:25.000000000 +0200 +@@ -364,6 +364,9 @@ + mrss_element_t element; + int allocated; + ++ /** For internal use only: */ ++ void* c_locale; ++ + /* Data: */ + + char *file; +Index: libmrss-0.17/src/mrss_free.c +=================================================================== +--- libmrss-0.17.orig/src/mrss_free.c 2007-04-01 00:32:56.000000000 +0200 ++++ libmrss-0.17/src/mrss_free.c 2007-04-01 15:45:44.000000000 +0200 +@@ -22,9 +22,14 @@ + # error Use configure; make; make install + #endif + ++#define _GNU_SOURCE ++ + #include "mrss.h" + #include "mrss_internal.h" + ++#include <locale.h> ++ ++ + static void __mrss_free_channel (mrss_t * mrss); + static void __mrss_free_category (mrss_category_t * category); + static void __mrss_free_hour (mrss_hour_t * hour); +@@ -202,6 +207,9 @@ + __mrss_free_item ((mrss_item_t *) old); + } + ++ if (mrss->c_locale) ++ freelocale (mrss->c_locale); ++ + if (mrss->allocated) + free (mrss); + } +Index: libmrss-0.17/src/mrss_parser.c +=================================================================== +--- libmrss-0.17.orig/src/mrss_parser.c 2007-03-30 01:07:56.000000000 +0200 ++++ libmrss-0.17/src/mrss_parser.c 2007-04-01 16:40:57.000000000 +0200 +@@ -22,9 +22,13 @@ + # error Use configure; make; make install + #endif + ++#define _GNU_SOURCE ++ + #include "mrss.h" + #include "mrss_internal.h" + ++#include <locale.h> ++ + static void + __mrss_parse_tag_insert (mrss_tag_t ** where, mrss_tag_t * what) + { +@@ -133,7 +137,7 @@ + } + + static char * +-__mrss_atom_prepare_date (char *datestr) ++__mrss_atom_prepare_date (mrss_t *data, char *datestr) + { + char *ret = NULL; + if (datestr) +@@ -150,8 +154,14 @@ + stm.tm_year -= 1900; + char datebuf[256]; + free (datestr); +- strftime (datebuf, sizeof (datebuf), "%a, %d %b %Y %H:%M:%S %z", +- &stm); ++ ++ if (!data->c_locale) { ++ printf( "Creating the locale\n" ); ++ data->c_locale = newlocale(LC_ALL_MASK,"C",NULL); ++ } ++ ++ strftime_l (datebuf, sizeof (datebuf), "%a, %d %b %Y %H:%M:%S %z", ++ &stm, data->c_locale); + ret = strdup (datebuf); + } + } +@@ -269,16 +279,16 @@ + else if (!strcmp (cur->value, "published") && !item->pubDate + && data->version == MRSS_VERSION_ATOM_1_0) + item->pubDate = +- __mrss_atom_prepare_date (nxmle_get_string (cur, NULL)); ++ __mrss_atom_prepare_date (data, nxmle_get_string (cur, NULL)); + else if (!strcmp(cur->value, "updated" ) && !item->pubDate + && data->version == MRSS_VERSION_ATOM_1_0) + item->pubDate = +- __mrss_atom_prepare_date (nxmle_get_string (cur, NULL)); ++ __mrss_atom_prepare_date (data, nxmle_get_string (cur, NULL)); + + /* issued -> pubDate (Atom 0.3) */ + else if (!strcmp (cur->value, "issued") && !item->pubDate) + item->pubDate = +- __mrss_atom_prepare_date (nxmle_get_string (cur, NULL)); ++ __mrss_atom_prepare_date (data, nxmle_get_string (cur, NULL)); + + /* id -> guid */ + else if (!strcmp (cur->value, "id") && !item->guid +@@ -701,7 +711,7 @@ + /* updated -> lastBuildDate */ + else if (!strcmp (cur->value, "updated")) + data->lastBuildDate = +- __mrss_atom_prepare_date (nxmle_get_string (cur, NULL)); ++ __mrss_atom_prepare_date (data, nxmle_get_string (cur, NULL)); + + /* author -> managingeditor */ + else if (!strcmp (cur->value, "author")) |