-/* Copyright (C) 2010, Martin Johansson <martin@fatbob.nu>
+/* Copyright (C) 2009-2010, Martin Johansson <martin@fatbob.nu>
Copyright (C) 2005-2010, Thorvald Natvig <thorvald@natvig.com>
All rights reserved.
#include <stdlib.h>
#include <string.h>
-#ifdef WRT_TARGET
-#include <libconfig/libconfig.h>
-#else
#include <libconfig.h>
-#endif
#include "types.h"
#include "conf.h"
return DEFAULT_WELCOME;
}
break;
- case DEAFULT_CHANNEL:
+ case DEFAULT_CHANNEL:
setting = config_lookup(&configuration, "default_channel");
if (!setting)
return "";
int Conf_getNextChannel(conf_channel_t *chdesc, int index)
{
config_setting_t *setting = NULL;
- char configstr[64];
+ int maxconfig = 64, ret = 0;
+ char configstr[maxconfig];
- sprintf(configstr, "channels.[%d].name", index);
+ ret = snprintf(configstr, maxconfig, "channels.[%d].name", index);
setting = config_lookup(&configuration, configstr);
- if (setting == NULL)
- return -1;
- strncpy(chdesc->name, config_setting_get_string(setting), MAX_TEXT);
+ if (ret >= maxconfig || ret < 0 || setting == NULL)
+ return -1; /* Required */
+ chdesc->name = config_setting_get_string(setting);
- sprintf(configstr, "channels.[%d].parent", index);
+ ret = snprintf(configstr, maxconfig, "channels.[%d].parent", index);
setting = config_lookup(&configuration, configstr);
- if (setting == NULL)
- return -1;
- strncpy(chdesc->parent, config_setting_get_string(setting), MAX_TEXT);
+ if (ret >= maxconfig || ret < 0 || setting == NULL)
+ return -1; /* Required */
+ chdesc->parent = config_setting_get_string(setting);
- sprintf(configstr, "channels.[%d].description", index);
+ ret = snprintf(configstr, maxconfig, "channels.[%d].description", index);
setting = config_lookup(&configuration, configstr);
- if (setting == NULL)
- return -1;
- strncpy(chdesc->description, config_setting_get_string(setting), MAX_TEXT);
+ if (ret >= maxconfig || ret < 0 || setting == NULL) /* Optional */
+ chdesc->description = NULL;
+ else
+ chdesc->description = config_setting_get_string(setting);
+
+ ret = snprintf(configstr, maxconfig, "channels.[%d].noenter", index);
+ setting = config_lookup(&configuration, configstr);
+ if (ret >= maxconfig || ret < 0 || setting == NULL) /* Optional */
+ chdesc->noenter = false;
+ else
+ chdesc->noenter = config_setting_get_bool(setting);
return 0;
}
int Conf_getNextChannelLink(conf_channel_link_t *chlink, int index)
{
config_setting_t *setting = NULL;
- char configstr[64];
+ int maxconfig = 64, ret = 0;
+ char configstr[maxconfig];
- sprintf(configstr, "channel_links.[%d].source", index);
+ ret = snprintf(configstr, maxconfig, "channel_links.[%d].source", index);
setting = config_lookup(&configuration, configstr);
- if (setting == NULL)
+ if (ret >= maxconfig || ret < 0 || setting == NULL)
return -1;
- strncpy(chlink->source, config_setting_get_string(setting), MAX_TEXT);
+ chlink->source = config_setting_get_string(setting);
- sprintf(configstr, "channel_links.[%d].destination", index);
+ ret = snprintf(configstr, maxconfig, "channel_links.[%d].destination", index);
setting = config_lookup(&configuration, configstr);
- if (setting == NULL)
+ if (ret >= maxconfig || ret < 0 || setting == NULL)
return -1;
- strncpy(chlink->destination, config_setting_get_string(setting), MAX_TEXT);
+ chlink->destination = config_setting_get_string(setting);
return 0;
}