Esempio n. 1
0
GError *
metautils_message_extract_strint64(MESSAGE msg, const gchar *n, gint64 *i64)
{
	gchar *end, dst[24];

	EXTRA_ASSERT (i64 != NULL);
	*i64 = 0;

	memset(dst, 0, sizeof(dst));
	GError *err = metautils_message_extract_string(msg, n, dst, sizeof(dst));
	if (err != NULL) {
		g_prefix_error(&err, "field: ");
		return err;
	}

	end = NULL;
	*i64 = g_ascii_strtoll(dst, &end, 10);

	switch (*i64) {
		case G_MININT64:
		case G_MAXINT64:
			return (errno == ERANGE)
				? NEWERROR(CODE_BAD_REQUEST, "Invalid number") : NULL;
		case 0:
			return (end == dst)
				? NEWERROR(CODE_BAD_REQUEST, "Invalid number") : NULL;
		default:
			return NULL;
	}
}
Esempio n. 2
0
GError*
metautils_message_extract_boolean(MESSAGE msg, const gchar *n,
		gboolean mandatory, gboolean *v)
{
	gchar tmp[16];
	GError *err = metautils_message_extract_string(msg, n, tmp, sizeof(tmp));
	if (err) {
		if (!mandatory)
			g_clear_error(&err);
		return err;
	}
	if (v)
		*v = oio_str_parse_bool (tmp, *v);
	return NULL;
}