|
void * | ulfius_uri_logger (void *cls, const char *uri) |
|
void | mhd_redirect_log (void *arg, const char *fmt, va_list ap) |
|
void | mhd_request_completed (void *cls, struct MHD_Connection *connection, void **con_cls, enum MHD_RequestTerminationCode toe) |
|
int | ulfius_start_framework (struct _u_instance *u_instance) |
|
int | ulfius_start_secure_framework (struct _u_instance *u_instance, const char *key_pem, const char *cert_pem) |
|
int | ulfius_start_secure_ca_trust_framework (struct _u_instance *u_instance, const char *key_pem, const char *cert_pem, const char *root_ca_pem) |
|
int | ulfius_start_framework_with_mhd_options (struct _u_instance *u_instance, unsigned int mhd_flags, struct MHD_OptionItem *mhd_ops) |
|
int | ulfius_stop_framework (struct _u_instance *u_instance) |
|
int | ulfius_copy_endpoint (struct _u_endpoint *dest, const struct _u_endpoint *source) |
|
struct _u_endpoint * | ulfius_duplicate_endpoint_list (const struct _u_endpoint *endpoint_list) |
|
void | ulfius_clean_endpoint (struct _u_endpoint *endpoint) |
|
void | ulfius_clean_endpoint_list (struct _u_endpoint *endpoint_list) |
|
int | ulfius_add_endpoint (struct _u_instance *u_instance, const struct _u_endpoint *u_endpoint) |
|
int | ulfius_add_endpoint_list (struct _u_instance *u_instance, const struct _u_endpoint **u_endpoint_list) |
|
int | ulfius_remove_endpoint (struct _u_instance *u_instance, const struct _u_endpoint *u_endpoint) |
|
const struct _u_endpoint * | ulfius_empty_endpoint (void) |
|
int | ulfius_equals_endpoints (const struct _u_endpoint *endpoint1, const struct _u_endpoint *endpoint2) |
|
int | ulfius_add_endpoint_by_val (struct _u_instance *u_instance, const char *http_method, const char *url_prefix, const char *url_format, unsigned int priority, int(*callback_function)(const struct _u_request *request, struct _u_response *response, void *user_data), void *user_data) |
|
int | ulfius_remove_endpoint_by_val (struct _u_instance *u_instance, const char *http_method, const char *url_prefix, const char *url_format) |
|
int | ulfius_set_default_endpoint (struct _u_instance *u_instance, int(*callback_function)(const struct _u_request *request, struct _u_response *response, void *user_data), void *user_data) |
|
int | ulfius_set_upload_file_callback_function (struct _u_instance *u_instance, int(*file_upload_callback)(const struct _u_request *request, const char *key, const char *filename, const char *content_type, const char *transfer_encoding, const char *data, uint64_t off, size_t size, void *cls), void *cls) |
|
void | ulfius_clean_instance (struct _u_instance *u_instance) |
|
int | ulfius_init_instance (struct _u_instance *u_instance, unsigned int port, struct sockaddr_in *bind_address, const char *default_auth_realm) |
|
void | u_free (void *data) |
|
const unsigned char * | utf8_check (const char *s_orig, size_t len) |
|
char * | ulfius_url_encode (const char *str) |
|
char * | ulfius_url_decode (const char *str) |
|
int | ulfius_global_init (void) |
|
void | ulfius_global_close (void) |
|
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