static GSList * parse_list (const char *header, char delim) { GSList *list = NULL; const char *end; header = skip_delims (header, delim); while (*header) { end = skip_item (header, delim); list = g_slist_prepend (list, g_strndup (header, end - header)); header = skip_delims (end, delim); } return g_slist_reverse (list); }
/** * soup_header_contains: * @header: An HTTP header suitable for parsing with * soup_header_parse_list() * @token: a token * * Parses @header to see if it contains the token @token (matched * case-insensitively). Note that this can't be used with lists * that have qvalues. * * Return value: whether or not @header contains @token **/ gboolean soup_header_contains (const char *header, const char *token) { const char *end; guint len = strlen (token); g_return_val_if_fail (header != NULL, FALSE); g_return_val_if_fail (token != NULL, FALSE); header = skip_delims (header, ','); while (*header) { end = skip_item (header, ','); if (end - header == len && !g_ascii_strncasecmp (header, token, len)) return TRUE; header = skip_delims (end, ','); } return FALSE; }