Ejemplo n.º 1
0
int pusb_xpath_get_time(xmlDocPtr doc, const char *path, time_t *value)
{
	char	ret[64];
	char	*last;
	int		coef;

	if (!pusb_xpath_get_string(doc, path, ret, sizeof(ret)))
		return (0);

	last = &(ret[strlen(ret) - 1]);
	coef = 1;
	if (*last == 's')
		coef = 1;
	else if (*last == 'm')
		coef = 60;
	else if (*last == 'h')
		coef = 3600;
	else if (*last == 'd')
		coef = 3600 * 24;
	else
		if (!isdigit(*last))
		{
			log_debug("Expecting a time modifier, got %c\n", *last);
			return (0);
		}
	if (!isdigit(*last))
		*last = '\0';
	*value = atoi(ret) * coef;

	return (0);
}
Ejemplo n.º 2
0
int pusb_xpath_get_int(xmlDocPtr doc, const char *path, int *value)
{
	char	ret[64];

	if (!pusb_xpath_get_string(doc, path, ret, sizeof(ret)))
		return (0);
	*value = atoi(ret);
	return (1);
}
Ejemplo n.º 3
0
int pusb_xpath_get_string_from(xmlDocPtr doc,
		const char *base,
		const char *path,
		char *value, size_t size)
{
	char	*xpath = NULL;
	size_t	xpath_size;
	int		retval;

	xpath_size = strlen(base) + strlen(path) + 1;
	xpath = xmalloc(xpath_size);
	memset(xpath, 0x00, xpath_size);
	snprintf(xpath, xpath_size, "%s%s", base, path);
	retval = pusb_xpath_get_string(doc, xpath, value, size);
	if (retval)
		log_debug("%s%s -> %s\n", base, path, value);
	xfree(xpath);
	return (retval);
}
Ejemplo n.º 4
0
static int pusb_conf_device_get_property(t_pusb_device *dev,
		xmlDoc *doc,
		const char *property,
		char *store,
		size_t size)
{
	char		*xpath = NULL;
	size_t		xpath_len;
	int			retval;

    /* TODO: check dev->name */
	xpath_len = strlen(CONF_DEVICE_XPATH) + strlen(dev->name) + \
				strlen(property) + 1;
	xpath = xmalloc(xpath_len);
	memset(xpath, 0x00, xpath_len);
	snprintf(xpath, xpath_len, CONF_DEVICE_XPATH, dev->name,
			property);
	retval = pusb_xpath_get_string(doc, xpath, store, size);
	xfree(xpath);
	return (retval);
}
Ejemplo n.º 5
0
int pusb_xpath_get_bool(xmlDocPtr doc, const char *path, int *value)
{
	char	ret[6]; /* strlen("false") + 1 */

	if (!pusb_xpath_get_string(doc, path, ret, sizeof(ret)))
		return (0);

	if (!strcmp(ret, "true"))
	{
		*value = 1;
		return (1);
	}

	if (!strcmp(ret, "false"))
	{
		*value = 0;
		return (1);
	}

	log_debug("Expecting a boolean, got %s\n", ret);
	return (0);
}