c-scape 0.22.3

A libc bottom-half implementation in Rust
Documentation
use core::cell::SyncUnsafeCell;
use libc::{c_char, c_long};

#[no_mangle]
unsafe extern "C" fn a64l(str64: *const c_char) -> c_long {
    let str64 = str64.cast::<u8>();
    let mut x: u32 = 0;

    for i in 0..6 {
        let digit: u32 = match *str64.add(i) {
            b @ b'.'..=b'9' => b - b'.',
            b @ b'A'..=b'Z' => b - (b'A' - 12),
            b @ b'a'..=b'z' => b - (b'a' - 38),
            _ => break,
        }
        .into();
        x |= digit << (6 * i);
    }

    x as c_long
}

#[no_mangle]
unsafe extern "C" fn l64a(value: c_long) -> *mut c_char {
    static BUFFER: SyncUnsafeCell<[u8; 6 + 1]> = SyncUnsafeCell::new([0; 6 + 1]);
    let buffer = &mut *BUFFER.get();

    let mut value = value as u32;
    let mut i = 0;

    while value != 0 {
        buffer[i] = match (value & 63) as u8 {
            v @ 0..=11 => b'.' + v,
            v @ 12..=37 => b'A' - 12 + v,
            v @ 38..=63 => b'a' - 38 + v,
            _ => unreachable!(),
        };
        i += 1;
        value >>= 6;
    }
    buffer[i] = b'\0';

    buffer.as_mut_ptr().cast()
}