packages/libmrss: Apply my patches to libmrss (will be send upstream)
authorHolger Freyther <zecke@selfish.org>
Sun, 1 Apr 2007 17:49:59 +0000 (17:49 +0000)
committerHolger Freyther <zecke@selfish.org>
Sun, 1 Apr 2007 17:49:59 +0000 (17:49 +0000)
    -Make sure pubDate is always set for ATOM feeds from planets
    -Bump the library version to 0.17
    -Format Atom dates RFC822 compliant

packages/libmrss/files/.mtn2git_empty [new file with mode: 0644]
packages/libmrss/files/atom-changes.patch [new file with mode: 0644]
packages/libmrss/files/bump-version.patch [new file with mode: 0644]
packages/libmrss/files/fix_atom_date_locale.patch [new file with mode: 0644]
packages/libmrss/libmrss_0.17.bb

diff --git a/packages/libmrss/files/.mtn2git_empty b/packages/libmrss/files/.mtn2git_empty
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/packages/libmrss/files/atom-changes.patch b/packages/libmrss/files/atom-changes.patch
new file mode 100644 (file)
index 0000000..42f74d0
--- /dev/null
@@ -0,0 +1,17 @@
+Make sure to always set a pubDate
+
+Index: libmrss-0.17/src/mrss_parser.c
+===================================================================
+--- libmrss-0.17.orig/src/mrss_parser.c        2007-03-22 19:40:54.000000000 +0100
++++ libmrss-0.17/src/mrss_parser.c     2007-03-22 19:44:15.000000000 +0100
+@@ -270,6 +270,10 @@
+                  && data->version == MRSS_VERSION_ATOM_1_0)
+           item->pubDate =
+             __mrss_atom_prepare_date (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));
+         /* issued -> pubDate (Atom 0.3) */
+         else if (!strcmp (cur->value, "issued") && !item->pubDate)
diff --git a/packages/libmrss/files/bump-version.patch b/packages/libmrss/files/bump-version.patch
new file mode 100644 (file)
index 0000000..2eeb693
--- /dev/null
@@ -0,0 +1,16 @@
+Bump the version info, specially as I changed the struct in a binary
+incompatible way.
+
+Index: libmrss-0.17/src/Makefile.am
+===================================================================
+--- libmrss-0.17.orig/src/Makefile.am  2007-04-01 16:43:58.000000000 +0200
++++ libmrss-0.17/src/Makefile.am       2007-04-01 16:44:10.000000000 +0200
+@@ -10,7 +10,7 @@
+       mrss_options.c \
+       mrss_search.c
+-libmrss_la_LDFLAGS = -version-info 0:16:0
++libmrss_la_LDFLAGS = -version-info 0:17:0
+ EXTRA_DIST = mrss.h mrss_internal.h
diff --git a/packages/libmrss/files/fix_atom_date_locale.patch b/packages/libmrss/files/fix_atom_date_locale.patch
new file mode 100644 (file)
index 0000000..4d46033
--- /dev/null
@@ -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"))
index c2170fa..9871dbe 100644 (file)
@@ -6,7 +6,10 @@ DEPENDS = "libnxml curl"
 
 inherit autotools pkgconfig
 
-SRC_URI = "http://www2.autistici.org/bakunin//libmrss/libmrss-${PV}.tar.gz;md5sum=28d0e78d736748e67f25ad99456f10c3"
+SRC_URI = "http://www2.autistici.org/bakunin//libmrss/libmrss-${PV}.tar.gz;md5sum=28d0e78d736748e67f25ad99456f10c3 \
+           file://atom-changes.patch;patch=1                                                                       \
+           file://fix_atom_date_locale.patch;patch=1                                                               \
+           file://bump-version.patch;patch=1 "
 
 do_stage() {
     autotools_stage_all