Function encoding_c::encoding_for_label [] [src]

#[no_mangle]
pub unsafe extern "C" fn encoding_for_label(
    label: *const u8,
    label_len: usize
) -> *const Encoding

Implements the get an encoding algorithm.

If, after ASCII-lowercasing and removing leading and trailing whitespace, the argument matches a label defined in the Encoding Standard, const Encoding* representing the corresponding encoding is returned. If there is no match, NULL is returned.

The argument buffer can be in any ASCII-compatible encoding. It is not required to be UTF-8.

label must be non-NULL even if label_len is zero. When label_len is zero, it is OK for label to be something non-dereferencable, such as 0x1. This is required due to Rust's optimization for slices within Option.

Undefined behavior

UB ensues if label and label_len don't designate a valid memory block of if label is NULL.