{
if (a == NULL)
return "blue";
- if (a->aa_theme == NULL || a->aa_theme[0] == '\0') {
- if (config.theme_ui == NULL || config.theme_ui[0] == '\0')
+ if (tvh_str_default(a->aa_theme, NULL) == NULL) {
+ if (tvh_str_default(config.theme_ui, NULL) == NULL)
return "blue";
- return config.theme_ui;
+ return config.theme_ui;
}
return a->aa_theme;
}
{
access_t *a = access_alloc();
access_entry_t *ae;
- int nouser = username == NULL || username[0] == '\0';
+ int nouser = tvh_str_default(username, NULL) == NULL;
if (!access_noacl && access_ip_blocked(src))
return a;
const char *s;
int b = *(int *)p;
if (ch->ch_autoname != b) {
- if (b == 0 && (!ch->ch_name || *ch->ch_name == '\0')) {
+ if (b == 0 && tvh_str_default(ch->ch_name, NULL) == NULL) {
s = channel_get_name(ch);
free(ch->ch_name);
ch->ch_name = strdup(s);
uint32_t id, i, pick, prefer = config.prefer_picon ? 1 : 0;
char c;
- if (icon && *icon == '\0')
+ if (tvh_str_default(icon, NULL) == NULL)
icon = NULL;
/*
{
channel_tag_t *ct;
- if (name == NULL || *name == '\0')
+ if (tvh_str_default(name, NULL) == NULL)
return NULL;
TAILQ_FOREACH(ct, &channel_tags, ct_link)
#endif
}
htsmsg_destroy(config2);
- if (config.server_name == NULL || config.server_name[0] == '\0')
+ if (tvh_str_default(config.server_name, NULL) == NULL)
config.server_name = strdup("Tvheadend");
if (!config_scanfile_ok)
config_muxconfpath_notify(&config.idnode, NULL);
const char *config_get_server_name ( void )
{
- return config.server_name ?: "Tvheadend";
+ return tvh_str_default(config.server_name, "Tvheadend");
}
const char *config_get_language ( void )
{
- const char *s = config.language;
- if (s == NULL || *s == '\0')
- return "eng";
- return s;
+ return tvh_str_default(config.language, "eng");
}
const char *config_get_language_ui ( void )
{
- const char *s = config.language_ui;
- if (s == NULL || *s == '\0')
- return NULL;
- return s;
+ return tvh_str_default(config.language_ui, NULL);
}
{ return cfg->dvr_valid; }
static inline int dvr_config_is_default(dvr_config_t *cfg)
- { return cfg->dvr_config_name == NULL || cfg->dvr_config_name[0] == '\0'; }
+ { return tvh_str_default(cfg->dvr_config_name, NULL) == NULL; }
dvr_config_t *dvr_config_find_by_name(const char *name);
int save;
epg_brand_t *brand;
- if (v && *(char *)v == '\0')
- v = NULL;
+ v = tvh_str_default(v, NULL);
brand = v ? epg_brand_find_by_uri(v, NULL, 1, &save, NULL) : NULL;
if (brand && dae->dae_brand != brand) {
if (dae->dae_brand)
int save;
epg_season_t *season;
- if (v && *(char *)v == '\0')
- v = NULL;
+ v = tvh_str_default(v, NULL);
season = v ? epg_season_find_by_uri(v, NULL, 1, &save, NULL) : NULL;
if (season && dae->dae_season != season) {
if (dae->dae_season)
int save;
epg_serieslink_t *sl;
- if (v && *(char *)v == '\0')
- v = NULL;
+ v = tvh_str_default(v, NULL);
sl = v ? epg_serieslink_find_by_uri(v, NULL, 1, &save, NULL) : NULL;
if (sl && dae->dae_serieslink != sl) {
if (dae->dae_serieslink)
dvrdefaultconfig = cfg;
}
- if (name == NULL || *name == '\0')
+ if (tvh_str_default(name, NULL) == NULL)
return dvrdefaultconfig;
cfg = dvr_config_find_by_name(name);
if (cfg == NULL) {
- if (name && *name)
+ if (tvh_str_default(name, NULL))
tvhwarn(LS_DVR, "Configuration '%s' not found, using default", name);
cfg = dvrdefaultconfig;
} else if (!cfg->dvr_enabled) {
if (dvr_config_is_default(cfg) && dvr_config_is_valid(cfg))
return 0;
if (strcmp(cfg->dvr_config_name, v ?: "")) {
- if (dvr_config_is_valid(cfg) && (v == NULL || *(char *)v == '\0'))
+ if (dvr_config_is_valid(cfg) && tvh_str_default(v, NULL) == NULL)
return 0;
free(cfg->dvr_config_name);
cfg->dvr_config_name = strdup(v ?: "");
dvr_entry_t *de = (dvr_entry_t *)self;
const char *s;
s = lang_str_get(de->de_title, lang);
- if (s == NULL || s[0] == '\0') {
+ if (tvh_str_default(s, NULL) == NULL) {
s = lang ? lang_str_get(de->de_title, NULL) : NULL;
- if (s == NULL || s[0] == '\0') {
+ if (tvh_str_default(s, NULL) == NULL) {
s = lang ? lang_str_get(de->de_desc, lang) : NULL;
- if (s == NULL || s[0] == '\0')
+ if (tvh_str_default(s, NULL) == NULL)
s = lang_str_get(de->de_desc, NULL);
}
}
dvr_entry_t *de = (dvr_entry_t *)o;
const char *lang = idnode_lang(&de->de_id);
const char *s = "";
- if (v == NULL || *((char *)v) == '\0')
- v = "UnknownTitle";
+ v = tvh_str_default(v, "UnknownTitle");
if (de->de_title)
s = lang_str_get(de->de_title, lang);
if (strcmp(s, v)) {
dvr_entry_t *de = (dvr_entry_t *)o;
const char *lang = idnode_lang(o);
const char *s = "";
- if (v == NULL || *((char *)v) == '\0')
- v = "UnknownSubtitle";
+ v = tvh_str_default(v, "UnknownSubtitle");
if (de->de_subtitle)
s = lang_str_get(de->de_subtitle, lang);
if (strcmp(s, v)) {
return -1;
cfg = de->de_config;
- if (cfg->dvr_storage == NULL || *(cfg->dvr_storage) == '\0')
+ if (tvh_str_default(cfg->dvr_storage, NULL) == NULL)
return -1;
dir_dosubs = de->de_directory == NULL ||
filename[j = 0] = '\0';
while (1) {
dirsep = dvr_find_next_path_component(x);
- if (dirsep == NULL || *dirsep == '\0')
+ if (tvh_str_default(dirsep, NULL) == NULL)
break;
*(dirsep - 1) = '\0';
if (*x) {
{
epggrab_module_t *mod = (epggrab_module_t *)self;
const char *s1 = tvh_gettext_lang(lang, epggrab_module_type(mod));
- const char *s2 = mod->name;
- if (s2 == NULL || s2[0] == '\0')
- s2 = mod->id;
+ const char *s2 = tvh_str_default(mod->name, mod->id);
snprintf(prop_sbuf, PROP_SBUF_LEN, "%s: %s", s1, s2);
return prop_sbuf;
}
}
if(rc == HTTP_STATUS_UNAUTHORIZED) {
- const char *realm = config.realm;
- if (realm == NULL || realm[0] == '\0')
- realm = "tvheadend";
+ const char *realm = tvh_str_default(config.realm, "tvheadend");
if (config.digest) {
if (hc->hc_nonce == NULL)
hc->hc_nonce = http_get_nonce();
}
m = md5sum(all, 1);
- if (qop == NULL || *qop == '\0') {
+ if (tvh_str_default(qop, NULL) == NULL) {
snprintf(all, sizeof(all), "%s:%s", hc->hc_nonce, m);
goto set;
} else {
}
htsbuf_append_str(&q, s);
htsbuf_append(&q, " ", 1);
- if (path == NULL || path[0] == '\0')
+ if (tvh_str_default(path, NULL) == NULL)
path = "/";
htsbuf_append_str(&q, path);
if (query && query[0] != '\0') {
lock_assert(&hc->hc_mutex);
- if (u->scheme == NULL || u->scheme[0] == '\0' ||
- u->host == NULL || u->host[0] == '\0' ||
+ if (tvh_str_default(u->scheme, NULL) == NULL ||
+ tvh_str_default(u->host, NULL) == NULL ||
u->port < 0) {
tvherror(LS_HTTPC, "Invalid url '%s'", u->raw);
return -EINVAL;
} else if (strncmp(s, "Command=", 8) == 0) {
if (strcmp(s + 8, "EXIT") == 0)
break;
- if (u1.host == NULL || u1.host[0] == '\0') {
+ if (tvh_str_default(u1.host, NULL) == NULL) {
fprintf(stderr, "HTTPCTS: Define URL\n");
goto fatal;
}
mpegts_network_display_name
( mpegts_network_t *mn, char *buf, size_t len )
{
- strncpy(buf, mn->mn_network_name ?: "unknown", len);
+ strncpy(buf, tvh_str_default(mn->mn_network_name, "unknown"), len);
}
static htsmsg_t *
{
char buf[256];
int save = 0;
- if (mn->mn_network_name == NULL || mn->mn_network_name[0] == '\0') {
+ if (tvh_str_default(mn->mn_network_name, NULL) == NULL) {
if (name && name[0] && strcmp(name, mn->mn_network_name ?: "")) {
tvh_str_update(&mn->mn_network_name, name);
mn->mn_display_name(mn, buf, sizeof(buf));
#define MINMAX(a,mi,ma) MAX(mi, MIN(ma, a))
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
+static inline const char *tvh_str_default(const char *s, const char *dflt)
+{
+ return s && s[0] ? s : dflt;
+}
void tvh_str_set(char **strp, const char *src);
int tvh_str_update(char **strp, const char *src);
udp_get_ifindex( const char *ifname )
{
unsigned int r;
- if (ifname == NULL || *ifname == '\0')
+
+ if (tvh_str_default(ifname, NULL) == NULL)
return 0;
r = if_nametoindex(ifname);
{
struct ifreq ifreq;
- if (ifname == NULL || *ifname == '\0')
+ if (tvh_str_default(ifname, NULL) == NULL)
return -1;
memset(&ifreq, 0, sizeof(ifreq));