Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
DVR: fixed wrong dvr_do_prefix
  • Loading branch information
perexg committed Mar 6, 2016
1 parent 8ea81ab commit f1c42d3
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 43 deletions.
72 changes: 35 additions & 37 deletions src/dvr/dvr_rec.c
Expand Up @@ -286,17 +286,15 @@ dvr_clean_directory_separator(char *s, char *tmp, size_t tmplen)
}

static const char *
dvr_do_prefix(const char *id, const char *s, char *tmp, size_t tmplen)
dvr_do_prefix(const char *id, const char *fmt, const char *s, char *tmp, size_t tmplen)
{
if (id[0] == '?') {
if (s != NULL && *s >= '0' && *s <= '9') {
char *endptr;
long l = strtol(s, &endptr, 10);
id++;
if (fmt && *fmt >= '0' && *fmt <= '9') {
long l = strtol(fmt, NULL, 10);
if (l && tmplen > l)
tmplen = l;
s = endptr;
}
id++;
}
if (s == NULL) {
tmp[0] = '\0';
Expand All @@ -311,25 +309,25 @@ dvr_do_prefix(const char *id, const char *s, char *tmp, size_t tmplen)


static const char *
dvr_sub_title(const char *id, const void *aux, char *tmp, size_t tmplen)
dvr_sub_title(const char *id, const char *fmt, const void *aux, char *tmp, size_t tmplen)
{
return dvr_do_prefix(id, lang_str_get(((dvr_entry_t *)aux)->de_title, NULL), tmp, tmplen);
return dvr_do_prefix(id, fmt, lang_str_get(((dvr_entry_t *)aux)->de_title, NULL), tmp, tmplen);
}

static const char *
dvr_sub_subtitle(const char *id, const void *aux, char *tmp, size_t tmplen)
dvr_sub_subtitle(const char *id, const char *fmt, const void *aux, char *tmp, size_t tmplen)
{
return dvr_do_prefix(id, lang_str_get(((dvr_entry_t *)aux)->de_subtitle, NULL), tmp, tmplen);
return dvr_do_prefix(id, fmt, lang_str_get(((dvr_entry_t *)aux)->de_subtitle, NULL), tmp, tmplen);
}

static const char *
dvr_sub_description(const char *id, const void *aux, char *tmp, size_t tmplen)
dvr_sub_description(const char *id, const char *fmt, const void *aux, char *tmp, size_t tmplen)
{
return dvr_do_prefix(id, lang_str_get(((dvr_entry_t *)aux)->de_desc, NULL), tmp, tmplen);
return dvr_do_prefix(id, fmt, lang_str_get(((dvr_entry_t *)aux)->de_desc, NULL), tmp, tmplen);
}

static const char *
dvr_sub_episode(const char *id, const void *aux, char *tmp, size_t tmplen)
dvr_sub_episode(const char *id, const char *fmt, const void *aux, char *tmp, size_t tmplen)
{
const dvr_entry_t *de = aux;
char buf[64];
Expand All @@ -339,17 +337,17 @@ dvr_sub_episode(const char *id, const void *aux, char *tmp, size_t tmplen)
epg_episode_number_format(de->de_bcast->episode,
buf, sizeof(buf),
NULL, "S%02d", NULL, "E%02d", NULL);
return dvr_do_prefix(id, buf, tmp, tmplen);
return dvr_do_prefix(id, fmt, buf, tmp, tmplen);
}

static const char *
dvr_sub_channel(const char *id, const void *aux, char *tmp, size_t tmplen)
dvr_sub_channel(const char *id, const char *fmt, const void *aux, char *tmp, size_t tmplen)
{
return dvr_do_prefix(id, DVR_CH_NAME((dvr_entry_t *)aux), tmp, tmplen);
return dvr_do_prefix(id, fmt, DVR_CH_NAME((dvr_entry_t *)aux), tmp, tmplen);
}

static const char *
dvr_sub_genre(const char *id, const void *aux, char *tmp, size_t tmplen)
dvr_sub_genre(const char *id, const char *fmt, const void *aux, char *tmp, size_t tmplen)
{
const dvr_entry_t *de = aux;
epg_genre_t *genre;
Expand All @@ -361,57 +359,57 @@ dvr_sub_genre(const char *id, const void *aux, char *tmp, size_t tmplen)
if (!genre || !genre->code)
return "";
epg_genre_get_str(genre, 0, 1, buf, sizeof(buf), "en");
return dvr_do_prefix(id, buf, tmp, tmplen);
return dvr_do_prefix(id, fmt, buf, tmp, tmplen);
}

static const char *
dvr_sub_owner(const char *id, const void *aux, char *tmp, size_t tmplen)
dvr_sub_owner(const char *id, const char *fmt, const void *aux, char *tmp, size_t tmplen)
{
return dvr_do_prefix(id, ((dvr_entry_t *)aux)->de_owner, tmp, tmplen);
return dvr_do_prefix(id, fmt, ((dvr_entry_t *)aux)->de_owner, tmp, tmplen);
}

static const char *
dvr_sub_creator(const char *id, const void *aux, char *tmp, size_t tmplen)
dvr_sub_creator(const char *id, const char *fmt, const void *aux, char *tmp, size_t tmplen)
{
return dvr_do_prefix(id, ((dvr_entry_t *)aux)->de_creator, tmp, tmplen);
return dvr_do_prefix(id, fmt, ((dvr_entry_t *)aux)->de_creator, tmp, tmplen);
}

static const char *
dvr_sub_last_error(const char *id, const void *aux, char *tmp, size_t tmplen)
dvr_sub_last_error(const char *id, const char *fmt, const void *aux, char *tmp, size_t tmplen)
{
return dvr_do_prefix(id, streaming_code2txt(((dvr_entry_t *)aux)->de_last_error), tmp, tmplen);
return dvr_do_prefix(id, fmt, streaming_code2txt(((dvr_entry_t *)aux)->de_last_error), tmp, tmplen);
}

static const char *
dvr_sub_start(const char *id, const void *aux, char *tmp, size_t tmplen)
dvr_sub_start(const char *id, const char *fmt, const void *aux, char *tmp, size_t tmplen)
{
char buf[16];
snprintf(buf, sizeof(buf), "%"PRItime_t, (time_t)dvr_entry_get_start_time((dvr_entry_t *)aux, 0));
return dvr_do_prefix(id, buf, tmp, tmplen);
return dvr_do_prefix(id, fmt, buf, tmp, tmplen);
}

static const char *
dvr_sub_errors(const char *id, const void *aux, char *tmp, size_t tmplen)
dvr_sub_errors(const char *id, const char *fmt, const void *aux, char *tmp, size_t tmplen)
{
char buf[16];
snprintf(buf, sizeof(buf), "%"PRIu32, (uint32_t)((dvr_entry_t *)aux)->de_errors);
return dvr_do_prefix(id, buf, tmp, tmplen);
return dvr_do_prefix(id, fmt, buf, tmp, tmplen);
}

static const char *
dvr_sub_data_errors(const char *id, const void *aux, char *tmp, size_t tmplen)
dvr_sub_data_errors(const char *id, const char *fmt, const void *aux, char *tmp, size_t tmplen)
{
char buf[16];
snprintf(buf, sizeof(buf), "%"PRIu32, (uint32_t)((dvr_entry_t *)aux)->de_data_errors);
return dvr_do_prefix(id, buf, tmp, tmplen);
return dvr_do_prefix(id, fmt, buf, tmp, tmplen);
}

static const char *
dvr_sub_stop(const char *id, const void *aux, char *tmp, size_t tmplen)
dvr_sub_stop(const char *id, const char *fmt, const void *aux, char *tmp, size_t tmplen)
{
char buf[16];
snprintf(buf, sizeof(buf), "%"PRItime_t, (time_t)dvr_entry_get_stop_time((dvr_entry_t *)aux));
return dvr_do_prefix(id, buf, tmp, tmplen);
return dvr_do_prefix(id, fmt, buf, tmp, tmplen);
}

static htsstr_substitute_t dvr_subs_entry[] = {
Expand Down Expand Up @@ -454,7 +452,7 @@ static htsstr_substitute_t dvr_subs_entry[] = {
};

static const char *
dvr_sub_strftime(const char *id, const void *aux, char *tmp, size_t tmplen)
dvr_sub_strftime(const char *id, const char *fmt, const void *aux, char *tmp, size_t tmplen)
{
char fid[8], *p;
snprintf(fid, sizeof(fid), "%%%s", id);
Expand Down Expand Up @@ -531,13 +529,13 @@ static htsstr_substitute_t dvr_subs_time[] = {
};

static const char *
dvr_sub_str(const char *id, const void *aux, char *tmp, size_t tmplen)
dvr_sub_str(const char *id, const char *fmt, const void *aux, char *tmp, size_t tmplen)
{
return (const char *)aux;
}

static const char *
dvr_sub_str_separator(const char *id, const void *aux, char *tmp, size_t tmplen)
dvr_sub_str_separator(const char *id, const char *fmt, const void *aux, char *tmp, size_t tmplen)
{
strncpy(tmp, (const char *)aux, tmplen-1);
tmp[tmplen-1] = '\0';
Expand Down Expand Up @@ -571,7 +569,7 @@ static htsstr_substitute_t dvr_subs_postproc_entry[] = {
};

static const char *
dvr_sub_basename(const char *id, const void *aux, char *tmp, size_t tmplen)
dvr_sub_basename(const char *id, const char *fmt, const void *aux, char *tmp, size_t tmplen)
{
strncpy(tmp, (const char *)aux, tmplen);
tmp[tmplen-1] = '\0';
Expand All @@ -585,7 +583,7 @@ static htsstr_substitute_t dvr_subs_postproc_filename[] = {
};

static const char *
dvr_sub_basic_info(const char *id, const void *aux, char *tmp, size_t tmplen)
dvr_sub_basic_info(const char *id, const char *fmt, const void *aux, char *tmp, size_t tmplen)
{
htsmsg_t *info = (htsmsg_t *)aux, *e;
htsmsg_field_t *f;
Expand Down
4 changes: 2 additions & 2 deletions src/htsstr.c
Expand Up @@ -259,14 +259,14 @@ htsstr_substitute(const char *src, char *dst, size_t dstlen,
break;
}
if (*p == '\0') {
src = x;
if ((l = dstlen) > 0) {
v = s->getval(s->id, aux, tmp, tmplen);
v = s->getval(s->id, src, aux, tmp, tmplen);
strncpy(dst, v, l);
l = MIN(strlen(v), l);
dst += l;
dstlen -= l;
}
src = x;
break;
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/htsstr.h
Expand Up @@ -35,7 +35,7 @@ void htsstr_argsplit_free(char **argv);

typedef struct {
const char *id;
const char *(*getval)(const char *id, const void *aux, char *tmp, size_t tmplen);
const char *(*getval)(const char *id, const char *fmt, const void *aux, char *tmp, size_t tmplen);
} htsstr_substitute_t;

const char *
Expand Down
6 changes: 3 additions & 3 deletions src/input/mpegts/iptv/iptv.c
Expand Up @@ -264,23 +264,23 @@ iptv_sub_url_encode(iptv_mux_t *im, const char *s, char *tmp, size_t tmplen)
}

static const char *
iptv_sub_mux_name(const char *id, const void *aux, char *tmp, size_t tmplen)
iptv_sub_mux_name(const char *id, const char *fmt, const void *aux, char *tmp, size_t tmplen)
{
const mpegts_mux_instance_t *mmi = aux;
iptv_mux_t *im = (iptv_mux_t*)mmi->mmi_mux;
return iptv_sub_url_encode(im, im->mm_iptv_muxname, tmp, tmplen);
}

static const char *
iptv_sub_service_name(const char *id, const void *aux, char *tmp, size_t tmplen)
iptv_sub_service_name(const char *id, const char *fmt, const void *aux, char *tmp, size_t tmplen)
{
const mpegts_mux_instance_t *mmi = aux;
iptv_mux_t *im = (iptv_mux_t*)mmi->mmi_mux;
return iptv_sub_url_encode(im, im->mm_iptv_svcname, tmp, tmplen);
}

static const char *
iptv_sub_weight(const char *id, const void *aux, char *tmp, size_t tmplen)
iptv_sub_weight(const char *id, const char *fmt, const void *aux, char *tmp, size_t tmplen)
{
const mpegts_mux_instance_t *mmi = aux;
snprintf(tmp, tmplen, "%d", mmi->mmi_start_weight);
Expand Down

0 comments on commit f1c42d3

Please sign in to comment.