Ulfius: include/u_private.h File Reference

Ulfius HTTP Framework for REST Applications in C

Macros | Functions
u_private.h File Reference
`#include <ulfius.h>`
Include dependency graph for u_private.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

## Macros
#define | UNUSED(x)

## Functions
struct _u_endpoint ** | ulfius_endpoint_match (const char *method, const char *url, struct _u_endpoint *endpoint_list)
int | ulfius_parse_url (const char *url, const struct _u_endpoint *endpoint, struct _u_map *map, int check_utf8)
int | ulfius_set_response_header (struct MHD_Response *response, const struct _u_map *response_map_header)
int | ulfius_set_response_cookie (struct MHD_Response *mhd_response, const struct _u_response *response)
const unsigned char * | utf8_check (const char *s_orig, size_t len)

## Macro Definition Documentation

## ◆ UNUSED

#define UNUSED | ( |  | x | ) |

Value:
(void)(x)

Ulfius Framework

REST framework library

u_private.h: private structures and functions declarations

Copyright 2015-2022 Nicolas Mora mail@.nosp@m.babe.nosp@m.loues.nosp@m.t.or.nosp@m.g

This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; version 2.1 of the License.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU GENERAL PUBLIC LICENSE for more details.

You should have received a copy of the GNU General Public License along with this library. If not, see http://www.gnu.org/licenses/. Macro to avoid compiler warning when some parameters are unused and that's ok

## Function Documentation

## ◆ ulfius_endpoint_match()

struct _u_endpoint ** ulfius_endpoint_match | ( | const char * | method,
|  | const char * | url,
|  | struct _u_endpoint * | endpoint_list )

For using Ulfius in embedded systems Thanks to Dirk Uhlemann ulfius_endpoint_match return the endpoint array matching the url called with the proper http method the returned array always has its last value to NULL return NULL on memory error

ulfius_endpoint_match return the endpoint array matching the url called with the proper http method the returned array always has its last value to NULL return NULL on memory error returned value must be free'd after use

## ◆ ulfius_parse_url()

int ulfius_parse_url | ( | const char * | url,
|  | const struct _u_endpoint * | endpoint,
|  | struct _u_map * | map,
|  | int | check_utf8 )

ulfius_parse_url fills map with the keys/values defined in the url that are described in the endpoint format url return U_OK on success

## ◆ ulfius_set_response_header()

int ulfius_set_response_header | ( | struct MHD_Response * | response,
|  | const struct _u_map * | response_map_header )

ulfius_set_response_header adds headers defined in the response_map_header to the response return the number of added headers, -1 on error

## ◆ ulfius_set_response_cookie()

int ulfius_set_response_cookie | ( | struct MHD_Response * | mhd_response,
|  | const struct _u_response * | response )

ulfius_set_response_cookie adds cookies defined in the response_map_cookie return the number of added headers, -1 on error

## ◆ utf8_check()

const unsigned char * utf8_check | ( | const char * | s_orig,
|  | size_t | len )

The utf8_check() function scans the string starting at s. It returns a pointer to the first byte of the first malformed or overlong UTF-8 sequence found, or NULL if the string contains only correct UTF-8. It also spots UTF-8 sequences that could cause trouble if converted to UTF-16, namely surrogate characters (U+D800..U+DFFF) and non-Unicode positions (U+FFFE..U+FFFF). This routine is very likely to find a malformed sequence if the input uses any other encoding than UTF-8. It therefore can be used as a very effective heuristic for distinguishing between UTF-8 and other encodings.

I wrote this code mainly as a specification of functionality; there are no doubt performance optimizations possible for certain CPUs.

Markus Kuhn http://www.cl.cam.ac.uk/~mgk25/ – 2005-03-30 Nicolas Mora mail@.nosp@m.babe.nosp@m.loues.nosp@m.t.or.nosp@m.g License: http://www.cl.cam.ac.uk/~mgk25/short-license.html