summaryrefslogtreecommitdiffstats
path: root/xbmc-11.0-dteirney-myth-0.25.patch
diff options
context:
space:
mode:
Diffstat (limited to 'xbmc-11.0-dteirney-myth-0.25.patch')
-rw-r--r--xbmc-11.0-dteirney-myth-0.25.patch660
1 files changed, 0 insertions, 660 deletions
diff --git a/xbmc-11.0-dteirney-myth-0.25.patch b/xbmc-11.0-dteirney-myth-0.25.patch
deleted file mode 100644
index dfd12d6..0000000
--- a/xbmc-11.0-dteirney-myth-0.25.patch
+++ /dev/null
@@ -1,660 +0,0 @@
-diff --git a/lib/cmyth/include/cmyth/cmyth.h b/lib/cmyth/include/cmyth/cmyth.h
-index 52f2f68..d8cb364 100644
---- a/lib/cmyth/include/cmyth/cmyth.h
-+++ b/lib/cmyth/include/cmyth/cmyth.h
-@@ -749,6 +749,20 @@ extern char *cmyth_proginfo_subtitle(cmyth_proginfo_t prog);
- extern char *cmyth_proginfo_description(cmyth_proginfo_t prog);
-
- /**
-+ * Retrieve the season of a program.
-+ * \param prog proginfo handle
-+ * \return season
-+ */
-+extern unsigned short cmyth_proginfo_season(cmyth_proginfo_t prog);
-+
-+/**
-+ * Retrieve the episode of a program.
-+ * \param prog proginfo handle
-+ * \return episode
-+ */
-+extern unsigned short cmyth_proginfo_episode(cmyth_proginfo_t prog);
-+
-+/**
- * Retrieve the category of a program.
- * \param prog proginfo handle
- * \return null-terminated string
-@@ -805,6 +819,13 @@ extern char *cmyth_proginfo_seriesid(cmyth_proginfo_t prog);
- extern long cmyth_proginfo_priority(cmyth_proginfo_t prog);
-
- /**
-+ * Retrieve the inetref of a program.
-+ * \param prog proginfo handle
-+ * \return null-terminated string
-+ */
-+extern char *cmyth_proginfo_inetref(cmyth_proginfo_t prog);
-+
-+/**
- * Retrieve the critics rating (number of stars) of a program.
- * \param prog proginfo handle
- * \return null-terminated string
-diff --git a/lib/cmyth/libcmyth/bookmark.c b/lib/cmyth/libcmyth/bookmark.c
-index af7580f..4681c21 100644
---- a/lib/cmyth/libcmyth/bookmark.c
-+++ b/lib/cmyth/libcmyth/bookmark.c
-@@ -20,6 +20,7 @@
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-+#include <inttypes.h>
- #include <errno.h>
- #include <cmyth_local.h>
-
-@@ -59,7 +60,7 @@ long long cmyth_get_bookmark(cmyth_conn_t conn, cmyth_proginfo_t prog)
- }
- if ((r=cmyth_rcv_long_long(conn, &err, &ll, count)) < 0) {
- cmyth_dbg(CMYTH_DBG_ERROR,
-- "%s: cmyth_rcv_longlong() failed (%d)\n",
-+ "%s: cmyth_rcv_long_long() failed (%d)\n",
- __FUNCTION__, r);
- ret = err;
- goto out;
-@@ -74,7 +75,7 @@ long long cmyth_get_bookmark(cmyth_conn_t conn, cmyth_proginfo_t prog)
- int cmyth_set_bookmark(cmyth_conn_t conn, cmyth_proginfo_t prog, long long bookmark)
- {
- char *buf;
-- unsigned int len = CMYTH_TIMESTAMP_LEN + CMYTH_LONGLONG_LEN + 18;
-+ unsigned int len = CMYTH_TIMESTAMP_LEN + CMYTH_LONGLONG_LEN * 2 + 18;
- char resultstr[3];
- int r,err;
- int ret;
-@@ -85,8 +86,18 @@ int cmyth_set_bookmark(cmyth_conn_t conn, cmyth_proginfo_t prog, long long bookm
- if (!buf) {
- return -ENOMEM;
- }
-- sprintf(buf,"%s %ld %s %lld %lld","SET_BOOKMARK",prog->proginfo_chanId,
-- start_ts_dt, bookmark >> 32,(bookmark & 0xffffffff));
-+ if (conn->conn_version >= 66) {
-+ /*
-+ * Since protocol 66 mythbackend expects a single 64 bit integer rather than two 32 bit
-+ * hi and lo integers.
-+ */
-+ sprintf(buf, "SET_BOOKMARK %ld %s %"PRIu64, prog->proginfo_chanId,
-+ start_ts_dt, (int64_t)bookmark);
-+ }
-+ else {
-+ sprintf(buf, "SET_BOOKMARK %ld %s %d %d", prog->proginfo_chanId,
-+ start_ts_dt, (int32_t)(bookmark >> 32), (int32_t)(bookmark & 0xffffffff));
-+ }
- pthread_mutex_lock(&mutex);
- if ((err = cmyth_send_message(conn,buf)) < 0) {
- cmyth_dbg(CMYTH_DBG_ERROR,
-diff --git a/lib/cmyth/libcmyth/cmyth_local.h b/lib/cmyth/libcmyth/cmyth_local.h
-index 40bed11..f7b85fb 100644
---- a/lib/cmyth/libcmyth/cmyth_local.h
-+++ b/lib/cmyth/libcmyth/cmyth_local.h
-@@ -224,6 +224,8 @@ struct cmyth_proginfo {
- char *proginfo_title;
- char *proginfo_subtitle;
- char *proginfo_description;
-+ unsigned short proginfo_season; /* new in V67 */
-+ unsigned short proginfo_episode; /* new in V67 */
- char *proginfo_category;
- long proginfo_chanId;
- char *proginfo_chanstr;
-@@ -258,6 +260,7 @@ struct cmyth_proginfo {
- char *proginfo_chan_output_filters; /* new in V8 */
- char *proginfo_seriesid; /* new in V8 */
- char *proginfo_programid; /* new in V12 */
-+ char *proginfo_inetref; /* new in V67 */
- cmyth_timestamp_t proginfo_lastmodified; /* new in V12 */
- char *proginfo_stars; /* new in V12 */
- cmyth_timestamp_t proginfo_originalairdate; /* new in V12 */
-diff --git a/lib/cmyth/libcmyth/connection.c b/lib/cmyth/libcmyth/connection.c
-index 9d5fb0d..9d13721 100644
---- a/lib/cmyth/libcmyth/connection.c
-+++ b/lib/cmyth/libcmyth/connection.c
-@@ -56,6 +56,15 @@ static myth_protomap_t protomap[] = {
- {62, "78B5631E"},
- {63, "3875641D"},
- {64, "8675309J"},
-+ {65, "D2BB94C2"},
-+ {66, "0C0FFEE0"},
-+ {67, "0G0G0G0"},
-+ {68, "90094EAD"},
-+ {69, "63835135"},
-+ {70, "53153836"},
-+ {71, "05e82186"},
-+ {72, "D78EFD6F"},
-+ {73, "D7FE8D6F"},
- {0, 0}
- };
-
-@@ -527,7 +536,7 @@ cmyth_conn_connect_file(cmyth_proginfo_t prog, cmyth_conn_t control,
- int err = 0;
- int count = 0;
- int r;
-- int ann_size = sizeof("ANN FileTransfer []:[][]:[]");
-+ int ann_size = sizeof("ANN FileTransfer 0[]:[][]:[]");
- cmyth_file_t ret = NULL;
-
- if (!prog) {
-@@ -575,6 +584,12 @@ cmyth_conn_connect_file(cmyth_proginfo_t prog, cmyth_conn_t control,
- myth_host, prog->proginfo_port, buflen);
- goto shut;
- }
-+ /*
-+ * Explicitly set the conn version to the control version as cmyth_connect() doesn't and some of
-+ * the cmyth_rcv_* functions expect it to be the same as the protocol version used by mythbackend.
-+ */
-+ conn->conn_version = control->conn_version;
-+
- ann_size += strlen(prog->proginfo_pathname) + strlen(my_hostname);
- announcement = malloc(ann_size);
- if (!announcement) {
-@@ -584,7 +599,7 @@ cmyth_conn_connect_file(cmyth_proginfo_t prog, cmyth_conn_t control,
- goto shut;
- }
- if (control->conn_version >= 44) {
-- sprintf(announcement, "ANN FileTransfer %s[]:[]%s[]:[]",
-+ sprintf(announcement, "ANN FileTransfer %s 0[]:[]%s[]:[]", // write = false
- my_hostname, prog->proginfo_pathname);
- }
- else {
-@@ -631,7 +646,7 @@ cmyth_conn_connect_file(cmyth_proginfo_t prog, cmyth_conn_t control,
- r = cmyth_rcv_u_long_long(conn, &err, &ret->file_length, count);
- if (err) {
- cmyth_dbg(CMYTH_DBG_ERROR,
-- "%s: (length) cmyth_rcv_longlong() failed (%d)\n",
-+ "%s: (length) cmyth_rcv_u_long_long() failed (%d)\n",
- __FUNCTION__, err);
- goto shut;
- }
-@@ -683,7 +698,7 @@ cmyth_conn_connect_path(char* path, cmyth_conn_t control,
- int err = 0;
- int count = 0;
- int r, port;
-- int ann_size = sizeof("ANN FileTransfer []:[][]:[]");
-+ int ann_size = sizeof("ANN FileTransfer 0[]:[][]:[]");
- struct sockaddr_in addr;
- socklen_t addr_size = sizeof(addr);
- cmyth_file_t ret = NULL;
-@@ -716,6 +731,11 @@ cmyth_conn_connect_path(char* path, cmyth_conn_t control,
- __FUNCTION__, host, port, buflen);
- goto shut;
- }
-+ /*
-+ * Explicitly set the conn version to the control version as cmyth_connect() doesn't and some of
-+ * the cmyth_rcv_* functions expect it to be the same as the protocol version used by mythbackend.
-+ */
-+ conn->conn_version = control->conn_version;
-
- ann_size += strlen(path) + strlen(my_hostname) + strlen(sgToGetFrom) + 6;
- announcement = malloc(ann_size);
-@@ -771,7 +792,7 @@ cmyth_conn_connect_path(char* path, cmyth_conn_t control,
- r = cmyth_rcv_u_long_long(conn, &err, &ret->file_length, count);
- if (err) {
- cmyth_dbg(CMYTH_DBG_ERROR,
-- "%s: (length) cmyth_rcv_longlong() failed (%d)\n",
-+ "%s: (length) cmyth_rcv_u_long_long() failed (%d)\n",
- __FUNCTION__, err);
- goto shut;
- }
-diff --git a/lib/cmyth/libcmyth/file.c b/lib/cmyth/libcmyth/file.c
-index 74408ed..640f299 100644
---- a/lib/cmyth/libcmyth/file.c
-+++ b/lib/cmyth/libcmyth/file.c
-@@ -20,6 +20,7 @@
- #include <stdio.h>
- #include <stdlib.h>
- #include <errno.h>
-+#include <inttypes.h>
- #ifndef _MSC_VER
- #include <sys/socket.h>
- #endif
-@@ -449,14 +450,28 @@ cmyth_file_seek(cmyth_file_t file, long long offset, int whence)
-
- pthread_mutex_lock(&mutex);
-
-- snprintf(msg, sizeof(msg),
-- "QUERY_FILETRANSFER %ld[]:[]SEEK[]:[]%d[]:[]%d[]:[]%d[]:[]%d[]:[]%d",
-- file->file_id,
-- (int32_t)(offset >> 32),
-- (int32_t)(offset & 0xffffffff),
-- whence,
-- (int32_t)(file->file_pos >> 32),
-- (int32_t)(file->file_pos & 0xffffffff));
-+ if (file->file_control->conn_version >= 66) {
-+ /*
-+ * Since protocol 66 mythbackend expects to receive a single 64 bit integer rather than
-+ * two 32 bit hi and lo integers.
-+ */
-+ snprintf(msg, sizeof(msg),
-+ "QUERY_FILETRANSFER %ld[]:[]SEEK[]:[]%"PRIu64"[]:[]%d[]:[]%"PRIu64,
-+ file->file_id,
-+ (int64_t)offset,
-+ whence,
-+ (int64_t)file->file_pos);
-+ }
-+ else {
-+ snprintf(msg, sizeof(msg),
-+ "QUERY_FILETRANSFER %ld[]:[]SEEK[]:[]%d[]:[]%d[]:[]%d[]:[]%d[]:[]%d",
-+ file->file_id,
-+ (int32_t)(offset >> 32),
-+ (int32_t)(offset & 0xffffffff),
-+ whence,
-+ (int32_t)(file->file_pos >> 32),
-+ (int32_t)(file->file_pos & 0xffffffff));
-+ }
-
- if ((err = cmyth_send_message(file->file_control, msg)) < 0) {
- cmyth_dbg(CMYTH_DBG_ERROR,
-diff --git a/lib/cmyth/libcmyth/proginfo.c b/lib/cmyth/libcmyth/proginfo.c
-index b175637..f6f9347 100644
---- a/lib/cmyth/libcmyth/proginfo.c
-+++ b/lib/cmyth/libcmyth/proginfo.c
-@@ -116,6 +116,9 @@ cmyth_proginfo_destroy(cmyth_proginfo_t p)
- if (p->proginfo_programid) {
- ref_release(p->proginfo_programid);
- }
-+ if (p->proginfo_inetref) {
-+ ref_release(p->proginfo_inetref);
-+ }
- if (p->proginfo_stars) {
- ref_release(p->proginfo_stars);
- }
-@@ -217,6 +220,8 @@ cmyth_proginfo_create(void)
- ret->proginfo_title = NULL;
- ret->proginfo_subtitle = NULL;
- ret->proginfo_description = NULL;
-+ ret->proginfo_season = 0;
-+ ret->proginfo_episode = 0;
- ret->proginfo_category = NULL;
- ret->proginfo_chanId = 0;
- ret->proginfo_chanstr = NULL;
-@@ -250,6 +255,7 @@ cmyth_proginfo_create(void)
- ret->proginfo_chan_output_filters = NULL;
- ret->proginfo_seriesid = NULL;
- ret->proginfo_programid = NULL;
-+ ret->proginfo_inetref = NULL;
- ret->proginfo_stars = NULL;
- ret->proginfo_version = 12;
- ret->proginfo_hasairdate = 0;
-@@ -307,6 +313,8 @@ cmyth_proginfo_dup(cmyth_proginfo_t p)
- ret->proginfo_title = ref_hold(p->proginfo_title);
- ret->proginfo_subtitle = ref_hold(p->proginfo_subtitle);
- ret->proginfo_description = ref_hold(p->proginfo_description);
-+ ret->proginfo_season = p->proginfo_season;
-+ ret->proginfo_episode = p->proginfo_episode;
- ret->proginfo_category = ref_hold(p->proginfo_category);
- ret->proginfo_chanId = p->proginfo_chanId;
- ret->proginfo_chanstr = ref_hold(p->proginfo_chanstr);
-@@ -340,6 +348,7 @@ cmyth_proginfo_dup(cmyth_proginfo_t p)
- ret->proginfo_chan_output_filters = ref_hold(p->proginfo_chan_output_filters);
- ret->proginfo_seriesid = ref_hold(p->proginfo_seriesid);
- ret->proginfo_programid = ref_hold(p->proginfo_programid);
-+ ret->proginfo_inetref = ref_hold(p->proginfo_inetref);
- ret->proginfo_stars = ref_hold(p->proginfo_stars);
- ret->proginfo_version = p->proginfo_version;
- ret->proginfo_hasairdate = p->proginfo_hasairdate;
-@@ -386,7 +395,7 @@ delete_command(cmyth_conn_t control, cmyth_proginfo_t prog, char *cmd)
- char *buf;
- unsigned int len = ((2 * CMYTH_LONGLONG_LEN) +
- (6 * CMYTH_TIMESTAMP_LEN) +
-- (14 * CMYTH_LONG_LEN));
-+ (16 * CMYTH_LONG_LEN));
- char start_ts[CMYTH_TIMESTAMP_LEN + 1];
- char end_ts[CMYTH_TIMESTAMP_LEN + 1];
- char rec_start_ts[CMYTH_TIMESTAMP_LEN + 1];
-@@ -415,8 +424,12 @@ delete_command(cmyth_conn_t control, cmyth_proginfo_t prog, char *cmd)
- len += strlen(S(prog->proginfo_url));
- len += strlen(S(prog->proginfo_hostname));
- len += strlen(S(prog->proginfo_playgroup));
-+ len += strlen(S(prog->proginfo_seriesid));
-+ len += strlen(S(prog->proginfo_programid));
-+ len += strlen(S(prog->proginfo_inetref));
- len += strlen(S(prog->proginfo_recpriority_2));
- len += strlen(S(prog->proginfo_storagegroup));
-+ len += strlen(S(prog->proginfo_prodyear));
-
- buf = alloca(len + 1+2048);
- if (!buf) {
-@@ -462,6 +475,10 @@ delete_command(cmyth_conn_t control, cmyth_proginfo_t prog, char *cmd)
- sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_title));
- sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_subtitle));
- sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_description));
-+ if (control->conn_version >= 67) {
-+ sprintf(buf + strlen(buf), "%u[]:[]", prog->proginfo_season);
-+ sprintf(buf + strlen(buf), "%u[]:[]", prog->proginfo_episode);
-+ }
- sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_category));
- sprintf(buf + strlen(buf), "%ld[]:[]", prog->proginfo_chanId);
- sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_chanstr));
-@@ -504,6 +521,9 @@ delete_command(cmyth_conn_t control, cmyth_proginfo_t prog, char *cmd)
- sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_chan_output_filters));
- sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_seriesid));
- sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_programid));
-+ if (control->conn_version >= 67) {
-+ sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_inetref));
-+ }
- sprintf(buf + strlen(buf), "%s[]:[]", lastmodified);
- sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_stars));
- sprintf(buf + strlen(buf), "%s[]:[]", originalairdate);
-@@ -773,6 +793,24 @@ cmyth_proginfo_description(cmyth_proginfo_t prog)
- return ref_hold(prog->proginfo_description);
- }
-
-+unsigned short
-+cmyth_proginfo_season(cmyth_proginfo_t prog)
-+{
-+ if (!prog) {
-+ return 0;
-+ }
-+ return prog->proginfo_season;
-+}
-+
-+unsigned short
-+cmyth_proginfo_episode(cmyth_proginfo_t prog)
-+{
-+ if (!prog) {
-+ return 0;
-+ }
-+ return prog->proginfo_episode;
-+}
-+
- /*
- * cmyth_proginfo_category(cmyth_proginfo_t prog)
- *
-@@ -827,6 +865,17 @@ cmyth_proginfo_programid(cmyth_proginfo_t prog)
- }
-
- char *
-+cmyth_proginfo_inetref(cmyth_proginfo_t prog)
-+{
-+ if (!prog) {
-+ cmyth_dbg(CMYTH_DBG_ERROR, "%s: NULL inetref\n",
-+ __FUNCTION__);
-+ return NULL;
-+ }
-+ return ref_hold(prog->proginfo_inetref);
-+}
-+
-+char *
- cmyth_proginfo_stars(cmyth_proginfo_t prog)
- {
- if (!prog) {
-@@ -1260,7 +1309,7 @@ fill_command(cmyth_conn_t control, cmyth_proginfo_t prog, char *cmd)
- char *buf;
- unsigned int len = ((2 * CMYTH_LONGLONG_LEN) +
- (6 * CMYTH_TIMESTAMP_LEN) +
-- (14 * CMYTH_LONG_LEN));
-+ (16 * CMYTH_LONG_LEN));
- char start_ts[CMYTH_TIMESTAMP_LEN + 1];
- char end_ts[CMYTH_TIMESTAMP_LEN + 1];
- char rec_start_ts[CMYTH_TIMESTAMP_LEN + 1];
-@@ -1288,6 +1337,9 @@ fill_command(cmyth_conn_t control, cmyth_proginfo_t prog, char *cmd)
- len += strlen(S(prog->proginfo_url));
- len += strlen(S(prog->proginfo_hostname));
- len += strlen(S(prog->proginfo_playgroup));
-+ len += strlen(S(prog->proginfo_seriesid));
-+ len += strlen(S(prog->proginfo_programid));
-+ len += strlen(S(prog->proginfo_inetref));
- len += strlen(S(prog->proginfo_recpriority_2));
- len += strlen(S(prog->proginfo_storagegroup));
- len += strlen(S(prog->proginfo_prodyear));
-@@ -1336,6 +1388,10 @@ fill_command(cmyth_conn_t control, cmyth_proginfo_t prog, char *cmd)
- sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_title));
- sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_subtitle));
- sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_description));
-+ if (control->conn_version >= 67) {
-+ sprintf(buf + strlen(buf), "%u[]:[]", prog->proginfo_season);
-+ sprintf(buf + strlen(buf), "%u[]:[]", prog->proginfo_episode);
-+ }
- sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_category));
- sprintf(buf + strlen(buf), "%ld[]:[]", prog->proginfo_chanId);
- sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_chanstr));
-@@ -1378,6 +1434,9 @@ fill_command(cmyth_conn_t control, cmyth_proginfo_t prog, char *cmd)
- sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_chan_output_filters));
- sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_seriesid));
- sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_programid));
-+ if (control->conn_version >= 67) {
-+ sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_inetref));
-+ }
- sprintf(buf + strlen(buf), "%s[]:[]", lastmodified);
- sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_stars));
- sprintf(buf + strlen(buf), "%s[]:[]", originalairdate);
-diff --git a/lib/cmyth/libcmyth/proglist.c b/lib/cmyth/libcmyth/proglist.c
-index 28e742c..fe75577 100644
---- a/lib/cmyth/libcmyth/proglist.c
-+++ b/lib/cmyth/libcmyth/proglist.c
-@@ -315,6 +315,7 @@ cmyth_proglist_get_list(cmyth_conn_t conn,
- cmyth_proglist_t
- cmyth_proglist_get_all_recorded(cmyth_conn_t control)
- {
-+ char query[32];
- cmyth_proglist_t proglist = cmyth_proglist_create();
-
- if (proglist == NULL) {
-@@ -324,8 +325,14 @@ cmyth_proglist_get_all_recorded(cmyth_conn_t control)
- return NULL;
- }
-
-+ if (control->conn_version < 65) {
-+ strcpy(query, "QUERY_RECORDINGS Play");
-+ }
-+ else {
-+ strcpy(query, "QUERY_RECORDINGS Ascending");
-+ }
- if (cmyth_proglist_get_list(control, proglist,
-- "QUERY_RECORDINGS Play",
-+ query,
- __FUNCTION__) < 0) {
- cmyth_dbg(CMYTH_DBG_ERROR,
- "%s: cmyth_proglist_get_list() failed\n",
-diff --git a/lib/cmyth/libcmyth/socket.c b/lib/cmyth/libcmyth/socket.c
-index f1f9a45..552b88d 100644
---- a/lib/cmyth/libcmyth/socket.c
-+++ b/lib/cmyth/libcmyth/socket.c
-@@ -882,23 +882,38 @@ cmyth_rcv_long_long(cmyth_conn_t conn, int *err, long long *buf, int count)
- *err = EINVAL;
- return 0;
- }
-- consumed = cmyth_rcv_u_long(conn, err, &hi, count);
-- if (*err) {
-- cmyth_dbg(CMYTH_DBG_ERROR,
-- "%s: cmyth_rcv_long_long() failed (%d)\n",
-- __FUNCTION__, consumed);
-- return consumed;
-+
-+ if (conn->conn_version >= 66) {
-+ /*
-+ * Since protocol 66 mythbackend now sends a single 64 bit integer rather than two hi and lo
-+ * 32 bit integers for ALL 64 bit values.
-+ */
-+ consumed = cmyth_rcv_int64(conn, err, &val, count);
-+ if (*err) {
-+ cmyth_dbg(CMYTH_DBG_ERROR,
-+ "%s: cmyth_rcv_int64() failed (%d)\n",
-+ __FUNCTION__, consumed);
-+ return consumed;
-+ }
- }
-- consumed += cmyth_rcv_u_long(conn, err, &lo, count-consumed);
-- if (*err) {
-- cmyth_dbg(CMYTH_DBG_ERROR,
-- "%s: cmyth_rcv_long_long() failed (%d)\n",
-- __FUNCTION__, consumed);
-- return consumed;
-+ else {
-+ consumed = cmyth_rcv_u_long(conn, err, &hi, count);
-+ if (*err) {
-+ cmyth_dbg(CMYTH_DBG_ERROR,
-+ "%s: cmyth_rcv_u_long_long() failed (%d)\n",
-+ __FUNCTION__, consumed);
-+ return consumed;
-+ }
-+ consumed += cmyth_rcv_u_long(conn, err, &lo, count-consumed);
-+ if (*err) {
-+ cmyth_dbg(CMYTH_DBG_ERROR,
-+ "%s: cmyth_rcv_u_long_long() failed (%d)\n",
-+ __FUNCTION__, consumed);
-+ return consumed;
-+ }
-+ val = (((long long)hi) << 32) | ((long long)(lo & 0xFFFFFFFF));
- }
-
-- val = (((long long)hi) << 32) | ((long long)(lo & 0xFFFFFFFF));
--
- *err = 0;
- *buf = val;
-
-@@ -1172,6 +1187,7 @@ cmyth_rcv_ulong_long(cmyth_conn_t conn, int *err,
- unsigned long long *buf, int count)
- {
- unsigned long long val;
-+ long long val64;
- unsigned long hi, lo;
- int consumed;
- int tmp;
-@@ -1186,23 +1202,45 @@ cmyth_rcv_ulong_long(cmyth_conn_t conn, int *err,
- *err = EINVAL;
- return 0;
- }
-- consumed = cmyth_rcv_u_long(conn, err, &hi, count);
-- if (*err) {
-- cmyth_dbg(CMYTH_DBG_ERROR,
-- "%s: cmyth_rcv_ulong_long() failed (%d)\n",
-- __FUNCTION__, consumed);
-- return consumed;
-+
-+ if (conn->conn_version >= 66) {
-+ /*
-+ * Since protocol 66 mythbackend now sends a single 64 bit integer rather than two hi and lo
-+ * 32 bit integers for ALL 64 bit values.
-+ */
-+ consumed = cmyth_rcv_int64(conn, err, &val64, count);
-+ if (*err) {
-+ cmyth_dbg(CMYTH_DBG_ERROR,
-+ "%s: cmyth_rcv_int64() failed (%d)\n",
-+ __FUNCTION__, consumed);
-+ return consumed;
-+ }
-+ if (val64 < 0) {
-+ cmyth_dbg(CMYTH_DBG_ERROR,
-+ "%s: cmyth_rcv_int64() failed as signed 64 bit integer received\n",
-+ __FUNCTION__, consumed);
-+ *err = EINVAL;
-+ return consumed;
-+ }
-+ val = (unsigned long long)val64;
- }
-- consumed += cmyth_rcv_u_long(conn, err, &lo, count);
-- if (*err) {
-- cmyth_dbg(CMYTH_DBG_ERROR,
-- "%s: cmyth_rcv_ulong_long() failed (%d)\n",
-- __FUNCTION__, consumed);
-- return consumed;
-+ else {
-+ consumed = cmyth_rcv_u_long(conn, err, &hi, count);
-+ if (*err) {
-+ cmyth_dbg(CMYTH_DBG_ERROR,
-+ "%s: cmyth_rcv_u_long_long() failed (%d)\n",
-+ __FUNCTION__, consumed);
-+ return consumed;
-+ }
-+ consumed += cmyth_rcv_u_long(conn, err, &lo, count);
-+ if (*err) {
-+ cmyth_dbg(CMYTH_DBG_ERROR,
-+ "%s: cmyth_rcv_u_long_long() failed (%d)\n",
-+ __FUNCTION__, consumed);
-+ return consumed;
-+ }
-+ val = (((unsigned long long)hi) << 32) | ((unsigned long long)(lo & 0xFFFFFFFF));
- }
--
-- val = (((unsigned long long)hi) << 32) | ((unsigned long long)(lo & 0xFFFFFFFF));
--
- *err = 0;
- *buf = val;
-
-@@ -1485,7 +1523,8 @@ cmyth_rcv_proginfo(cmyth_conn_t conn, int *err, cmyth_proginfo_t buf,
-
- if (buf->proginfo_version >= 57) {
- /*
-- * Myth now sends a single 64bit int, rather than 2 32bit ints
-+ * Since protocol 57 mythbackend now sends a single 64 bit integer rather than two 32 bit
-+ * hi and lo integers for the proginfo length.
- */
- rcv_64 = &cmyth_rcv_int64;
- } else {
-@@ -1536,6 +1575,29 @@ cmyth_rcv_proginfo(cmyth_conn_t conn, int *err, cmyth_proginfo_t buf,
- ref_release(buf->proginfo_description);
- buf->proginfo_description = ref_strdup(tmp_str);
-
-+ if (buf->proginfo_version >= 67) {
-+ /*
-+ * Get season and episode (unsigned int)
-+ */
-+ consumed = cmyth_rcv_ushort(conn, err,
-+ &buf->proginfo_season, count);
-+ count -= consumed;
-+ total += consumed;
-+ if (*err) {
-+ failed = "cmyth_rcv_ushort";
-+ goto fail;
-+ }
-+
-+ consumed = cmyth_rcv_ushort(conn, err,
-+ &buf->proginfo_episode, count);
-+ count -= consumed;
-+ total += consumed;
-+ if (*err) {
-+ failed = "cmyth_rcv_ushort";
-+ goto fail;
-+ }
-+ }
-+
- /*
- * Get proginfo_category (string)
- */
-@@ -1649,7 +1711,7 @@ cmyth_rcv_proginfo(cmyth_conn_t conn, int *err, cmyth_proginfo_t buf,
- count -= consumed;
- total += consumed;
- if (*err) {
-- failed = "cmyth_rcv_long_long";
-+ failed = "rcv_64";
- goto fail;
- }
-
-@@ -2013,7 +2075,7 @@ cmyth_rcv_proginfo(cmyth_conn_t conn, int *err, cmyth_proginfo_t buf,
- count -= consumed;
- total += consumed;
- if (*err) {
-- failed = "cmyth_rcv_timestamp";
-+ failed = "cmyth_rcv_string";
- goto fail;
- }
- if (buf->proginfo_programid)
-@@ -2021,6 +2083,23 @@ cmyth_rcv_proginfo(cmyth_conn_t conn, int *err, cmyth_proginfo_t buf,
- buf->proginfo_programid = ref_strdup(tmp_str);
- }
-
-+ if (buf->proginfo_version >= 67) {
-+ /*
-+ * Get inetref (string)
-+ */
-+ consumed = cmyth_rcv_string(conn, err, tmp_str,
-+ sizeof(tmp_str) - 1, count);
-+ count -= consumed;
-+ total += consumed;
-+ if (*err) {
-+ failed = "cmyth_rcv_string";
-+ goto fail;
-+ }
-+ if (buf->proginfo_inetref)
-+ ref_release(buf->proginfo_inetref);
-+ buf->proginfo_inetref = ref_strdup(tmp_str);
-+ }
-+
- if (buf->proginfo_version >= 12) {
- /*
- * Get lastmodified (string)