oakc 0.6.1

A portable programming language with a compact backend
Documentation
#[std]

fn strlen(str: &char) -> num {
    for (let i=0; str[i] != '\0'; i=i+1) {}
    return i
}

fn strcpy(dst: &char, src: &char) {
    for (let i=0; src[i] != '\0'; i=i+1) {
        dst[i] = src[i];
    }
    dst[i] = 0;
}

fn strcat(dst: &char, src: &char) {
    let offset = strlen(dst);
    for (let i=0; src[i] != '\0'; i=i+1) {
        dst[offset+i] = src[i];
    }
    dst[offset+i] = 0;
}


fn input(buffer: &char) -> void {
    let i = 0;
    for (let ch = get_char(); ch != '\n'; ch = get_char()) {
        buffer[i] = ch;
        i = i + 1;
    }
}

fn main() -> void {
    let size = 256;
    putstr("Enter some text: ");
    let s = alloc(size) as &char;
    input(s);
    strcat(s, " take a sad song, and make it better!");

    putstr("You said: \"");
    putstr(s);
    putcharln('"');

    free s: size;
}