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; } }
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; }