forked-daapd: Backport upstream patch to prevent gperf build error 4763/head
authorEspen Jürgensen <espenjurgensen+openwrt@gmail.com>
Sat, 26 Aug 2017 23:04:37 +0000 (01:04 +0200)
committerEspen Jürgensen <espenjurgensen+openwrt@gmail.com>
Sat, 26 Aug 2017 23:04:37 +0000 (01:04 +0200)
This adds a patch which is a backport of https://github.com/ejurgensen/forked-daapd/commit/1b8adc11edec48a9b8fcb75b9efdaf618a6744bd

This should prevent the gperf build errors on some platforms.

Signed-off-by: Espen Jürgensen <espenjurgensen+openwrt@gmail.com>
sound/forked-daapd/patches/010-use_a_wrapper_for_dmap_find_field.patch [new file with mode: 0644]

diff --git a/sound/forked-daapd/patches/010-use_a_wrapper_for_dmap_find_field.patch b/sound/forked-daapd/patches/010-use_a_wrapper_for_dmap_find_field.patch
new file mode 100644 (file)
index 0000000..bbbd2cc
--- /dev/null
@@ -0,0 +1,103 @@
+From 1b8adc11edec48a9b8fcb75b9efdaf618a6744bd Mon Sep 17 00:00:00 2001
+From: ejurgensen <espenjurgensen@gmail.com>
+Date: Fri, 25 Aug 2017 19:27:41 +0200
+Subject: [PATCH] [dmap] Use a wrapper for dmap_find_field() Avoids the need to
+ have definition of dmap_find_field in dmap_common.h that must be kept in sync
+ with the definition that gperf generates.
+
+Also should fix compilation problems when gperf is not present, ref pr #390
+---
+ configure.ac      | 21 ---------------------
+ src/dmap_common.c |  6 ++++++
+ src/dmap_common.h |  4 +---
+ src/httpd_daap.c  |  2 +-
+ 4 files changed, 8 insertions(+), 25 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 9b149be..9819c82 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -32,27 +32,6 @@ to install it.]])],
+               [AC_MSG_ERROR([[GNU gperf required, please install it.]])])
+       ])
+-GPERF_TEST="$(echo foo,bar | ${GPERF} -L ANSI-C)"
+-
+-AC_COMPILE_IFELSE(
+-      [AC_LANG_PROGRAM([
+-              #include <string.h>
+-              const char * in_word_set(const char *, size_t);
+-              $GPERF_TEST]
+-      )],
+-      [GPERF_LEN_TYPE=size_t],
+-      [AC_COMPILE_IFELSE(
+-              [AC_LANG_PROGRAM([
+-                      #include <string.h>
+-                      const char * in_word_set(const char *, unsigned);
+-                      $GPERF_TEST]
+-              )],
+-              [GPERF_LEN_TYPE=unsigned],
+-              [AC_MSG_ERROR([** unable to determine gperf len type])]
+-      )]
+-)
+-
+-AC_DEFINE_UNQUOTED([GPERF_LEN_TYPE], [$GPERF_LEN_TYPE], [gperf len type])
+ AC_PATH_PROG([ANTLR], [[antlr3]])
+ AS_IF([[test -z "$ANTLR"]],
+       [AS_IF([[test -f "$srcdir/src/SMARTPLLexer.h"]],
+diff --git a/src/dmap_common.c b/src/dmap_common.c
+index 250a2d1..b2bc362 100644
+--- a/src/dmap_common.c
++++ b/src/dmap_common.c
+@@ -42,6 +42,12 @@ dmap_get_fields_table(int *nfields)
+   return dmap_fields;
+ }
++// This wrapper is so callers don't need to include dmap_fields_hash.h
++const struct dmap_field *
++dmap_find_field_wrapper(const char *str, int len)
++{
++  return dmap_find_field(str, len);
++}
+ void
+ dmap_add_container(struct evbuffer *evbuf, const char *tag, int len)
+diff --git a/src/dmap_common.h b/src/dmap_common.h
+index 93a2bdc..73f72d0 100644
+--- a/src/dmap_common.h
++++ b/src/dmap_common.h
+@@ -2,7 +2,6 @@
+ #ifndef __DMAP_HELPERS_H__
+ #define __DMAP_HELPERS_H__
+-#include "config.h"
+ #include <event2/buffer.h>
+ #include <event2/http.h>
+@@ -45,9 +44,8 @@ extern const struct dmap_field_map dfm_dmap_aeSP;
+ const struct dmap_field *
+ dmap_get_fields_table(int *nfields);
+-/* From dmap_fields.gperf - keep in sync, don't alter */
+ const struct dmap_field *
+-dmap_find_field (register const char *str, register GPERF_LEN_TYPE len);
++dmap_find_field_wrapper(const char *str, int len);
+ void
+diff --git a/src/httpd_daap.c b/src/httpd_daap.c
+index aef2fe0..0564275 100644
+--- a/src/httpd_daap.c
++++ b/src/httpd_daap.c
+@@ -738,7 +738,7 @@ parse_meta(struct evhttp_request *req, char *tag, const char *param, const struc
+       if (n == i)
+       {
+-        meta[i] = dmap_find_field(field, strlen(field));
++        meta[i] = dmap_find_field_wrapper(field, strlen(field));
+         if (!meta[i])
+           {
+-- 
+2.7.4
+