diff options
author | David Teirney <github@teirney.net> | 2011-09-02 21:00:30 -0700 |
---|---|---|
committer | David Teirney <github@teirney.net> | 2011-09-02 21:00:30 -0700 |
commit | 312d2c3877b29acaf651dbcac5cd5aedfdd5e6ff (patch) | |
tree | 98f0af225a194b1dfa824adbe42318faf9cb4495 /lib | |
parent | 502099b5179b208bfae702a7f296fcccd0febc45 (diff) | |
parent | 638d02ba94a2696035302ee86fc02d5f7375332b (diff) |
Merge pull request #386 from dteirney/libcmyth
Update libcmyth to support protocol 57 for deletion of recordings
Diffstat (limited to 'lib')
-rw-r--r-- | lib/cmyth/libcmyth/proginfo.c | 291 |
1 files changed, 132 insertions, 159 deletions
diff --git a/lib/cmyth/libcmyth/proginfo.c b/lib/cmyth/libcmyth/proginfo.c index 71d46c63bf..0b957e52d4 100644 --- a/lib/cmyth/libcmyth/proginfo.c +++ b/lib/cmyth/libcmyth/proginfo.c @@ -34,6 +34,7 @@ #include <stdio.h> #include <errno.h> #include <string.h> +#include <inttypes.h> #include <cmyth_local.h> /* @@ -392,10 +393,10 @@ delete_command(cmyth_conn_t control, cmyth_proginfo_t prog, char *cmd) char rec_end_ts[CMYTH_TIMESTAMP_LEN + 1]; char originalairdate[CMYTH_TIMESTAMP_LEN + 1]; char lastmodified[CMYTH_TIMESTAMP_LEN + 1]; - int err; - int count; - long r; - int ret; + int err = 0; + int count = 0; + long r = 0; + int ret = 0; if (!prog) { cmyth_dbg(CMYTH_DBG_ERROR, "%s: no program info\n", @@ -457,84 +458,77 @@ delete_command(cmyth_conn_t control, cmyth_proginfo_t prog, char *cmd) __FUNCTION__, control->conn_version); return -EINVAL; } else { - sprintf(buf, - "%s 0[]:[]" - "%s[]:[]%s[]:[]%s[]:[]%s[]:[]%ld[]:[]" - "%s[]:[]%s[]:[]%s[]:[]%s[]:[]%d[]:[]%d[]:[]" - "%s[]:[]%s[]:[]%s[]:[]%ld[]:[]" - "%ld[]:[]%s[]:[]%ld[]:[]%ld[]:[]%ld[]:[]" - "%s[]:[]%ld[]:[]%ld[]:[]%ld[]:[]%ld[]:[]" - "%ld[]:[]%s[]:[]%s[]:[]%ld[]:[]%ld[]:[]" - "%s[]:[]%s[]:[]%s[]:[]%s[]:[]" - "%s[]:[]%s[]:[]%s[]:[]%s[]:[]", - cmd, - S(prog->proginfo_title), - S(prog->proginfo_subtitle), - S(prog->proginfo_description), - S(prog->proginfo_category), - prog->proginfo_chanId, - S(prog->proginfo_chanstr), - S(prog->proginfo_chansign), - S(prog->proginfo_chanicon), - S(prog->proginfo_url), - (int32_t)(prog->proginfo_Length >> 32), - (int32_t)(prog->proginfo_Length & 0xffffffff), - start_ts, - end_ts, - S(prog->proginfo_unknown_0), - prog->proginfo_recording, - prog->proginfo_override, - S(prog->proginfo_hostname), - prog->proginfo_source_id, - prog->proginfo_card_id, - prog->proginfo_input_id, - S(prog->proginfo_rec_priority), - prog->proginfo_rec_status, - prog->proginfo_record_id, - prog->proginfo_rec_type, - prog->proginfo_rec_dups, - prog->proginfo_unknown_1, - rec_start_ts, - rec_end_ts, - prog->proginfo_repeat, - prog->proginfo_program_flags, - S(prog->proginfo_recgroup), - S(prog->proginfo_chancommfree), - S(prog->proginfo_chan_output_filters), - S(prog->proginfo_seriesid), - S(prog->proginfo_programid), - lastmodified, - S(prog->proginfo_stars), - originalairdate); - if (control->conn_version >= 15) { - sprintf(buf + strlen(buf), "%ld[]:[]", - prog->proginfo_hasairdate); + sprintf(buf, "%s 0[]:[]", 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)); + 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)); + sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_chansign)); + sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_channame)); + sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_url)); + if (control->conn_version >= 57) { + sprintf(buf + strlen(buf), "%"PRId64"[]:[]", prog->proginfo_Length); + } else { + sprintf(buf + strlen(buf), "%d[]:[]", (int32_t)(prog->proginfo_Length >> 32)); + sprintf(buf + strlen(buf), "%d[]:[]", (int32_t)(prog->proginfo_Length & 0xffffffff)); + } + sprintf(buf + strlen(buf), "%s[]:[]", start_ts); + sprintf(buf + strlen(buf), "%s[]:[]", end_ts); + if (control->conn_version < 57) { + sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_unknown_0)); // "duplicate" + sprintf(buf + strlen(buf), "%ld[]:[]", 0); // "shareable" + } + sprintf(buf + strlen(buf), "%ld[]:[]", 0); // "findid" + sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_hostname)); + sprintf(buf + strlen(buf), "%ld[]:[]", prog->proginfo_source_id); + sprintf(buf + strlen(buf), "%ld[]:[]", prog->proginfo_card_id); + sprintf(buf + strlen(buf), "%ld[]:[]", prog->proginfo_input_id); + sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_rec_priority)); + sprintf(buf + strlen(buf), "%ld[]:[]", prog->proginfo_rec_status); + sprintf(buf + strlen(buf), "%ld[]:[]", prog->proginfo_record_id); + sprintf(buf + strlen(buf), "%ld[]:[]", prog->proginfo_rec_type); + sprintf(buf + strlen(buf), "%ld[]:[]", prog->proginfo_rec_dups); + sprintf(buf + strlen(buf), "%ld[]:[]", prog->proginfo_unknown_1); // "dupmethod" + sprintf(buf + strlen(buf), "%s[]:[]", rec_start_ts); + sprintf(buf + strlen(buf), "%s[]:[]", rec_end_ts); + if (control->conn_version < 57) { + sprintf(buf + strlen(buf), "%ld[]:[]", prog->proginfo_repeat); + } + sprintf(buf + strlen(buf), "%ld[]:[]", prog->proginfo_program_flags); + sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_recgroup)); + if (control->conn_version < 57) { + sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_chancommfree)); + } + 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)); + sprintf(buf + strlen(buf), "%s[]:[]", lastmodified); + sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_stars)); + sprintf(buf + strlen(buf), "%s[]:[]", originalairdate); + if (control->conn_version >= 15 && control->conn_version < 57) { + sprintf(buf + strlen(buf), "%ld[]:[]", prog->proginfo_hasairdate); } if (control->conn_version >= 18) { - sprintf(buf + strlen(buf), "%s[]:[]", - S(prog->proginfo_playgroup)); + sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_playgroup)); } - if (control->conn_version >= 25){ - sprintf(buf + strlen(buf), "%s[]:[]", - S(prog->proginfo_recpriority_2)); + if (control->conn_version >= 25) { + sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_recpriority_2)); } if (control->conn_version >= 31) { - sprintf(buf + strlen(buf), "%ld[]:[]", - prog->proginfo_parentid); + sprintf(buf + strlen(buf), "%ld[]:[]", prog->proginfo_parentid); } if (control->conn_version >= 32) { - sprintf(buf + strlen(buf), "%s[]:[]", - S(prog->proginfo_storagegroup)); + sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_storagegroup)); } if (control->conn_version >= 35) { - sprintf(buf + strlen(buf), "%ld[]:[]%ld[]:[]%ld[]:[]", - prog->proginfo_audioproperties, - prog->proginfo_videoproperties, - prog->proginfo_subtitletype); + sprintf(buf + strlen(buf), "%ld[]:[]", prog->proginfo_audioproperties); + sprintf(buf + strlen(buf), "%ld[]:[]", prog->proginfo_videoproperties); + sprintf(buf + strlen(buf), "%ld[]:[]", prog->proginfo_subtitletype); } if (control->conn_version >= 41) { - sprintf(buf + strlen(buf), "%s[]:[]", - S(prog->proginfo_prodyear)); + sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_prodyear)); } } #undef S @@ -558,13 +552,6 @@ delete_command(cmyth_conn_t control, cmyth_proginfo_t prog, char *cmd) goto out; } - /* - * XXX: for some reason, this seems to return an error, even though - * it succeeds... - */ - - ret = 0; - out: pthread_mutex_unlock(&mutex); @@ -1256,8 +1243,8 @@ fill_command(cmyth_conn_t control, cmyth_proginfo_t prog, char *cmd) char rec_end_ts[CMYTH_TIMESTAMP_LEN + 1]; char originalairdate[CMYTH_TIMESTAMP_LEN + 1]; char lastmodified[CMYTH_TIMESTAMP_LEN + 1]; - int err; - int ret; + int err = 0; + int ret = 0; char *host = "mediamvp"; if (!prog) { @@ -1321,84 +1308,77 @@ fill_command(cmyth_conn_t control, cmyth_proginfo_t prog, char *cmd) __FUNCTION__, control->conn_version); return -EINVAL; } else { - sprintf(buf, - "%s %s[]:[]0[]:[]" - "%s[]:[]%s[]:[]%s[]:[]%s[]:[]%ld[]:[]" - "%s[]:[]%s[]:[]%s[]:[]%s[]:[]%d[]:[]%d[]:[]" - "%s[]:[]%s[]:[]%s[]:[]%ld[]:[]" - "%ld[]:[]%s[]:[]%ld[]:[]%ld[]:[]%ld[]:[]" - "%s[]:[]%ld[]:[]%ld[]:[]%ld[]:[]%ld[]:[]" - "%ld[]:[]%s[]:[]%s[]:[]%ld[]:[]%ld[]:[]" - "%s[]:[]%s[]:[]%s[]:[]%s[]:[]" - "%s[]:[]%s[]:[]%s[]:[]%s[]:[]", - cmd, host, - S(prog->proginfo_title), - S(prog->proginfo_subtitle), - S(prog->proginfo_description), - S(prog->proginfo_category), - prog->proginfo_chanId, - S(prog->proginfo_chanstr), - S(prog->proginfo_chansign), - S(prog->proginfo_chanicon), - S(prog->proginfo_url), - (int32_t)(prog->proginfo_Length >> 32), - (int32_t)(prog->proginfo_Length & 0xffffffff), - start_ts, - end_ts, - S(prog->proginfo_unknown_0), - prog->proginfo_recording, - prog->proginfo_override, - S(prog->proginfo_hostname), - prog->proginfo_source_id, - prog->proginfo_card_id, - prog->proginfo_input_id, - S(prog->proginfo_rec_priority), - prog->proginfo_rec_status, - prog->proginfo_record_id, - prog->proginfo_rec_type, - prog->proginfo_rec_dups, - prog->proginfo_unknown_1, - rec_start_ts, - rec_end_ts, - prog->proginfo_repeat, - prog->proginfo_program_flags, - S(prog->proginfo_recgroup), - S(prog->proginfo_chancommfree), - S(prog->proginfo_chan_output_filters), - S(prog->proginfo_seriesid), - S(prog->proginfo_programid), - lastmodified, - S(prog->proginfo_stars), - originalairdate); - if(control->conn_version >= 15) { - sprintf(buf+strlen(buf),"%ld[]:[]", - prog->proginfo_hasairdate); + sprintf(buf, "%s %s[]:[]0[]:[]", cmd, host); + 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)); + 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)); + sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_chansign)); + sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_channame)); + sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_url)); + if (control->conn_version >= 57) { + sprintf(buf + strlen(buf), "%"PRId64"[]:[]", prog->proginfo_Length); + } else { + sprintf(buf + strlen(buf), "%d[]:[]", (int32_t)(prog->proginfo_Length >> 32)); + sprintf(buf + strlen(buf), "%d[]:[]", (int32_t)(prog->proginfo_Length & 0xffffffff)); } - if(control->conn_version >= 18) { - sprintf(buf+strlen(buf),"%s[]:[]", - S(prog->proginfo_playgroup)); + sprintf(buf + strlen(buf), "%s[]:[]", start_ts); + sprintf(buf + strlen(buf), "%s[]:[]", end_ts); + if (control->conn_version < 57) { + sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_unknown_0)); // "duplicate" + sprintf(buf + strlen(buf), "%ld[]:[]", 0); // "shareable" } - if(control->conn_version >= 25) { - sprintf(buf+strlen(buf),"%s[]:[]", - S(prog->proginfo_recpriority_2)); + sprintf(buf + strlen(buf), "%ld[]:[]", 0); // "findid" + sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_hostname)); + sprintf(buf + strlen(buf), "%ld[]:[]", prog->proginfo_source_id); + sprintf(buf + strlen(buf), "%ld[]:[]", prog->proginfo_card_id); + sprintf(buf + strlen(buf), "%ld[]:[]", prog->proginfo_input_id); + sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_rec_priority)); + sprintf(buf + strlen(buf), "%ld[]:[]", prog->proginfo_rec_status); + sprintf(buf + strlen(buf), "%ld[]:[]", prog->proginfo_record_id); + sprintf(buf + strlen(buf), "%ld[]:[]", prog->proginfo_rec_type); + sprintf(buf + strlen(buf), "%ld[]:[]", prog->proginfo_rec_dups); + sprintf(buf + strlen(buf), "%ld[]:[]", prog->proginfo_unknown_1); // "dupmethod" + sprintf(buf + strlen(buf), "%s[]:[]", rec_start_ts); + sprintf(buf + strlen(buf), "%s[]:[]", rec_end_ts); + if (control->conn_version < 57) { + sprintf(buf + strlen(buf), "%ld[]:[]", prog->proginfo_repeat); } - if(control->conn_version >= 31) { - sprintf(buf+strlen(buf),"%ld[]:[]", - prog->proginfo_parentid); + sprintf(buf + strlen(buf), "%ld[]:[]", prog->proginfo_program_flags); + sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_recgroup)); + if (control->conn_version < 57) { + sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_chancommfree)); } - if(control->conn_version >= 32) { - sprintf(buf+strlen(buf),"%s[]:[]", - S(prog->proginfo_storagegroup)); + 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)); + sprintf(buf + strlen(buf), "%s[]:[]", lastmodified); + sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_stars)); + sprintf(buf + strlen(buf), "%s[]:[]", originalairdate); + if (control->conn_version >= 15 && control->conn_version < 57) { + sprintf(buf + strlen(buf), "%ld[]:[]", prog->proginfo_hasairdate); } - if(control->conn_version >= 35) { - sprintf(buf+strlen(buf),"%ld[]:[]%ld[]:[]%ld[]:[]", - prog->proginfo_audioproperties, - prog->proginfo_videoproperties, - prog->proginfo_subtitletype); + if (control->conn_version >= 18) { + sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_playgroup)); + } + if (control->conn_version >= 25) { + sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_recpriority_2)); + } + if (control->conn_version >= 31) { + sprintf(buf + strlen(buf), "%ld[]:[]", prog->proginfo_parentid); + } + if (control->conn_version >= 32) { + sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_storagegroup)); + } + if (control->conn_version >= 35) { + sprintf(buf + strlen(buf), "%ld[]:[]", prog->proginfo_audioproperties); + sprintf(buf + strlen(buf), "%ld[]:[]", prog->proginfo_videoproperties); + sprintf(buf + strlen(buf), "%ld[]:[]", prog->proginfo_subtitletype); } - if(control->conn_version >= 41) { - sprintf(buf+strlen(buf),"%s[]:[]", - S(prog->proginfo_prodyear)); + if (control->conn_version >= 41) { + sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_prodyear)); } } #undef S @@ -1411,13 +1391,6 @@ fill_command(cmyth_conn_t control, cmyth_proginfo_t prog, char *cmd) goto out; } - /* - * XXX: for some reason, this seems to return an error, even though - * it succeeds... - */ - - ret = 0; - out: return ret; } |