commit 87e116b94bf3b81d125c25987848f9151984a0fa
parent 47f0f9e3dbc1c93b48c5b64434c4be0543aa25b2
Author: erai <erai@omiltem.net>
Date: Wed, 20 Nov 2024 23:06:10 -0500
add func in front of functions
Diffstat:
M | alloc.om | | | 6 | +++--- |
M | as.om | | | 128 | ++++++++++++++++++++++++++++++++++++++++---------------------------------------- |
M | bufio.om | | | 24 | ++++++++++++------------ |
M | cat.om | | | 4 | ++-- |
M | cc0.c | | | 3 | ++- |
M | cc1.om | | | 60 | ++++++++++++++++++++++++++++++------------------------------ |
M | chacha20.om | | | 8 | ++++---- |
M | cmp.om | | | 2 | +- |
M | cout.om | | | 22 | +++++++++++----------- |
M | cpio.om | | | 6 | +++--- |
M | decl.om | | | 6 | +++--- |
M | dump.om | | | 2 | +- |
M | echo.om | | | 2 | +- |
M | ed25519.om | | | 78 | +++++++++++++++++++++++++++++++++++++++--------------------------------------- |
M | genlex.om | | | 82 | ++++++++++++++++++++++++++++++++++++++++---------------------------------------- |
M | kernel.om | | | 366 | ++++++++++++++++++++++++++++++++++++++++---------------------------------------- |
M | lib.om | | | 54 | +++++++++++++++++++++++++++--------------------------- |
M | ls.om | | | 2 | +- |
M | mkdir.om | | | 2 | +- |
M | mv.om | | | 2 | +- |
M | node.om | | | 12 | ++++++------ |
M | parse2.om | | | 90 | ++++++++++++++++++++++++++++++++++++++++---------------------------------------- |
M | peg.om | | | 23 | ++++++++++++----------- |
M | peglib.om | | | 30 | +++++++++++++++--------------- |
M | poly1305.om | | | 16 | ++++++++-------- |
M | rm.om | | | 2 | +- |
M | sh.om | | | 38 | +++++++++++++++++++------------------- |
M | sha256.om | | | 20 | ++++++++++---------- |
M | sha512.om | | | 20 | ++++++++++---------- |
M | sshd.om | | | 174 | ++++++++++++++++++++++++++++++++++++++++---------------------------------------- |
M | syscall.om | | | 52 | ++++++++++++++++++++++++++-------------------------- |
M | type.om | | | 24 | ++++++++++++------------ |
M | vimfiles/syntax/omiltem.vim | | | 2 | +- |
M | xxd.om | | | 4 | ++-- |
34 files changed, 684 insertions(+), 682 deletions(-)
diff --git a/alloc.om b/alloc.om
@@ -8,11 +8,11 @@ struct alloc {
page: *page;
}
-setup_alloc(c: *alloc) {
+func setup_alloc(c: *alloc) {
c.page = 0 as *page;
}
-alloc(c: *alloc, size: int): *byte {
+func alloc(c: *alloc, size: int): *byte {
var page: *page;
var mret: int;
var ret: *byte;
@@ -61,5 +61,5 @@ alloc(c: *alloc, size: int): *byte {
return ret;
}
-free(a: *alloc, p: *byte): void {
+func free(a: *alloc, p: *byte): void {
}
diff --git a/as.om b/as.om
@@ -192,7 +192,7 @@ struct symbol {
name_offset: int;
}
-setup_assembler(a: *alloc): *assembler {
+func setup_assembler(a: *alloc): *assembler {
var c: *assembler;
c = alloc(a, sizeof(*c)) as *assembler;
c.a = a;
@@ -208,7 +208,7 @@ setup_assembler(a: *alloc): *assembler {
return c;
}
-add_section(c: *assembler, name: *byte, type: int) {
+func add_section(c: *assembler, name: *byte, type: int) {
var s: *section;
var n: *section;
var end: int;
@@ -245,7 +245,7 @@ add_section(c: *assembler, name: *byte, type: int) {
c.num_sections = c.num_sections + 1;
}
-find_section(c: *assembler, name: *byte): *section {
+func find_section(c: *assembler, name: *byte): *section {
var n: *section;
n = c.sections;
loop {
@@ -262,11 +262,11 @@ find_section(c: *assembler, name: *byte): *section {
return n;
}
-putchar(c: *assembler, ch: int) {
+func putchar(c: *assembler, ch: int) {
fputc(c.out, ch);
}
-open_output(c: *assembler, filename: *byte) {
+func open_output(c: *assembler, filename: *byte) {
var fd: int;
if (c.out) {
@@ -284,7 +284,7 @@ open_output(c: *assembler, filename: *byte) {
}
// Create a new label
-mklabel(c: *assembler): *label {
+func mklabel(c: *assembler): *label {
var l: *label;
l = alloc(c.a, sizeof(*l)) as *label;
@@ -297,7 +297,7 @@ mklabel(c: *assembler): *label {
}
// Reserve size in the output buffer
-reserve(c: *assembler, n: int) {
+func reserve(c: *assembler, n: int) {
var m: *byte;
var b: *chunk;
@@ -327,7 +327,7 @@ reserve(c: *assembler, n: int) {
}
// Add a single byte to the output
-emit(c: *assembler, x: int) {
+func emit(c: *assembler, x: int) {
reserve(c, 1);
c.text_end.buf[c.text_end.fill] = x as byte;
c.text_end.fill = c.text_end.fill + 1;
@@ -335,7 +335,7 @@ emit(c: *assembler, x: int) {
}
// Fix a single reference
-fixup(c: *assembler, here: *byte, delta: int) {
+func fixup(c: *assembler, here: *byte, delta: int) {
here[0] = delta as byte;
here[1] = (delta >> 8) as byte;
here[2] = (delta >> 16) as byte;
@@ -343,7 +343,7 @@ fixup(c: *assembler, here: *byte, delta: int) {
}
// Add an new fixup for the current position
-addfixup(c: *assembler, l: *label) {
+func addfixup(c: *assembler, l: *label) {
var f: *fixup;
var here: *byte;
@@ -367,7 +367,7 @@ addfixup(c: *assembler, l: *label) {
}
// Fix references to a label to the current position
-fixup_label(c: *assembler, l: *label) {
+func fixup_label(c: *assembler, l: *label) {
var f: *fixup;
if (l.fixed) {
@@ -387,7 +387,7 @@ fixup_label(c: *assembler, l: *label) {
}
}
-add_symbol(c: *assembler, name: *byte, l: *label) {
+func add_symbol(c: *assembler, name: *byte, l: *label) {
var s: *symbol;
s = alloc(c.a, sizeof(*s)) as *symbol;
@@ -399,28 +399,28 @@ add_symbol(c: *assembler, name: *byte, l: *label) {
c.symbols = s;
}
-emit_restorer(c: *assembler) {
+func emit_restorer(c: *assembler) {
as_modri(c, OP_MOVI, R_RAX, 15);
as_op(c, OP_SYSCALL);
}
-emit_ptr(c: *assembler, l: *label) {
+func emit_ptr(c: *assembler, l: *label) {
reserve(c, 16);
as_modrm(c, OP_LEA, R_RAX, R_RIP, 0, 0, 128);
addfixup(c, l);
as_opr(c, OP_PUSHR, R_RAX);
}
-emit_jmp(c: *assembler, l: *label) {
+func emit_jmp(c: *assembler, l: *label) {
as_jmp(c, OP_JMP, l);
}
-emit_num(c: *assembler, x: int) {
+func emit_num(c: *assembler, x: int) {
as_opri64(c, OP_MOVABS, R_RDX, x);
as_opr(c, OP_PUSHR, R_RDX);
}
-emit_blob(c: *assembler, s: *byte, n: int) {
+func emit_blob(c: *assembler, s: *byte, n: int) {
var a: *label;
var b: *label;
var i: int;
@@ -455,7 +455,7 @@ emit_blob(c: *assembler, s: *byte, n: int) {
emit_ptr(c, a);
}
-emit_str(c: *assembler, s: *byte) {
+func emit_str(c: *assembler, s: *byte) {
var a: *label;
var b: *label;
var i: int;
@@ -490,11 +490,11 @@ emit_str(c: *assembler, s: *byte) {
emit_ptr(c, a);
}
-emit_pop(c: *assembler, n: int) {
+func emit_pop(c: *assembler, n: int) {
as_modri(c, OP_ADDI, R_RSP, n << 3);
}
-emit_kstart(c: *assembler) {
+func emit_kstart(c: *assembler) {
var hang: *label;
var do_iret: *label;
var do_ret: *label;
@@ -660,7 +660,7 @@ emit_kstart(c: *assembler) {
as_opr(c, OP_PUSHR, R_RBP);
}
-emit_preamble(c: *assembler, n: int, pragma: int) {
+func emit_preamble(c: *assembler, n: int, pragma: int) {
var i: int;
if (pragma == 1) {
as_modrr(c, OP_XORRM, R_RBP, R_RBP);
@@ -686,7 +686,7 @@ emit_preamble(c: *assembler, n: int, pragma: int) {
}
}
-emit_store(c: *assembler, t: *type) {
+func emit_store(c: *assembler, t: *type) {
as_opr(c, OP_POPR, R_RDI);
as_opr(c, OP_POPR, R_RAX);
if (t.kind == TY_BYTE) {
@@ -699,7 +699,7 @@ emit_store(c: *assembler, t: *type) {
as_opr(c, OP_PUSHR, R_RAX);
}
-emit_load(c: *assembler, t: *type) {
+func emit_load(c: *assembler, t: *type) {
as_opr(c, OP_POPR, R_RDI);
if (t.kind == TY_BYTE) {
as_modrr(c, OP_XORRM, R_RAX, R_RAX);
@@ -712,70 +712,70 @@ emit_load(c: *assembler, t: *type) {
as_opr(c, OP_PUSHR, R_RAX);
}
-emit_jz(c: *assembler, l: *label) {
+func emit_jz(c: *assembler, l: *label) {
as_opr(c, OP_POPR, R_RAX);
as_modrr(c, OP_TESTRM, R_RAX, R_RAX);
as_jmp(c, OP_JCC + CC_E, l);
}
-emit_lea(c: *assembler, offset: int) {
+func emit_lea(c: *assembler, offset: int) {
as_modrm(c, OP_LEA, R_RAX, R_RBP, 0, 0, offset);
as_opr(c, OP_PUSHR, R_RAX);
}
-emit_and(c: *assembler) {
+func emit_and(c: *assembler) {
as_opr(c, OP_POPR, R_RAX);
as_opr(c, OP_POPR, R_RDX);
as_modrr(c, OP_ANDRM, R_RAX, R_RDX);
as_opr(c, OP_PUSHR, R_RAX);
}
-emit_or(c: *assembler) {
+func emit_or(c: *assembler) {
as_opr(c, OP_POPR, R_RAX);
as_opr(c, OP_POPR, R_RDX);
as_modrr(c, OP_ORRM, R_RAX, R_RDX);
as_opr(c, OP_PUSHR, R_RAX);
}
-emit_xor(c: *assembler) {
+func emit_xor(c: *assembler) {
as_opr(c, OP_POPR, R_RAX);
as_opr(c, OP_POPR, R_RDX);
as_modrr(c, OP_XORRM, R_RAX, R_RDX);
as_opr(c, OP_PUSHR, R_RAX);
}
-emit_add(c: *assembler) {
+func emit_add(c: *assembler) {
as_opr(c, OP_POPR, R_RAX);
as_opr(c, OP_POPR, R_RDX);
as_modrr(c, OP_ADDRM, R_RAX, R_RDX);
as_opr(c, OP_PUSHR, R_RAX);
}
-emit_ud(c: *assembler) {
+func emit_ud(c: *assembler) {
as_op(c, OP_UD2);
}
-emit_ret(c: *assembler) {
+func emit_ret(c: *assembler) {
as_opr(c, OP_POPR, R_RAX);
as_modrr(c, OP_MOVE, R_RSP, R_RBP);
as_opr(c, OP_POPR, R_RBP);
as_op(c, OP_RET);
}
-emit_call(c: *assembler, n: int) {
+func emit_call(c: *assembler, n: int) {
as_opr(c, OP_POPR, R_RAX);
as_modr(c, OP_ICALLM, R_RAX);
emit_pop(c, n);
as_opr(c, OP_PUSHR, R_RAX);
}
-emit_lcall(c: *assembler, l: *label, n: int) {
+func emit_lcall(c: *assembler, l: *label, n: int) {
as_jmp(c, OP_CALL, l);
emit_pop(c, n);
as_opr(c, OP_PUSHR, R_RAX);
}
-emit_gt(c: *assembler) {
+func emit_gt(c: *assembler) {
as_opr(c, OP_POPR, R_RDX);
as_opr(c, OP_POPR, R_RCX);
as_modrr(c, OP_XORRM, R_RAX, R_RAX);
@@ -784,7 +784,7 @@ emit_gt(c: *assembler) {
as_opr(c, OP_PUSHR, R_RAX);
}
-emit_lt(c: *assembler) {
+func emit_lt(c: *assembler) {
as_opr(c, OP_POPR, R_RDX);
as_opr(c, OP_POPR, R_RCX);
as_modrr(c, OP_XORRM, R_RAX, R_RAX);
@@ -793,7 +793,7 @@ emit_lt(c: *assembler) {
as_opr(c, OP_PUSHR, R_RAX);
}
-emit_ge(c: *assembler) {
+func emit_ge(c: *assembler) {
as_opr(c, OP_POPR, R_RDX);
as_opr(c, OP_POPR, R_RCX);
as_modrr(c, OP_XORRM, R_RAX, R_RAX);
@@ -802,7 +802,7 @@ emit_ge(c: *assembler) {
as_opr(c, OP_PUSHR, R_RAX);
}
-emit_le(c: *assembler) {
+func emit_le(c: *assembler) {
as_opr(c, OP_POPR, R_RDX);
as_opr(c, OP_POPR, R_RCX);
as_modrr(c, OP_XORRM, R_RAX, R_RAX);
@@ -811,7 +811,7 @@ emit_le(c: *assembler) {
as_opr(c, OP_PUSHR, R_RAX);
}
-emit_eq(c: *assembler) {
+func emit_eq(c: *assembler) {
as_opr(c, OP_POPR, R_RDX);
as_opr(c, OP_POPR, R_RCX);
as_modrr(c, OP_XORRM, R_RAX, R_RAX);
@@ -820,7 +820,7 @@ emit_eq(c: *assembler) {
as_opr(c, OP_PUSHR, R_RAX);
}
-emit_ne(c: *assembler) {
+func emit_ne(c: *assembler) {
as_opr(c, OP_POPR, R_RDX);
as_opr(c, OP_POPR, R_RCX);
as_modrr(c, OP_XORRM, R_RAX, R_RAX);
@@ -829,21 +829,21 @@ emit_ne(c: *assembler) {
as_opr(c, OP_PUSHR, R_RAX);
}
-emit_sub(c: *assembler) {
+func emit_sub(c: *assembler) {
as_opr(c, OP_POPR, R_RAX);
as_opr(c, OP_POPR, R_RDX);
as_modrr(c, OP_SUBRM, R_RAX, R_RDX);
as_opr(c, OP_PUSHR, R_RAX);
}
-emit_mul(c: *assembler) {
+func emit_mul(c: *assembler) {
as_opr(c, OP_POPR, R_RAX);
as_opr(c, OP_POPR, R_RCX);
as_modr(c, OP_IMULM, R_RCX);
as_opr(c, OP_PUSHR, R_RAX);
}
-emit_div(c: *assembler) {
+func emit_div(c: *assembler) {
as_opr(c, OP_POPR, R_RAX);
as_opr(c, OP_POPR, R_RCX);
as_modrr(c, OP_XORRM, R_RDX, R_RDX);
@@ -854,7 +854,7 @@ emit_div(c: *assembler) {
as_opr(c, OP_PUSHR, R_RAX);
}
-emit_mod(c: *assembler) {
+func emit_mod(c: *assembler) {
as_opr(c, OP_POPR, R_RAX);
as_opr(c, OP_POPR, R_RCX);
as_modrr(c, OP_XORRM, R_RDX, R_RDX);
@@ -865,33 +865,33 @@ emit_mod(c: *assembler) {
as_opr(c, OP_PUSHR, R_RDX);
}
-emit_lsh(c: *assembler) {
+func emit_lsh(c: *assembler) {
as_opr(c, OP_POPR, R_RAX);
as_opr(c, OP_POPR, R_RCX);
as_modr(c, OP_SHLM, R_RAX);
as_opr(c, OP_PUSHR, R_RAX);
}
-emit_rsh(c: *assembler) {
+func emit_rsh(c: *assembler) {
as_opr(c, OP_POPR, R_RAX);
as_opr(c, OP_POPR, R_RCX);
as_modr(c, OP_SHRM, R_RAX);
as_opr(c, OP_PUSHR, R_RAX);
}
-emit_not(c: *assembler) {
+func emit_not(c: *assembler) {
as_opr(c, OP_POPR, R_RAX);
as_modr(c, OP_NOTM, R_RAX);
as_opr(c, OP_PUSHR, R_RAX);
}
-emit_neg(c: *assembler) {
+func emit_neg(c: *assembler) {
as_opr(c, OP_POPR, R_RAX);
as_modr(c, OP_NEGM, R_RAX);
as_opr(c, OP_PUSHR, R_RAX);
}
-emit_syscall(c: *assembler) {
+func emit_syscall(c: *assembler) {
as_modrm(c, OP_LOAD, R_RAX, R_RBP, 0, 0, 16);
as_modrm(c, OP_LOAD, R_RDI, R_RBP, 0, 0, 24);
as_modrm(c, OP_LOAD, R_RSI, R_RBP, 0, 0, 32);
@@ -903,7 +903,7 @@ emit_syscall(c: *assembler) {
as_opr(c, OP_PUSHR, R_RAX);
}
-emit_align(c: *assembler, n: int, b: int) {
+func emit_align(c: *assembler, n: int, b: int) {
var pad: int;
pad = c.at & (n - 1);
@@ -923,7 +923,7 @@ emit_align(c: *assembler, n: int, b: int) {
}
}
-emit_strtab_str(c: *assembler, s: *byte): int {
+func emit_strtab_str(c: *assembler, s: *byte): int {
var i: int;
i = 0;
@@ -947,7 +947,7 @@ enum {
SHT_STRTAB = 3,
}
-emit_sections(c: *assembler): int {
+func emit_sections(c: *assembler): int {
var at: int;
var s: *section;
var y: *symbol;
@@ -1177,7 +1177,7 @@ emit_sections(c: *assembler): int {
return at;
}
-writeout(c: *assembler, start: *label, kstart: *label) {
+func writeout(c: *assembler, start: *label, kstart: *label) {
var b: *chunk;
var i: int;
var text_size: int;
@@ -1479,11 +1479,11 @@ writeout(c: *assembler, start: *label, kstart: *label) {
fflush(c.out);
}
-as_emit(a: *assembler, b: int) {
+func as_emit(a: *assembler, b: int) {
emit(a, b);
}
-as_rex(a: *assembler, op: int, r: int, i: int, b: int) {
+func as_rex(a: *assembler, op: int, r: int, i: int, b: int) {
var w: int;
if a.bits32 {
return;
@@ -1495,7 +1495,7 @@ as_rex(a: *assembler, op: int, r: int, i: int, b: int) {
as_emit(a, 0x40 + w + ((r >> 1) & 4) + ((i >> 2) & 2) + ((b >> 3) & 1));
}
-as_op(a: *assembler, op: int) {
+func as_op(a: *assembler, op: int) {
if op > 0xff {
as_emit(a, op >> 8);
as_emit(a, op);
@@ -1505,7 +1505,7 @@ as_op(a: *assembler, op: int) {
}
// op + r
-as_opr(a: *assembler, op: int, r: int) {
+func as_opr(a: *assembler, op: int, r: int) {
if r < 0 || r > 15 {
die("invalid reg");
}
@@ -1515,7 +1515,7 @@ as_opr(a: *assembler, op: int, r: int) {
as_op(a, op + (r & 7));
}
-as_opri64(a: *assembler, op: int, r: int, x: int) {
+func as_opri64(a: *assembler, op: int, r: int, x: int) {
if op != OP_MOVABS {
die("only movabs");
}
@@ -1531,7 +1531,7 @@ as_opri64(a: *assembler, op: int, r: int, x: int) {
}
// modrm
-as_modrr(a: *assembler, op: int, r: int, b: int) {
+func as_modrr(a: *assembler, op: int, r: int, b: int) {
if r < 0 || r > 15 || b < 0 || b > 15 {
die("invalid reg");
}
@@ -1541,12 +1541,12 @@ as_modrr(a: *assembler, op: int, r: int, b: int) {
}
// modrm /op
-as_modr(a: *assembler, op: int, b: int) {
+func as_modr(a: *assembler, op: int, b: int) {
as_modrr(a, op & 0xffff, op >> 16, b);
}
// modrm + disp
-as_modra(a: *assembler, op: int, r: int, d: int) {
+func as_modra(a: *assembler, op: int, r: int, d: int) {
as_rex(a, op, r, 0, 0);
as_op(a, op);
as_emit(a, ((r << 3) & 0x38) + R_RSP);
@@ -1558,7 +1558,7 @@ as_modra(a: *assembler, op: int, r: int, d: int) {
}
// modrm + sib + disp
-as_modrm(a: *assembler, op: int, r: int, b: int, i: int, s: int, d: int) {
+func as_modrm(a: *assembler, op: int, r: int, b: int, i: int, s: int, d: int) {
var sib: int;
var mod: int;
var rm: int;
@@ -1682,11 +1682,11 @@ as_modrm(a: *assembler, op: int, r: int, b: int, i: int, s: int, d: int) {
}
// modrm /op
-as_modm(a: *assembler, op: int, b: int, i: int, s: int, d: int) {
+func as_modm(a: *assembler, op: int, b: int, i: int, s: int, d: int) {
as_modrm(a, op & 0xffff, op >> 16, b, i, s, d);
}
-as_modri(a: *assembler, op: int, r: int, x: int) {
+func as_modri(a: *assembler, op: int, r: int, x: int) {
if x < -(1 << 31) || x >= (1 << 31) {
die("immediate too large");
}
@@ -1697,7 +1697,7 @@ as_modri(a: *assembler, op: int, r: int, x: int) {
as_emit(a, x >> 24);
}
-as_jmp(a: *assembler, op: int, l: *label) {
+func as_jmp(a: *assembler, op: int, l: *label) {
reserve(a, 16);
as_op(a, op);
as_emit(a, 0);
diff --git a/bufio.om b/bufio.om
@@ -8,7 +8,7 @@ struct file {
eof: int;
}
-fopen(fd: int, a: *alloc): *file {
+func fopen(fd: int, a: *alloc): *file {
var f: *file;
f = alloc(a, sizeof(*f)) as *file;
@@ -25,7 +25,7 @@ fopen(fd: int, a: *alloc): *file {
return f;
}
-fclose(f: *file): void {
+func fclose(f: *file): void {
fflush(f);
if (close(f.fd) != 0) {
@@ -37,7 +37,7 @@ fclose(f: *file): void {
free(f.a, f as *byte);
}
-fflush(f: *file): void {
+func fflush(f: *file): void {
var ret: int;
loop {
@@ -57,7 +57,7 @@ fflush(f: *file): void {
}
}
-ffill(f: *file): void {
+func ffill(f: *file): void {
var ret: int;
if (f.eof) {
@@ -86,7 +86,7 @@ ffill(f: *file): void {
f.w = f.w + ret;
}
-fputc(f: *file, ch: int): void {
+func fputc(f: *file, ch: int): void {
if (f.w == f.cap) {
fflush(f);
}
@@ -99,7 +99,7 @@ fputc(f: *file, ch: int): void {
}
}
-fgetc(f: *file): int {
+func fgetc(f: *file): int {
var ch: int;
if (f.r == f.w) {
@@ -117,7 +117,7 @@ fgetc(f: *file): int {
return ch;
}
-fgets(f: *file, buf: *byte, len: int): int {
+func fgets(f: *file, buf: *byte, len: int): int {
var i: int;
var c: int;
@@ -144,7 +144,7 @@ fgets(f: *file, buf: *byte, len: int): int {
}
}
-fputs(f: *file, s: *byte) {
+func fputs(f: *file, s: *byte) {
var i: int;
i = 0;
loop {
@@ -156,7 +156,7 @@ fputs(f: *file, s: *byte) {
}
}
-fputb(f: *file, s: *byte, n: int) {
+func fputb(f: *file, s: *byte, n: int) {
var i: int;
i = 0;
loop {
@@ -168,7 +168,7 @@ fputb(f: *file, s: *byte, n: int) {
}
}
-fputd(out: *file, n: int) {
+func fputd(out: *file, n: int) {
var a: int;
if (n < 0) {
@@ -187,7 +187,7 @@ fputd(out: *file, n: int) {
fputc(out, '0' + a);
}
-fseek(f: *file, off: int) {
+func fseek(f: *file, off: int) {
f.r = 0;
f.w = 0;
f.eof = 0;
@@ -196,7 +196,7 @@ fseek(f: *file, off: int) {
}
}
-freadall(f: *file, size: *int): *byte {
+func freadall(f: *file, size: *int): *byte {
var i: int;
var cap: int;
var ret: *byte;
diff --git a/cat.om b/cat.om
@@ -1,4 +1,4 @@
-docat(fd: int, buf: *byte) {
+func docat(fd: int, buf: *byte) {
var n: int;
var m: int;
var k: int;
@@ -28,7 +28,7 @@ docat(fd: int, buf: *byte) {
}
}
-main(argc: int, argv: **byte, envp: **byte) {
+func main(argc: int, argv: **byte, envp: **byte) {
var fd: int;
var i: int;
var a: alloc;
diff --git a/cc0.c b/cc0.c
@@ -9447,6 +9447,7 @@ void( my_translate)(struct my_peg_compiler* my_c,struct my_peg_node* my_n){
(my_v)=((my_v)->my_next);
}
(my_fputs)(((my_c)->my_out),((unsigned char *)"}\012\012"));
+ (my_fputs)(((my_c)->my_out),((unsigned char *)"func "));
(my_fputs)(((my_c)->my_out),((my_c)->my_prefix));
(my_fputs)(((my_c)->my_out),((unsigned char *)"tag_to_str(tag: int): *byte {\012"));
(my_v)=((my_n)->my_child);
@@ -9472,7 +9473,7 @@ void( my_translate)(struct my_peg_compiler* my_c,struct my_peg_node* my_n){
break;
}
if ((unsigned long)(((long)((my_v)->my_tag))==((long)(my_PEG_rule)))) {
- (my_fputs)(((my_c)->my_out),((unsigned char *)"\012peg_"));
+ (my_fputs)(((my_c)->my_out),((unsigned char *)"\012func peg_"));
(my_fputs)(((my_c)->my_out),((my_c)->my_prefix));
(my_fputb)(((my_c)->my_out),(((my_v)->my_child)->my_str),(((my_v)->my_child)->my_len));
(my_fputs)(((my_c)->my_out),((unsigned char *)"(c: *peg): int {\012"));
diff --git a/cc1.om b/cc1.om
@@ -28,7 +28,7 @@ struct compiler {
used_top: *decl;
}
-cshow_context(c: *compiler) {
+func cshow_context(c: *compiler) {
fdputs(2, "on ");
if (c.filename) {
fdputs(2, c.filename);
@@ -40,7 +40,7 @@ cshow_context(c: *compiler) {
fdputs(2, "\n");
}
-cdie(c: *compiler, msg: *byte) {
+func cdie(c: *compiler, msg: *byte) {
cshow_context(c);
fdputs(2, "cdie: ");
fdputs(2, msg);
@@ -48,7 +48,7 @@ cdie(c: *compiler, msg: *byte) {
exit(1);
}
-comp_setup(a: *alloc): *compiler {
+func comp_setup(a: *alloc): *compiler {
var c: *compiler;
c = alloc(a, sizeof(*c)) as *compiler;
@@ -76,7 +76,7 @@ comp_setup(a: *alloc): *compiler {
return c;
}
-open_coutput(c: *compiler, filename: *byte) {
+func open_coutput(c: *compiler, filename: *byte) {
var fd: int;
if (c.cout) {
@@ -93,11 +93,11 @@ open_coutput(c: *compiler, filename: *byte) {
c.cout = fopen(fd, c.a);
}
-flush_coutput(c: *compiler) {
+func flush_coutput(c: *compiler) {
fflush(c.cout);
}
-compile(c: *compiler, p: *node) {
+func compile(c: *compiler, p: *node) {
var n: *node;
var d: *decl;
var kind: int;
@@ -198,7 +198,7 @@ compile(c: *compiler, p: *node) {
}
}
-mark_func_used(c: *compiler, d: *decl) {
+func mark_func_used(c: *compiler, d: *decl) {
if d.func_used {
return;
}
@@ -208,7 +208,7 @@ mark_func_used(c: *compiler, d: *decl) {
c.used_top = d;
}
-mark_expr_used(c: *compiler, d: *decl, n: *node) {
+func mark_expr_used(c: *compiler, d: *decl, n: *node) {
var v: *decl;
var kind: int;
@@ -273,7 +273,7 @@ mark_expr_used(c: *compiler, d: *decl, n: *node) {
}
}
-mark_stmt_used(c: *compiler, d: *decl, n: *node) {
+func mark_stmt_used(c: *compiler, d: *decl, n: *node) {
var kind: int;
if !n {
@@ -323,7 +323,7 @@ mark_stmt_used(c: *compiler, d: *decl, n: *node) {
}
}
-check_usage(c: *compiler) {
+func check_usage(c: *compiler) {
var d: *decl;
loop {
@@ -339,7 +339,7 @@ check_usage(c: *compiler) {
}
}
-defextern(c: *compiler, n: *node): *decl {
+func defextern(c: *compiler, n: *node): *decl {
var d: *decl;
var name: *byte;
var t: *type;
@@ -365,7 +365,7 @@ defextern(c: *compiler, n: *node): *decl {
return d;
}
-defun(c: *compiler, n: *node) {
+func defun(c: *compiler, n: *node) {
var d: *decl;
var name: *byte;
var v: *decl;
@@ -411,7 +411,7 @@ defun(c: *compiler, n: *node) {
d.func_preamble = offset;
}
-defstruct(c: *compiler, n: *node) {
+func defstruct(c: *compiler, n: *node) {
var name: *byte;
var d: *decl;
@@ -435,7 +435,7 @@ defstruct(c: *compiler, n: *node) {
d.struct_def = n;
}
-defunion(c: *compiler, n: *node) {
+func defunion(c: *compiler, n: *node) {
var name: *byte;
var d: *decl;
@@ -459,7 +459,7 @@ defunion(c: *compiler, n: *node) {
d.struct_def = n;
}
-defenum(c: *compiler, n: *node) {
+func defenum(c: *compiler, n: *node) {
var d: *decl;
var i: int;
var name: *byte;
@@ -495,7 +495,7 @@ defenum(c: *compiler, n: *node) {
}
}
-layout_struct(c: *compiler, d: *decl) {
+func layout_struct(c: *compiler, d: *decl) {
var m: *node;
var offset: int;
var name: *byte;
@@ -547,7 +547,7 @@ layout_struct(c: *compiler, d: *decl) {
d.struct_layout_done = 1;
}
-layout_union(c: *compiler, d: *decl) {
+func layout_union(c: *compiler, d: *decl) {
var m: *node;
var size: int;
var member_size: int;
@@ -603,7 +603,7 @@ layout_union(c: *compiler, d: *decl) {
d.struct_layout_done = 1;
}
-compile_func(c: *compiler, d: *decl) {
+func compile_func(c: *compiler, d: *decl) {
var pragma: int;
if (!d.func_def) {
@@ -632,7 +632,7 @@ compile_func(c: *compiler, d: *decl) {
emit_ret(c.s);
}
-typecheck_expr(c: *compiler, d: *decl, n: *node, rhs: int) {
+func typecheck_expr(c: *compiler, d: *decl, n: *node, rhs: int) {
var v: *decl;
var kind: int;
@@ -1149,7 +1149,7 @@ typecheck_expr(c: *compiler, d: *decl, n: *node, rhs: int) {
}
}
-typecheck_stmt(c: *compiler, d: *decl, n: *node) {
+func typecheck_stmt(c: *compiler, d: *decl, n: *node) {
var v: *decl;
var kind: int;
@@ -1214,7 +1214,7 @@ typecheck_stmt(c: *compiler, d: *decl, n: *node) {
}
}
-typecheck_func(c: *compiler, d: *decl) {
+func typecheck_func(c: *compiler, d: *decl) {
if (!d.func_def) {
return;
}
@@ -1222,7 +1222,7 @@ typecheck_func(c: *compiler, d: *decl) {
typecheck_stmt(c, d, d.func_def.b);
}
-hoist_locals(c: *compiler, d: *decl, n: *node, offset: int): int {
+func hoist_locals(c: *compiler, d: *decl, n: *node, offset: int): int {
var kind: int;
var name: *byte;
var t: *type;
@@ -1290,7 +1290,7 @@ hoist_locals(c: *compiler, d: *decl, n: *node, offset: int): int {
return offset;
}
-compile_include(c: *compiler, n: *node) {
+func compile_include(c: *compiler, n: *node) {
var filename: *byte;
var fd: int;
var blob: *byte;
@@ -1321,7 +1321,7 @@ compile_include(c: *compiler, n: *node) {
}
// Translate an expression
-compile_expr(c: *compiler, d: *decl, n: *node, rhs: int) {
+func compile_expr(c: *compiler, d: *decl, n: *node, rhs: int) {
var no: *label;
var out: *label;
var v: *decl;
@@ -1586,7 +1586,7 @@ compile_expr(c: *compiler, d: *decl, n: *node, rhs: int) {
}
}
-call_check(c: *compiler, n: *node): int {
+func call_check(c: *compiler, n: *node): int {
var result: int;
var ret: int;
@@ -1646,7 +1646,7 @@ call_check(c: *compiler, n: *node): int {
}
// Compile a statement
-compile_stmt(c: *compiler, d: *decl, n: *node, top: *label, out: *label) {
+func compile_stmt(c: *compiler, d: *decl, n: *node, top: *label, out: *label) {
var no: *label;
var ifout: *label;
var v: *decl;
@@ -1739,7 +1739,7 @@ compile_stmt(c: *compiler, d: *decl, n: *node, top: *label, out: *label) {
}
}
-emit_ssr(c: *compiler) {
+func emit_ssr(c: *compiler) {
var d: *decl;
var v: *decl;
@@ -1843,7 +1843,7 @@ emit_ssr(c: *compiler) {
as_op(c.s, OP_SYSRET);
}
-emit_isr(c: *compiler) {
+func emit_isr(c: *compiler) {
var d: *decl;
var out: *label;
var i: int;
@@ -1972,7 +1972,7 @@ emit_isr(c: *compiler) {
as_op(c.s, OP_IRETQ);
}
-emit_builtin(c: *compiler) {
+func emit_builtin(c: *compiler) {
var d: *decl;
d = find(c, "syscall", 0 as *byte, 1);
@@ -2575,7 +2575,7 @@ struct name_node {
name: *byte;
}
-main(argc: int, argv: **byte, envp: **byte) {
+func main(argc: int, argv: **byte, envp: **byte) {
var a: alloc;
var c: *compiler;
var p: *node;
diff --git a/chacha20.om b/chacha20.om
@@ -19,11 +19,11 @@ struct _chacha20_state {
s15: int;
}
-rol32(x: int, n: int): int {
+func rol32(x: int, n: int): int {
return ((x << n) | (x >> (32 - n))) & (-1 >> 32);
}
-chacha20_qround(a: *int, b: *int, c: *int, d: *int) {
+func chacha20_qround(a: *int, b: *int, c: *int, d: *int) {
*a = (*a + *b) & (-1 >> 32);
*d = (*d ^ *a) & (-1 >> 32);
*d = rol32(*d, 16);
@@ -41,7 +41,7 @@ chacha20_qround(a: *int, b: *int, c: *int, d: *int) {
*b = rol32(*b, 7);
}
-chacha20_block(block: *byte, key: *byte, counter: int, nonce: *byte) {
+func chacha20_block(block: *byte, key: *byte, counter: int, nonce: *byte) {
var _initial: _chacha20_state;
var initial: *int;
var _s: _chacha20_state;
@@ -151,7 +151,7 @@ chacha20_block(block: *byte, key: *byte, counter: int, nonce: *byte) {
}
}
-chacha20_stream(cipher: *byte, plain: *byte, len: int, index: *int, key: *byte, nonce: *byte) {
+func chacha20_stream(cipher: *byte, plain: *byte, len: int, index: *int, key: *byte, nonce: *byte) {
var _block: _chacha20_state;
var block: *byte;
var i: int;
diff --git a/cmp.om b/cmp.om
@@ -1,4 +1,4 @@
-main(argc: int, argv: **byte, envp: **byte) {
+func main(argc: int, argv: **byte, envp: **byte) {
var a: int;
var b: int;
var alloc: alloc;
diff --git a/cout.om b/cout.om
@@ -1,4 +1,4 @@
-ctranslate(c: *compiler) {
+func ctranslate(c: *compiler) {
var d: *decl;
var seen: int;
var has_enum: int;
@@ -109,7 +109,7 @@ ctranslate(c: *compiler) {
// type <- ('void' / 'unsigned' ('long' / 'char')) declarator
// declarator <- [*]* (ident / '(' declarator ')' '(' type (',' type)* ')')?
-ctranslate_type1(c: *compiler, ty: *type, name: *byte, decl: int) {
+func ctranslate_type1(c: *compiler, ty: *type, name: *byte, decl: int) {
if ty.kind == TY_VOID {
fputs(c.cout, "void");
} else if ty.kind == TY_INT {
@@ -136,7 +136,7 @@ ctranslate_type1(c: *compiler, ty: *type, name: *byte, decl: int) {
}
}
-ctranslate_type2(c: *compiler, ty: *type, name: *byte, args: *node) {
+func ctranslate_type2(c: *compiler, ty: *type, name: *byte, args: *node) {
var arg: *type;
if ty.kind == TY_PTR {
ctranslate_type2(c, ty.val, name, args);
@@ -174,12 +174,12 @@ ctranslate_type2(c: *compiler, ty: *type, name: *byte, args: *node) {
}
}
-ctranslate_type(c: *compiler, ty: *type, name: *byte, decl: int, args: *node) {
+func ctranslate_type(c: *compiler, ty: *type, name: *byte, decl: int, args: *node) {
ctranslate_type1(c, ty, name, decl);
ctranslate_type2(c, ty, name, args);
}
-ctranslate_zero(c: *compiler, ty: *type) {
+func ctranslate_zero(c: *compiler, ty: *type) {
var n: *node;
var v: *decl;
var arg: *type;
@@ -222,7 +222,7 @@ ctranslate_zero(c: *compiler, ty: *type) {
}
}
-ctranslate_struct(c: *compiler, d: *decl) {
+func ctranslate_struct(c: *compiler, d: *decl) {
var v: *decl;
var n: *node;
if d.struct_def.kind == N_UNION {
@@ -249,7 +249,7 @@ ctranslate_struct(c: *compiler, d: *decl) {
fputs(c.cout, "};\n");
}
-ctranslate_vars(c: *compiler, n: *node) {
+func ctranslate_vars(c: *compiler, n: *node) {
var kind: int;
var child: *node;
@@ -285,7 +285,7 @@ ctranslate_vars(c: *compiler, n: *node) {
}
}
-ctranslate_str(c: *compiler, s: *byte) {
+func ctranslate_str(c: *compiler, s: *byte) {
var i: int;
var ch: int;
i = 0;
@@ -311,7 +311,7 @@ ctranslate_str(c: *compiler, s: *byte) {
fputs(c.cout, "\"");
}
-ctranslate_expr(c: *compiler, n: *node) {
+func ctranslate_expr(c: *compiler, n: *node) {
if n.kind == N_STR {
ctranslate_str(c, n.s);
} else if n.kind == N_NUM {
@@ -532,7 +532,7 @@ ctranslate_expr(c: *compiler, n: *node) {
}
}
-ctranslate_stmt(c: *compiler, n: *node) {
+func ctranslate_stmt(c: *compiler, n: *node) {
var kind: int;
var child: *node;
@@ -611,7 +611,7 @@ ctranslate_stmt(c: *compiler, n: *node) {
}
}
-ctranslate_func(c: *compiler, d: *decl) {
+func ctranslate_func(c: *compiler, d: *decl) {
var n: *node;
var ty: *type;
if d.func_def {
diff --git a/cpio.om b/cpio.om
@@ -19,7 +19,7 @@ struct stat {
pad2: int;
}
-main(argc: int, argv: **byte, envp: **byte) {
+func main(argc: int, argv: **byte, envp: **byte) {
var opts: int;
var i: int;
var a: alloc;
@@ -178,7 +178,7 @@ main(argc: int, argv: **byte, envp: **byte) {
fflush(stdout);
}
-fputh(f: *file, x: int) {
+func fputh(f: *file, x: int) {
var i: int;
if x > (-1 >> 32) {
@@ -198,7 +198,7 @@ fputh(f: *file, x: int) {
}
}
-falign(f: *file, n: int) {
+func falign(f: *file, n: int) {
var len: int;
len = (4 - (n & 3)) & 3;
loop {
diff --git a/decl.om b/decl.om
@@ -38,7 +38,7 @@ struct decl {
goto_label: *label;
}
-find(c: *compiler, name: *byte, member_name: *byte, make: int): *decl {
+func find(c: *compiler, name: *byte, member_name: *byte, make: int): *decl {
var p: *decl;
var d: *decl;
var link: **decl;
@@ -127,7 +127,7 @@ find(c: *compiler, name: *byte, member_name: *byte, make: int): *decl {
}
// Find the first declaration
-first_decl(c: *compiler): *decl {
+func first_decl(c: *compiler): *decl {
var d: *decl;
d = c.decls;
@@ -144,7 +144,7 @@ first_decl(c: *compiler): *decl {
}
}
-next_decl(c: *compiler, d: *decl): *decl {
+func next_decl(c: *compiler, d: *decl): *decl {
if (!d) {
return 0 as *decl;
}
diff --git a/dump.om b/dump.om
@@ -1,4 +1,4 @@
-main(argc: int, argv: **byte, envp: **byte) {
+func main(argc: int, argv: **byte, envp: **byte) {
var fd: int;
var f: *file;
var out: *file;
diff --git a/echo.om b/echo.om
@@ -1,4 +1,4 @@
-main(argc: int, argv: **byte, envp: **byte) {
+func main(argc: int, argv: **byte, envp: **byte) {
var i: int;
i = 1;
loop {
diff --git a/ed25519.om b/ed25519.om
@@ -120,7 +120,7 @@ struct _ed25519_sig {
x7: int;
}
-ed25519_reduce(r: *int) {
+func ed25519_reduce(r: *int) {
var c: int;
var k: int;
@@ -145,7 +145,7 @@ ed25519_reduce(r: *int) {
c = c + r[7] + ((1 << 31) & k); r[7] = c & (-1 >> 32); c = c >> 32;
}
-ed25519_add(r: *int, a: *int, b: *int) {
+func ed25519_add(r: *int, a: *int, b: *int) {
var c: int;
c = a[0] + b[0]; r[0] = c & (-1 >> 32); c = c >> 32;
@@ -160,7 +160,7 @@ ed25519_add(r: *int, a: *int, b: *int) {
ed25519_reduce(r);
}
-ed25519_sub(r: *int, a: *int, b: *int) {
+func ed25519_sub(r: *int, a: *int, b: *int) {
var c: int;
c = 1 + a[0] + (-19 & (-1 >> 32)) + (b[0] ^ (-1 >> 32)); r[0] = c & (-1 >> 32); c = c >> 32;
@@ -175,7 +175,7 @@ ed25519_sub(r: *int, a: *int, b: *int) {
ed25519_reduce(r);
}
-ed25519_mul(r: *int, a: *int, b: *int) {
+func ed25519_mul(r: *int, a: *int, b: *int) {
var _x: _ed25519_point;
var x: *int;
var c: int;
@@ -251,7 +251,7 @@ ed25519_mul(r: *int, a: *int, b: *int) {
r[7] = x[7];
}
-ed25519_inv(r: *int, a: *int) {
+func ed25519_inv(r: *int, a: *int) {
var _x: _ed25519_point;
var x: *int;
var i: int;
@@ -280,7 +280,7 @@ ed25519_inv(r: *int, a: *int) {
}
}
-ed25519_selectl(r: *int, a: *int, b: *int, k: int) {
+func ed25519_selectl(r: *int, a: *int, b: *int, k: int) {
k = -(k & 1);
r[0] = (a[0] & ~k) | (b[0] & k);
r[1] = (a[1] & ~k) | (b[1] & k);
@@ -292,7 +292,7 @@ ed25519_selectl(r: *int, a: *int, b: *int, k: int) {
r[7] = (a[7] & ~k) | (b[7] & k);
}
-ed25519_zero(r: *int) {
+func ed25519_zero(r: *int) {
r[0] = 0;
r[1] = 0;
r[2] = 0;
@@ -303,7 +303,7 @@ ed25519_zero(r: *int) {
r[7] = 0;
}
-ed25519_one(r: *int) {
+func ed25519_one(r: *int) {
r[0] = 1;
r[1] = 0;
r[2] = 0;
@@ -314,7 +314,7 @@ ed25519_one(r: *int) {
r[7] = 0;
}
-ed25519_d(d: *int) {
+func ed25519_d(d: *int) {
d[7] = 0x52036cee;
d[6] = 0x2b6ffe73;
d[5] = 0x8cc74079;
@@ -325,7 +325,7 @@ ed25519_d(d: *int) {
d[0] = 0x135978a3;
}
-ed25519_a(a: *int) {
+func ed25519_a(a: *int) {
a[7] = 0;
a[6] = 0;
a[5] = 0;
@@ -339,7 +339,7 @@ ed25519_a(a: *int) {
//// x1 * y2 + x2 * y1 y1 * y2 - a * x1 * x2
//// x3 = ---------------------------, y3 = ---------------------------
//// 1 + d * x1 * x2 * y1 * y2 1 - d * x1 * x2 * y1 * y2
-ed25519_pa(r: *int, a: *int, b: * int) {
+func ed25519_pa(r: *int, a: *int, b: * int) {
var _y1y2: _ed25519_limb;
var y1y2: *int;
var _x1x2: _ed25519_limb;
@@ -392,7 +392,7 @@ ed25519_pa(r: *int, a: *int, b: * int) {
ed25519_mul(&r[8], &r[8], dxy2);
}
-ed25519_pk(r: *int, a: *int, k: *int) {
+func ed25519_pk(r: *int, a: *int, k: *int) {
var _b: _ed25519_point;
var b: *int;
var _c: _ed25519_point;
@@ -446,7 +446,7 @@ ed25519_pk(r: *int, a: *int, k: *int) {
}
}
-ed25519_base(p: *int) {
+func ed25519_base(p: *int) {
p[7] = 0x216936d3;
p[6] = 0xcd6e53fe;
p[5] = 0xc0a4e231;
@@ -466,7 +466,7 @@ ed25519_base(p: *int) {
}
// 2**((p-1)//4)
-ed25519_sqrtz(z: *int) {
+func ed25519_sqrtz(z: *int) {
z[7] = 0x2b832480;
z[6] = 0x4fc1df0b;
z[5] = 0x2b4d0099;
@@ -478,7 +478,7 @@ ed25519_sqrtz(z: *int) {
}
// sqrt(x) = x**((p+3)/8) * [1 or 2**((p-1)/4)]
-ed25519_sqrt(r: *int, x: *int): int {
+func ed25519_sqrt(r: *int, x: *int): int {
var _a: _ed25519_limb;
var _z: _ed25519_limb;
var a: *int;
@@ -532,7 +532,7 @@ ed25519_sqrt(r: *int, x: *int): int {
}
// x**2 = (y**2 - 1) / (1 + d * y**2) mod p
-ed25519_decode(p: *int, y: *byte): int {
+func ed25519_decode(p: *int, y: *byte): int {
var _xy: _ed25519_point;
var xy: *int;
var _a: _ed25519_limb;
@@ -588,7 +588,7 @@ ed25519_decode(p: *int, y: *byte): int {
return 1;
}
-ed25519_encode(dest: *byte, p: *int) {
+func ed25519_encode(dest: *byte, p: *int) {
dest[0] = p[8] as byte;
dest[1] = (p[8] >> 8) as byte;
dest[2] = (p[8] >> 16) as byte;
@@ -623,7 +623,7 @@ ed25519_encode(dest: *byte, p: *int) {
dest[31] = (p[15] >> 24) as byte | ((p[0] & 1) << 7) as byte;
}
-ed25519_pub(pub: *byte, b: *byte) {
+func ed25519_pub(pub: *byte, b: *byte) {
var _h: _sha512_digest;
var h: *byte;
var _a: _ed25519_point;
@@ -649,7 +649,7 @@ ed25519_pub(pub: *byte, b: *byte) {
ed25519_encode(pub, a);
}
-ed25519_sign(sig: *byte, b: *byte, msg: *byte, len: int) {
+func ed25519_sign(sig: *byte, b: *byte, msg: *byte, len: int) {
var _h: _sha512_digest;
var h: *byte;
var _hr: _sha512_digest;
@@ -716,7 +716,7 @@ ed25519_sign(sig: *byte, b: *byte, msg: *byte, len: int) {
ed25519_encode_l(&sig[32], s);
}
-ed25519_l(l: *int) {
+func ed25519_l(l: *int) {
l[7] = 0x10000000;
l[6] = 0x00000000;
l[5] = 0x00000000;
@@ -727,7 +727,7 @@ ed25519_l(l: *int) {
l[0] = 0x5cf5d3ed;
}
-ed25519_mod1(m: *int, l: *int, q: int) {
+func ed25519_mod1(m: *int, l: *int, q: int) {
var c: int;
var r: int;
@@ -755,7 +755,7 @@ ed25519_mod1(m: *int, l: *int, q: int) {
}
// r = x mod L
-ed25519_mod_l(r: *int, x: *int) {
+func ed25519_mod_l(r: *int, x: *int) {
var _l: _ed25519_limb;
var l: *int;
var _m: _ed25519_mod;
@@ -805,7 +805,7 @@ ed25519_mod_l(r: *int, x: *int) {
}
// x = a * b + y mod L
-ed25519_ma_l(x: *int, a: *int, b: *int, y: *int) {
+func ed25519_ma_l(x: *int, a: *int, b: *int, y: *int) {
var _z: _ed25519_mod;
var z: *int;
var c: int;
@@ -872,7 +872,7 @@ ed25519_ma_l(x: *int, a: *int, b: *int, y: *int) {
}
// x = a_512 mod L
-ed25519_reduce_l(x: *int, a: *byte) {
+func ed25519_reduce_l(x: *int, a: *byte) {
var _z: _ed25519_point;
var z: *int;
@@ -898,7 +898,7 @@ ed25519_reduce_l(x: *int, a: *byte) {
ed25519_mod_l(x, z);
}
-ed25519_encode_l(dest: *byte, p: *int) {
+func ed25519_encode_l(dest: *byte, p: *int) {
dest[0] = p[0] as byte;
dest[1] = (p[0] >> 8) as byte;
dest[2] = (p[0] >> 16) as byte;
@@ -933,7 +933,7 @@ ed25519_encode_l(dest: *byte, p: *int) {
dest[31] = (p[7] >> 24) as byte;
}
-ed25519_eq(a: *int, b: *int): int {
+func ed25519_eq(a: *int, b: *int): int {
var x: int;
x = a[0] ^ b[0];
x = x | (a[1] ^ b[1]);
@@ -960,7 +960,7 @@ ed25519_eq(a: *int, b: *int): int {
return (x & 1) ^ 1;
}
-ed25519_verify(sig: *byte, pub: *byte, msg: *byte, len: int): int {
+func ed25519_verify(sig: *byte, pub: *byte, msg: *byte, len: int): int {
var ctx: sha512_ctx;
var _a: _ed25519_point;
var a: *int;
@@ -1018,7 +1018,7 @@ ed25519_verify(sig: *byte, pub: *byte, msg: *byte, len: int): int {
return ed25519_eq(a, b);
}
-ed25519_bi(d: *int) {
+func ed25519_bi(d: *int) {
d[7] = 0x0f26edf4;
d[6] = 0x60a006bb;
d[5] = 0xd27b08dc;
@@ -1031,7 +1031,7 @@ ed25519_bi(d: *int) {
// u = (1 + y) / (1 - y)
// v = sqrt(-486664) * u / x
-cv25519_of_ed25519(uv: *int, xy: *int) {
+func cv25519_of_ed25519(uv: *int, xy: *int) {
var _a: _ed25519_limb;
var _b: _ed25519_limb;
var _c: _ed25519_limb;
@@ -1063,7 +1063,7 @@ cv25519_of_ed25519(uv: *int, xy: *int) {
// x = sqrt(-486664) * u / v
// y = (u - 1) / (u + 1)
-ed25519_of_cv25519(xy: *int, uv: *int) {
+func ed25519_of_cv25519(xy: *int, uv: *int) {
var _a: _ed25519_limb;
var _b: _ed25519_limb;
var _c: _ed25519_limb;
@@ -1093,7 +1093,7 @@ ed25519_of_cv25519(xy: *int, uv: *int) {
}
// cv25519: v**2 = u**3 + a*u**2 + u mod p
-x25519_decode(uv: *int, u: *byte): int {
+func x25519_decode(uv: *int, u: *byte): int {
var _v: _ed25519_limb;
var v: *int;
@@ -1123,7 +1123,7 @@ x25519_decode(uv: *int, u: *byte): int {
return !ed25519_zerop(&uv[8]);
}
-x25519_encode(u: *byte, uv: *int) {
+func x25519_encode(u: *byte, uv: *int) {
u[0] = uv[0] as byte;
u[1] = (uv[0] >> 8) as byte;
u[2] = (uv[0] >> 16) as byte;
@@ -1158,12 +1158,12 @@ x25519_encode(u: *byte, uv: *int) {
u[31] = (uv[7] >> 24) as byte;
}
-x25519_base(u: *byte) {
+func x25519_base(u: *byte) {
bzero(u, 32);
u[0] = 9 as byte;
}
-x25519(uk: *byte, u: *byte, k: *byte): int {
+func x25519(uk: *byte, u: *byte, k: *byte): int {
var _uv: _ed25519_point;
var _xy: _ed25519_point;
var _kc: _ed25519_limb;
@@ -1187,7 +1187,7 @@ x25519(uk: *byte, u: *byte, k: *byte): int {
return 1;
}
-ed25519_zerop(x: *int): int {
+func ed25519_zerop(x: *int): int {
var a: int;
a = x[0] | x[1] | x[2] | x[3] | x[4] | x[5] | x[6] | x[7];
a = (a >> 32) | a;
@@ -1200,7 +1200,7 @@ ed25519_zerop(x: *int): int {
}
// cv25519: v**2 = u**3 + a*u**2 + u mod p
-x25519_check(uv: *int): int {
+func x25519_check(uv: *int): int {
var _a: _ed25519_limb;
var _b: _ed25519_limb;
var a: *int;
@@ -1223,7 +1223,7 @@ x25519_check(uv: *int): int {
}
// ed25519: -x**2 + y**2 = 1 + d*x**2*y**2 mod p
-ed25519_check(xy: *int): int {
+func ed25519_check(xy: *int): int {
var _a: _ed25519_limb;
var _b: _ed25519_limb;
var _c: _ed25519_limb;
@@ -1251,7 +1251,7 @@ ed25519_check(xy: *int): int {
return ed25519_zerop(a);
}
-ed25519_set_lsb(xy: *int, lsb: int) {
+func ed25519_set_lsb(xy: *int, lsb: int) {
var _a: _ed25519_limb;
var a: *int;
@@ -1263,7 +1263,7 @@ ed25519_set_lsb(xy: *int, lsb: int) {
ed25519_selectl(xy, xy, a, (xy[0] ^ lsb) & 1);
}
-ed25519_clamp(k: *int, b: *byte) {
+func ed25519_clamp(k: *int, b: *byte) {
k[0] = (b[0] as int | (b[1] as int << 8) | (b[2] as int << 16) | (b[3] as int << 24)) & -8;
k[1] = b[4] as int | (b[5] as int << 8) | (b[6] as int << 16) | (b[7] as int << 24);
k[2] = b[8] as int | (b[9] as int << 8) | (b[10] as int << 16) | (b[11] as int << 24);
diff --git a/genlex.om b/genlex.om
@@ -1,4 +1,4 @@
-getchar(): int {
+func getchar(): int {
var b: byte;
var ret: int;
ret = read(0, &b, 1);
@@ -11,7 +11,7 @@ getchar(): int {
return b as int;
}
-putchar(ch: int): void {
+func putchar(ch: int): void {
var b: byte;
var ret: int;
b = ch as byte;
@@ -38,7 +38,7 @@ struct compiler {
d: *dfa;
}
-setup(c: *compiler): void {
+func setup(c: *compiler): void {
setup_alloc(&c.a);
c.nc = getchar();
c.lineno = 1;
@@ -56,7 +56,7 @@ setup(c: *compiler): void {
feed(c);
}
-feedc(c: *compiler): void {
+func feedc(c: *compiler): void {
c.nc = getchar();
if (c.nc == '\n') {
c.lineno = c.lineno + 1;
@@ -81,7 +81,7 @@ enum {
T_SEMI,
}
-feed(c: *compiler): void {
+func feed(c: *compiler): void {
c.n = 0 as *nfa;
c.tlen = 0;
@@ -146,7 +146,7 @@ feed(c: *compiler): void {
}
}
-feed_ident(c: *compiler): void {
+func feed_ident(c: *compiler): void {
c.tt = T_IDENT;
loop {
if (!((c.nc >= 'a' && c.nc <= 'z') ||
@@ -167,7 +167,7 @@ feed_ident(c: *compiler): void {
}
}
-hexdig(c: *compiler): int {
+func hexdig(c: *compiler): int {
if (c.nc >= '0' && c.nc <= '9') {
return c.nc - '0';
}
@@ -183,7 +183,7 @@ hexdig(c: *compiler): int {
die("invalid hex digit");
}
-feed_escape(c: *compiler): void {
+func feed_escape(c: *compiler): void {
var hex: int;
feedc(c);
@@ -217,7 +217,7 @@ feed_escape(c: *compiler): void {
}
}
-feed_literal(c: *compiler): void {
+func feed_literal(c: *compiler): void {
var a: *nfa;
c.tt = T_LITERAL;
@@ -246,7 +246,7 @@ feed_literal(c: *compiler): void {
}
}
-feed_charset(c: *compiler): void {
+func feed_charset(c: *compiler): void {
var left: int;
var right: int;
var mode: int;
@@ -385,7 +385,7 @@ feed_charset(c: *compiler): void {
}
}
-parse_ident(c: *compiler): *tag {
+func parse_ident(c: *compiler): *tag {
var t: *tag;
if (c.tt != T_IDENT) {
return 0 as *tag;
@@ -401,7 +401,7 @@ struct tag {
id: int;
}
-intern(c: *compiler): *byte {
+func intern(c: *compiler): *byte {
var s: *byte;
var i: int;
s = alloc(&c.a, c.tlen + 1);
@@ -417,7 +417,7 @@ intern(c: *compiler): *byte {
return s;
}
-find_tag(c: *compiler, s: *byte): *tag {
+func find_tag(c: *compiler, s: *byte): *tag {
var t: *tag;
var link: **tag;
link = &c.tags;
@@ -451,7 +451,7 @@ struct nfa {
end: *nfa;
}
-nfa_empty(c: *compiler): *nfa {
+func nfa_empty(c: *compiler): *nfa {
var n: *nfa;
n = alloc(&c.a, sizeof(*n)) as *nfa;
n.id = c.nnfa;
@@ -465,7 +465,7 @@ nfa_empty(c: *compiler): *nfa {
return n;
}
-nfa_literal(c: *compiler, a: byte): *nfa {
+func nfa_literal(c: *compiler, a: byte): *nfa {
var n: *nfa;
n = nfa_empty(c);
n.left = a as int;
@@ -473,7 +473,7 @@ nfa_literal(c: *compiler, a: byte): *nfa {
return n;
}
-nfa_alt(c: *compiler, a: *nfa, b: *nfa): *nfa {
+func nfa_alt(c: *compiler, a: *nfa, b: *nfa): *nfa {
var i: *nfa;
var o: *nfa;
i = nfa_empty(c);
@@ -486,13 +486,13 @@ nfa_alt(c: *compiler, a: *nfa, b: *nfa): *nfa {
return i;
}
-nfa_concat(c: *compiler, a: *nfa, b: *nfa): *nfa {
+func nfa_concat(c: *compiler, a: *nfa, b: *nfa): *nfa {
a.end.a = b;
a.end = b.end;
return a;
}
-nfa_plus(c: *compiler, a: *nfa): *nfa {
+func nfa_plus(c: *compiler, a: *nfa): *nfa {
var o: *nfa;
o = nfa_empty(c);
o.b = a;
@@ -501,20 +501,20 @@ nfa_plus(c: *compiler, a: *nfa): *nfa {
return a;
}
-nfa_qmark(c: *compiler, a: *nfa): *nfa {
+func nfa_qmark(c: *compiler, a: *nfa): *nfa {
var b: *nfa;
b = nfa_empty(c);
a = nfa_alt(c, a, b);
return a;
}
-nfa_star(c: *compiler, a: *nfa): *nfa {
+func nfa_star(c: *compiler, a: *nfa): *nfa {
a = nfa_plus(c, a);
a = nfa_qmark(c, a);
return a;
}
-parse_literal(c: *compiler): *nfa {
+func parse_literal(c: *compiler): *nfa {
var n: *nfa;
if (c.tt != T_LITERAL) {
return 0 as *nfa;
@@ -524,7 +524,7 @@ parse_literal(c: *compiler): *nfa {
return n;
}
-parse_charset(c: *compiler): *nfa {
+func parse_charset(c: *compiler): *nfa {
var n: *nfa;
if (c.tt != T_CHARSET) {
return 0 as *nfa;
@@ -534,7 +534,7 @@ parse_charset(c: *compiler): *nfa {
return n;
}
-parse_dot(c: *compiler): *nfa {
+func parse_dot(c: *compiler): *nfa {
var n: *nfa;
if (c.tt != T_DOT) {
return 0 as *nfa;
@@ -550,7 +550,7 @@ parse_dot(c: *compiler): *nfa {
// | charset
// | dot
// | '(' regex ')'
-parse_primary(c: *compiler): *nfa {
+func parse_primary(c: *compiler): *nfa {
var n: *nfa;
n = parse_literal(c);
@@ -588,7 +588,7 @@ parse_primary(c: *compiler): *nfa {
// | post '*'
// | post '+'
// | post '?'
-parse_post(c: *compiler): *nfa {
+func parse_post(c: *compiler): *nfa {
var n: *nfa;
n = parse_primary(c);
@@ -614,7 +614,7 @@ parse_post(c: *compiler): *nfa {
// concat := post
// | post concat
-parse_concat(c: *compiler): *nfa {
+func parse_concat(c: *compiler): *nfa {
var n: *nfa;
var b: *nfa;
@@ -636,7 +636,7 @@ parse_concat(c: *compiler): *nfa {
// regex := concat
// | '|' regex
// | concat '|' regex
-parse_regex(c: *compiler): *nfa {
+func parse_regex(c: *compiler): *nfa {
var n: *nfa;
var b: *nfa;
@@ -661,7 +661,7 @@ parse_regex(c: *compiler): *nfa {
}
// decl := ident '=' regex ';'
-parse_decl(c: *compiler): *nfa {
+func parse_decl(c: *compiler): *nfa {
var regex: *nfa;
var t: *tag;
var n: *nfa;
@@ -691,7 +691,7 @@ parse_decl(c: *compiler): *nfa {
// progam := decl
// | decl program
-parse_program(c: *compiler): *nfa {
+func parse_program(c: *compiler): *nfa {
var n: *nfa;
var p: *nfa;
@@ -729,14 +729,14 @@ struct nlist {
tag: *tag;
}
-alloc_nlist(c: *compiler, l: *nlist, cap: int): void {
+func alloc_nlist(c: *compiler, l: *nlist, cap: int): void {
l.cap = cap;
l.live = alloc(&c.a, sizeof(*l.live) * cap) as **nfa;
l.fill = 0;
l.tag = 0 as *tag;
}
-activate(l: *nlist, n: *nfa): void {
+func activate(l: *nlist, n: *nfa): void {
if (n.live) {
return;
}
@@ -761,7 +761,7 @@ activate(l: *nlist, n: *nfa): void {
}
}
-nlist_cmp(a: *nlist, b: *nlist): int {
+func nlist_cmp(a: *nlist, b: *nlist): int {
var i: int;
i = 0;
@@ -812,7 +812,7 @@ nlist_cmp(a: *nlist, b: *nlist): int {
return 0;
}
-nlist_sort(l: *nlist): void {
+func nlist_sort(l: *nlist): void {
var i: int;
var j: int;
var k: int;
@@ -873,7 +873,7 @@ nlist_sort(l: *nlist): void {
}
}
-alloc_link(c: *compiler): **dfa {
+func alloc_link(c: *compiler): **dfa {
var link: **dfa;
var i: int;
link = alloc(&c.a, sizeof(*link) * 256) as **dfa;
@@ -888,7 +888,7 @@ alloc_link(c: *compiler): **dfa {
return link;
}
-nlist_copy(c: *compiler, dest: *nlist, src: *nlist): void {
+func nlist_copy(c: *compiler, dest: *nlist, src: *nlist): void {
var i: int;
alloc_nlist(c, dest, src.fill);
dest.fill = src.fill;
@@ -903,7 +903,7 @@ nlist_copy(c: *compiler, dest: *nlist, src: *nlist): void {
}
}
-nlist2dfa(c: *compiler, l: *nlist): *dfa {
+func nlist2dfa(c: *compiler, l: *nlist): *dfa {
var link: **dfa;
var d: *dfa;
var n: *nfa;
@@ -980,7 +980,7 @@ nlist2dfa(c: *compiler, l: *nlist): *dfa {
return d;
}
-deactivate(l: *nlist): void {
+func deactivate(l: *nlist): void {
var i: int;
i = 0;
loop {
@@ -994,14 +994,14 @@ deactivate(l: *nlist): void {
}
}
-powerset(c: *compiler, n: *nfa): *dfa {
+func powerset(c: *compiler, n: *nfa): *dfa {
var live: nlist;
alloc_nlist(c, &live, c.nnfa);
activate(&live, n);
return nlist2dfa(c, &live);
}
-codegen(c: *compiler, a: *dfa): void {
+func codegen(c: *compiler, a: *dfa): void {
var i: int;
var b: *dfa;
var lo: int;
@@ -1080,7 +1080,7 @@ codegen(c: *compiler, a: *dfa): void {
}
}
-gen(c: *compiler, a: *dfa): void {
+func gen(c: *compiler, a: *dfa): void {
var t: *tag;
t = c.tags;
fdputs(1, "enum {\n");
@@ -1104,7 +1104,7 @@ gen(c: *compiler, a: *dfa): void {
fdputs(1, "}\n");
}
-main(argc: int, argv: **byte, envp: **byte): void {
+func main(argc: int, argv: **byte, envp: **byte): void {
var c: compiler;
var n: *nfa;
var a: *dfa;
diff --git a/kernel.om b/kernel.om
@@ -1,53 +1,53 @@
-ud2();
+func ud2();
-syscall(n: int, a1: int, a2: int, a3: int, a4: int, a5: int, a6: int): int;
+func syscall(n: int, a1: int, a2: int, a3: int, a4: int, a5: int, a6: int): int;
-cpuid(a: *int, c: *int, d: *int, b: *int);
+func cpuid(a: *int, c: *int, d: *int, b: *int);
-inb(a: int): int;
-outb(a: int, x: int);
+func inb(a: int): int;
+func outb(a: int, x: int);
-inw(a: int): int;
-outw(a: int, x: int);
+func inw(a: int): int;
+func outw(a: int, x: int);
-ind(a: int): int;
-outd(a: int, x: int);
+func ind(a: int): int;
+func outd(a: int, x: int);
-rdmsr(r: int): int;
-wrmsr(r: int, x: int);
+func rdmsr(r: int): int;
+func wrmsr(r: int, x: int);
-rdcr0(): int;
-wrcr0(x: int);
-rdcr2(): int;
-wrcr2(x: int);
-rdcr3(): int;
-wrcr3(x: int);
-rdcr4(): int;
-wrcr4(x: int);
+func rdcr0(): int;
+func wrcr0(x: int);
+func rdcr2(): int;
+func wrcr2(x: int);
+func rdcr3(): int;
+func wrcr3(x: int);
+func rdcr4(): int;
+func wrcr4(x: int);
-lgdt(base: *int, size: int);
-lidt(base: *int, size: int);
-lldt(s: int);
-ltr(s: int);
-lseg(cs: int, ds: int);
+func lgdt(base: *int, size: int);
+func lidt(base: *int, size: int);
+func lldt(s: int);
+func ltr(s: int);
+func lseg(cs: int, ds: int);
-hlt();
+func hlt();
-cli();
-sti();
-rdflags(): int;
-wrflags(x: int);
+func cli();
+func sti();
+func rdflags(): int;
+func wrflags(x: int);
-wbinvld(x: int);
-invlpg(x: int);
+func wbinvld(x: int);
+func invlpg(x: int);
-_isr0();
-_ssr0();
+func _isr0();
+func _ssr0();
-_include(name: *byte, len: *int): *byte;
-_rdrand(): int;
+func _include(name: *byte, len: *int): *byte;
+func _rdrand(): int;
-_rgs(x: int): int;
+func _rgs(x: int): int;
struct regs {
rax: int; // 0
@@ -75,13 +75,13 @@ struct regs {
// 176
}
-taskswitch(save_regs: *regs, load_regs: *regs);
+func taskswitch(save_regs: *regs, load_regs: *regs);
-_r32(p: *byte): int;
-_w32(p: *byte, x: int): int;
+func _r32(p: *byte): int;
+func _w32(p: *byte, x: int): int;
-_r16(p: *byte): int;
-_w16(p: *byte, x: int): int;
+func _r16(p: *byte): int;
+func _w16(p: *byte, x: int): int;
enum {
IO_PIC1 = 0x20,
@@ -89,7 +89,7 @@ enum {
IO_PIT = 0x40,
}
-gdt_tss(s: *int, base: int, size: int, access: int, flags: int) {
+func gdt_tss(s: *int, base: int, size: int, access: int, flags: int) {
s[0] = (((base & ~0xffff) << 32)
+ ((flags & 0xf) << 52)
+ (((size - 1) & 0xf0000) << 32)
@@ -100,7 +100,7 @@ gdt_tss(s: *int, base: int, size: int, access: int, flags: int) {
s[1] = base >> 32;
}
-idt_gate(s: *int, offset: int, dpl: int, ist: int) {
+func idt_gate(s: *int, offset: int, dpl: int, ist: int) {
s[0] = (((offset & ~0xffff) << 32)
+ (1 << 47)
+ ((dpl & 3) << 45)
@@ -111,7 +111,7 @@ idt_gate(s: *int, offset: int, dpl: int, ist: int) {
s[1] = offset >> 32;
}
-bzero(s: *byte, size: int) {
+func bzero(s: *byte, size: int) {
var i: int;
i = 0;
loop {
@@ -123,7 +123,7 @@ bzero(s: *byte, size: int) {
}
}
-panic(r: *regs) {
+func panic(r: *regs) {
var i: int;
var sp: int;
@@ -219,7 +219,7 @@ panic(r: *regs) {
}
}
-_isr(r: *regs) {
+func _isr(r: *regs) {
var global: *global;
global = g();
@@ -247,7 +247,7 @@ _isr(r: *regs) {
}
}
-fill_idt(s: *int) {
+func fill_idt(s: *int) {
var i: int;
var ist: int;
loop {
@@ -264,7 +264,7 @@ fill_idt(s: *int) {
}
}
-memcmp(a: *byte, b: *byte, n: int): int {
+func memcmp(a: *byte, b: *byte, n: int): int {
var i: int;
i = 0;
@@ -286,7 +286,7 @@ memcmp(a: *byte, b: *byte, n: int): int {
}
}
-bytesum(a: *byte, n: int): byte {
+func bytesum(a: *byte, n: int): byte {
var i: int;
var x: byte;
@@ -303,7 +303,7 @@ bytesum(a: *byte, n: int): byte {
}
}
-ptov(p: int): *byte {
+func ptov(p: int): *byte {
if p < (1 << 30) {
return (p - 0x80000000) as *byte;
} else {
@@ -311,7 +311,7 @@ ptov(p: int): *byte {
}
}
-vtop(v: *byte): int {
+func vtop(v: *byte): int {
var va: int;
va = v as int;
@@ -328,14 +328,14 @@ vtop(v: *byte): int {
kdie("BAD VA");
}
-acpi_len(p: int): int {
+func acpi_len(p: int): int {
if p == 0 {
return 0;
}
return _r32((ptov(p) as int + 4) as *byte);
}
-valid_table(p: int, sig: *byte): int {
+func valid_table(p: int, sig: *byte): int {
var len: int;
var v: *byte;
@@ -357,23 +357,23 @@ valid_table(p: int, sig: *byte): int {
return len;
}
-kputh(x: int) {
+func kputh(x: int) {
_kputh(x, 64);
}
-kputh8(x: int) {
+func kputh8(x: int) {
_kputh(x, 8);
}
-kputh16(x: int) {
+func kputh16(x: int) {
_kputh(x, 16);
}
-kputh32(x: int) {
+func kputh32(x: int) {
_kputh(x, 32);
}
-_kputh(x: int, d: int) {
+func _kputh(x: int, d: int) {
loop {
if d == 0 {
break;
@@ -383,7 +383,7 @@ _kputh(x: int, d: int) {
}
}
-kputd(x: int) {
+func kputd(x: int) {
var a: int;
if x < 0 {
@@ -402,7 +402,7 @@ kputd(x: int) {
kputc('0' + a);
}
-find_rsdt(): int {
+func find_rsdt(): int {
var p: int;
var v: *byte;
var len: int;
@@ -433,7 +433,7 @@ find_rsdt(): int {
return p;
}
-find_acpi(rsdt: int, sig: *byte): int {
+func find_acpi(rsdt: int, sig: *byte): int {
var i: int;
var len: int;
var p: int;
@@ -460,7 +460,7 @@ find_acpi(rsdt: int, sig: *byte): int {
}
}
-map_pci(pa: int): *byte {
+func map_pci(pa: int): *byte {
var global: *global;
var va: int;
var pt4p: int;
@@ -500,7 +500,7 @@ struct pcidev {
msi: *byte;
}
-scan_pci(base: *byte, visit: func(dev: *pcidev)) {
+func scan_pci(base: *byte, visit: func(dev: *pcidev)) {
var i: int;
var cap: int;
var capid: int;
@@ -562,7 +562,7 @@ scan_pci(base: *byte, visit: func(dev: *pcidev)) {
}
}
-show_pcidev(dev: *pcidev) {
+func show_pcidev(dev: *pcidev) {
kputh16(dev.bus);
kputc(':');
kputc(' ');
@@ -588,7 +588,7 @@ show_pcidev(dev: *pcidev) {
kputc('\n');
}
-onesum(h: *byte, n: int, s: int): int {
+func onesum(h: *byte, n: int, s: int): int {
var i: int;
i = 0;
s = (s & 0xffff) + (s >> 16);
@@ -619,7 +619,7 @@ struct vga {
y: int;
}
-vinit(v: *vga, base: *byte, fb: *byte) {
+func vinit(v: *vga, base: *byte, fb: *byte) {
v.base = base;
v.fb = fb;
v.cx = 80;
@@ -628,7 +628,7 @@ vinit(v: *vga, base: *byte, fb: *byte) {
v.y = 0;
}
-vcursor(v: *vga) {
+func vcursor(v: *vga) {
var i: int;
i = v.y * v.cx + v.x;
outb(0x3d4, 0x0f);
@@ -637,7 +637,7 @@ vcursor(v: *vga) {
outb(0x3d5, i >> 8);
}
-vblit(v: *vga) {
+func vblit(v: *vga) {
var i: int;
var d: *int;
var s: *int;
@@ -657,7 +657,7 @@ vblit(v: *vga) {
}
}
-vclear(v: *vga) {
+func vclear(v: *vga) {
var i: int;
v.x = 0;
v.y = 0;
@@ -674,7 +674,7 @@ vclear(v: *vga) {
vblit(v);
}
-vshift(v: *vga) {
+func vshift(v: *vga) {
var i: int;
memcpy(v.fb, &v.fb[v.cx * 2], (v.cy - 1) * v.cx * 2);
i = (v.cy - 1) * v.cx;
@@ -692,7 +692,7 @@ vshift(v: *vga) {
vblit(v);
}
-vputc(v: *vga, c: int) {
+func vputc(v: *vga, c: int) {
if c == '\r' {
v.x = 0;
vblit(v);
@@ -721,13 +721,13 @@ vputc(v: *vga, c: int) {
vcursor(v);
}
-kputc(c: int) {
+func kputc(c: int) {
var global: *global;
global = g();
vputc(&global.vga, c);
}
-kputs(s: *byte) {
+func kputs(s: *byte) {
var i: int;
var global: *global;
global = g();
@@ -831,15 +831,15 @@ struct free_range {
end: int;
}
-g(): *global {
+func g(): *global {
return _rgs(0) as **global[0];
}
-rand(): int {
+func rand(): int {
return _rdrand();
}
-memset(dest: *byte, c: int, size: int) {
+func memset(dest: *byte, c: int, size: int) {
var i: int;
if size < 0 {
@@ -856,7 +856,7 @@ memset(dest: *byte, c: int, size: int) {
}
}
-memcpy(dest: *byte, src: *byte, size: int) {
+func memcpy(dest: *byte, src: *byte, size: int) {
var i: int;
if size < 0 {
@@ -884,7 +884,7 @@ memcpy(dest: *byte, src: *byte, size: int) {
}
}
-memswap(a: *byte, b: *byte, size: int) {
+func memswap(a: *byte, b: *byte, size: int) {
var i: int;
var t: byte;
@@ -904,7 +904,7 @@ memswap(a: *byte, b: *byte, size: int) {
}
}
-insert_sort(arr: *void, nitems: int, size: int, cmp: (func(a: *void, b: *void): int)) {
+func insert_sort(arr: *void, nitems: int, size: int, cmp: (func(a: *void, b: *void): int)) {
var i: int;
var j: int;
var a: *void;
@@ -944,7 +944,7 @@ insert_sort(arr: *void, nitems: int, size: int, cmp: (func(a: *void, b: *void):
}
}
-mmap_cmp(a: *void, b: *void): int {
+func mmap_cmp(a: *void, b: *void): int {
var a_addr: int;
var b_addr: int;
a_addr = a as *int[0];
@@ -957,7 +957,7 @@ mmap_cmp(a: *void, b: *void): int {
return 0;
}
-free(p: *byte) {
+func free(p: *byte) {
var global: *global;
var fp: *free_page;
var flags: int;
@@ -982,7 +982,7 @@ free(p: *byte) {
wrflags(flags);
}
-alloc_page(): int {
+func alloc_page(): int {
var global: *global;
var fr: *free_range;
var fp: *free_page;
@@ -1018,7 +1018,7 @@ alloc_page(): int {
kdie("OOM");
}
-direct_map(brk: *int) {
+func direct_map(brk: *int) {
var pt4p: int;
var pt4: *int;
var pt3p: int;
@@ -1075,7 +1075,7 @@ direct_map(brk: *int) {
invlpt();
}
-invlpt() {
+func invlpt() {
var global: *global;
var t: *task;
var tpt: *int;
@@ -1100,7 +1100,7 @@ invlpt() {
wrcr3(t.pt);
}
-setup_ring(ring: int, own: int) {
+func setup_ring(ring: int, own: int) {
var v: *byte;
var i: int;
var p: int;
@@ -1144,11 +1144,11 @@ struct realtek_ring {
index: int;
}
-alloc(): *byte {
+func alloc(): *byte {
return ptov(alloc_page());
}
-realtek_mkring(ring: *realtek_ring, rx: int) {
+func realtek_mkring(ring: *realtek_ring, rx: int) {
var i: int;
ring.count = 4096 >> 4;
ring.index = 0;
@@ -1165,7 +1165,7 @@ realtek_mkring(ring: *realtek_ring, rx: int) {
}
}
-init_realtek(dev: *pcidev) {
+func init_realtek(dev: *pcidev) {
var global: *global;
var realtek_port: *realtek_port;
var io: int;
@@ -1260,7 +1260,7 @@ init_realtek(dev: *pcidev) {
global.realtek_port = realtek_port;
}
-kputmac(a: int) {
+func kputmac(a: int) {
kputh8((a >> 40) & 0xff);
kputc(':');
kputh8((a >> 32) & 0xff);
@@ -1274,7 +1274,7 @@ kputmac(a: int) {
kputh8(a & 0xff);
}
-kputip(a: int) {
+func kputip(a: int) {
kputd((a >> 24) & 0xff);
kputc('.');
kputd((a >> 16) & 0xff);
@@ -1352,7 +1352,7 @@ struct rxinfo {
tcp_seg_len: int;
}
-memo_arp(ether: int, ip: int, auth: int) {
+func memo_arp(ether: int, ip: int, auth: int) {
var global: *global;
var mask: int;
global = g();
@@ -1473,7 +1473,7 @@ struct txinfo {
tcp_opt_len: int;
}
-alloc_tx(): *txinfo {
+func alloc_tx(): *txinfo {
var pkt: *txinfo;
pkt = alloc() as *txinfo;
bzero(pkt as *byte, 4096);
@@ -1481,11 +1481,11 @@ alloc_tx(): *txinfo {
return pkt;
}
-free_tx(pkt: *txinfo) {
+func free_tx(pkt: *txinfo) {
free(pkt as *byte);
}
-send_realtek(pkt: *txinfo) {
+func send_realtek(pkt: *txinfo) {
var port: *realtek_port;
var i: int;
var flags: int;
@@ -1516,7 +1516,7 @@ send_realtek(pkt: *txinfo) {
wrflags(flags);
}
-send_ether(pkt: *txinfo) {
+func send_ether(pkt: *txinfo) {
pkt.buf = &pkt.buf[-14];
pkt.len = pkt.len + 14;
@@ -1540,7 +1540,7 @@ send_ether(pkt: *txinfo) {
send_realtek(pkt);
}
-send_arp2(port: *realtek_port, tha: int, tpa: int) {
+func send_arp2(port: *realtek_port, tha: int, tpa: int) {
var pkt: *txinfo;
var global: *global;
var sha: int;
@@ -1618,7 +1618,7 @@ send_arp2(port: *realtek_port, tha: int, tpa: int) {
free_tx(pkt);
}
-handle_arp(pkt: *rxinfo) {
+func handle_arp(pkt: *rxinfo) {
var global: *global;
global = g();
@@ -1635,7 +1635,7 @@ handle_arp(pkt: *rxinfo) {
}
}
-rx_arp(pkt: *rxinfo) {
+func rx_arp(pkt: *rxinfo) {
var x: int;
if pkt.arp_len < 28 {
@@ -1694,7 +1694,7 @@ rx_arp(pkt: *rxinfo) {
handle_arp(pkt);
}
-send_arp1(port: *realtek_port, tha: int, tpa: int) {
+func send_arp1(port: *realtek_port, tha: int, tpa: int) {
var pkt: *txinfo;
var global: *global;
var sha: int;
@@ -1764,7 +1764,7 @@ send_arp1(port: *realtek_port, tha: int, tpa: int) {
free_tx(pkt);
}
-find_arp(pkt: *txinfo): int {
+func find_arp(pkt: *txinfo): int {
var flags: int;
var global: *global;
var mask: int;
@@ -1809,7 +1809,7 @@ find_arp(pkt: *txinfo): int {
}
}
-send_ip(pkt: *txinfo) {
+func send_ip(pkt: *txinfo) {
var id: int;
var sum: int;
var dest: int;
@@ -1888,7 +1888,7 @@ send_ip(pkt: *txinfo) {
send_ether(pkt);
}
-send_icmp(pkt: *txinfo) {
+func send_icmp(pkt: *txinfo) {
var sum: int;
pkt.buf = &pkt.buf[-8];
@@ -1912,7 +1912,7 @@ send_icmp(pkt: *txinfo) {
send_ip(pkt);
}
-send_pong(pkt: *rxinfo) {
+func send_pong(pkt: *rxinfo) {
var global: *global;
var tx: *txinfo;
global = g();
@@ -1929,7 +1929,7 @@ send_pong(pkt: *rxinfo) {
free_tx(tx);
}
-handle_icmp(pkt: *rxinfo) {
+func handle_icmp(pkt: *rxinfo) {
if pkt.icmp_type == ICMP_PING {
if pkt.icmp_code == 0 {
send_pong(pkt);
@@ -1937,7 +1937,7 @@ handle_icmp(pkt: *rxinfo) {
}
}
-rx_icmp(pkt: *rxinfo) {
+func rx_icmp(pkt: *rxinfo) {
if pkt.icmp_len < 8 {
return;
}
@@ -1958,7 +1958,7 @@ rx_icmp(pkt: *rxinfo) {
handle_icmp(pkt);
}
-send_udp(pkt: *txinfo) {
+func send_udp(pkt: *txinfo) {
var sum: int;
pkt.ip_proto = IP_UDP;
@@ -1989,7 +1989,7 @@ send_udp(pkt: *txinfo) {
send_ip(pkt);
}
-udp_echo(pkt: *rxinfo) {
+func udp_echo(pkt: *rxinfo) {
var tx: *txinfo;
tx = alloc_tx();
tx.ip_src = pkt.ip_dest;
@@ -2002,13 +2002,13 @@ udp_echo(pkt: *rxinfo) {
free_tx(tx);
}
-handle_udp(pkt: *rxinfo) {
+func handle_udp(pkt: *rxinfo) {
if pkt.udp_dest == 8000 {
udp_echo(pkt);
}
}
-rx_udp(pkt: *rxinfo) {
+func rx_udp(pkt: *rxinfo) {
var sum: int;
var len: int;
@@ -2043,7 +2043,7 @@ rx_udp(pkt: *rxinfo) {
handle_udp(pkt);
}
-send_tcp(pkt: *txinfo) {
+func send_tcp(pkt: *txinfo) {
var len: int;
var sum: int;
@@ -2092,7 +2092,7 @@ send_tcp(pkt: *txinfo) {
send_ip(pkt);
}
-alloc_tcp(): *tcp_state {
+func alloc_tcp(): *tcp_state {
var global: *global;
var flags: int;
var i: int;
@@ -2124,7 +2124,7 @@ alloc_tcp(): *tcp_state {
}
}
-tcp_free(tcb: *tcp_state) {
+func tcp_free(tcb: *tcp_state) {
var global: *global;
var flags: int;
var i: int;
@@ -2148,7 +2148,7 @@ tcp_free(tcb: *tcp_state) {
wrflags(flags);
}
-tcp_listen(port: int, event_func: func(tcb: *tcp_state)) {
+func tcp_listen(port: int, event_func: func(tcb: *tcp_state)) {
var global: *global;
var tcb: *tcp_state;
global = g();
@@ -2162,7 +2162,7 @@ tcp_listen(port: int, event_func: func(tcb: *tcp_state)) {
tcb.state = TCP_LISTEN;
}
-tcp_echo(tcb: *tcp_state) {
+func tcp_echo(tcb: *tcp_state) {
var buf: *byte;
var len: int;
@@ -2187,7 +2187,7 @@ tcp_echo(tcb: *tcp_state) {
free(buf);
}
-task_ssh(t: *task) {
+func task_ssh(t: *task) {
var tcb: *tcp_state;
var buf: *byte;
var c: byte;
@@ -2227,13 +2227,13 @@ task_ssh(t: *task) {
free(buf);
}
-tcp_ssh(tcb: *tcp_state) {
+func tcp_ssh(tcb: *tcp_state) {
if !tcb.task {
tcb.task = spawn(task_ssh, "sshd", tcb as *void);
}
}
-send_rst(pkt: *rxinfo) {
+func send_rst(pkt: *rxinfo) {
var tx: *txinfo;
tx = alloc_tx();
@@ -2264,7 +2264,7 @@ send_rst(pkt: *rxinfo) {
free_tx(tx);
}
-send_ack(tcb: *tcp_state) {
+func send_ack(tcb: *tcp_state) {
var tx: *txinfo;
tx = alloc_tx();
@@ -2290,7 +2290,7 @@ send_ack(tcb: *tcp_state) {
free_tx(tx);
}
-send_psh(tcb: *tcp_state) {
+func send_psh(tcb: *tcp_state) {
var tx: *txinfo;
var len: int;
tx = alloc_tx();
@@ -2359,7 +2359,7 @@ enum {
TCP_TIME_WAIT = 10,
}
-find_tcb(pkt: *rxinfo): *tcp_state {
+func find_tcb(pkt: *rxinfo): *tcp_state {
var global: *global;
var tcb: *tcp_state;
var i: int;
@@ -2408,7 +2408,7 @@ find_tcb(pkt: *rxinfo): *tcp_state {
return 0 as *tcp_state;
}
-handle_syn(tcb: *tcp_state, pkt: *rxinfo) {
+func handle_syn(tcb: *tcp_state, pkt: *rxinfo) {
var c: *tcp_state;
var tx: *txinfo;
@@ -2458,7 +2458,7 @@ handle_syn(tcb: *tcp_state, pkt: *rxinfo) {
free_tx(tx);
}
-handle_seg(tcb: *tcp_state, pkt: *rxinfo) {
+func handle_seg(tcb: *tcp_state, pkt: *rxinfo) {
var offset: int;
var wnd: int;
var len: int;
@@ -2563,7 +2563,7 @@ handle_seg(tcb: *tcp_state, pkt: *rxinfo) {
}
}
-tcp_tick(tcb: *tcp_state) {
+func tcp_tick(tcb: *tcp_state) {
var global: *global;
var len: int;
global = g();
@@ -2603,7 +2603,7 @@ tcp_tick(tcb: *tcp_state) {
tcb.deadline = tcb.rto;
}
-tcp_send(tcb: *tcp_state, b: *byte, n: int): int {
+func tcp_send(tcb: *tcp_state, b: *byte, n: int): int {
var cap: int;
var flags: int;
flags = rdflags();
@@ -2626,7 +2626,7 @@ tcp_send(tcb: *tcp_state, b: *byte, n: int): int {
return n;
}
-tcp_recv(tcb: *tcp_state, b: *byte, n: int): int {
+func tcp_recv(tcb: *tcp_state, b: *byte, n: int): int {
var cap: int;
var flags: int;
flags = rdflags();
@@ -2649,7 +2649,7 @@ tcp_recv(tcb: *tcp_state, b: *byte, n: int): int {
return n;
}
-tcp_close(tcb: *tcp_state) {
+func tcp_close(tcb: *tcp_state) {
var flags: int;
flags = rdflags();
cli();
@@ -2660,7 +2660,7 @@ tcp_close(tcb: *tcp_state) {
wrflags(flags);
}
-handle_tcp(pkt: *rxinfo) {
+func handle_tcp(pkt: *rxinfo) {
var tcb: *tcp_state;
if pkt.tcp_src == 0 || pkt.tcp_dest == 0 {
@@ -2706,7 +2706,7 @@ enum {
TCP_FIN = 1,
}
-rx_tcp(pkt: *rxinfo) {
+func rx_tcp(pkt: *rxinfo) {
var sum: int;
var off: int;
@@ -2749,7 +2749,7 @@ rx_tcp(pkt: *rxinfo) {
handle_tcp(pkt);
}
-rx_ip(pkt: *rxinfo) {
+func rx_ip(pkt: *rxinfo) {
var global: *global;
var len: int;
var frag: int;
@@ -2822,7 +2822,7 @@ rx_ip(pkt: *rxinfo) {
}
}
-rx_ether(pkt: *rxinfo) {
+func rx_ether(pkt: *rxinfo) {
if pkt.ether_len < 14 {
return;
}
@@ -2853,7 +2853,7 @@ rx_ether(pkt: *rxinfo) {
}
}
-isr_realtek() {
+func isr_realtek() {
var pkt: rxinfo;
var global: *global;
var port: *realtek_port;
@@ -2899,7 +2899,7 @@ isr_realtek() {
}
}
-init_ahci(dev: *pcidev) {
+func init_ahci(dev: *pcidev) {
var global: *global;
var ahci: *byte;
@@ -2960,7 +2960,7 @@ struct ahci_port {
buf: *byte;
}
-init_ahci_port(ahci: *byte, i: int) {
+func init_ahci_port(ahci: *byte, i: int) {
var global: *global;
var port: *byte;
@@ -3048,7 +3048,7 @@ enum {
ATA_WRITE = 0x35,
}
-fill_fis_h2d(ahci_port: *ahci_port, cmd: int, lba: int) {
+func fill_fis_h2d(ahci_port: *ahci_port, cmd: int, lba: int) {
var w: int;
var size: int;
@@ -3103,7 +3103,7 @@ fill_fis_h2d(ahci_port: *ahci_port, cmd: int, lba: int) {
_w32(&ahci_port.ctab[0x8c], (1 << 31) + (size - 1));
}
-isr_ahci() {
+func isr_ahci() {
var global: *global;
var ahci_port: *ahci_port;
var i: int;
@@ -3122,7 +3122,7 @@ isr_ahci() {
}
}
-tick(r: *regs) {
+func tick(r: *regs) {
var global: *global;
var tcb: *tcp_state;
var cur: *task;
@@ -3159,11 +3159,11 @@ tick(r: *regs) {
memcpy(r as *byte, (&next.regs) as *byte, sizeof(*r));
}
-freept(pt: int) {
+func freept(pt: int) {
free(ptov(pt));
}
-free_task(t: *task) {
+func free_task(t: *task) {
var i: int;
i = 0;
loop {
@@ -3182,7 +3182,7 @@ free_task(t: *task) {
free(t as *byte);
}
-schedule() {
+func schedule() {
var global: *global;
var cur: *task;
var next: *task;
@@ -3210,7 +3210,7 @@ schedule() {
invlpt();
}
-task_exit() {
+func task_exit() {
var global: *global;
var t: *task;
global = g();
@@ -3222,7 +3222,7 @@ task_exit() {
}
}
-yield() {
+func yield() {
var global: *global;
var flags: int;
var cur: *task;
@@ -3239,7 +3239,7 @@ yield() {
wrflags(flags);
}
-kdie(msg: *byte) {
+func kdie(msg: *byte) {
kputs("die: ");
kputs(msg);
kputs("\n");
@@ -3249,7 +3249,7 @@ kdie(msg: *byte) {
}
}
-sleep(ms: int) {
+func sleep(ms: int) {
var global: *global;
var deadline: int;
@@ -3272,7 +3272,7 @@ sleep(ms: int) {
}
}
-xxd(data: *byte, len: int) {
+func xxd(data: *byte, len: int) {
var i: int;
var j: int;
loop {
@@ -3334,12 +3334,12 @@ xxd(data: *byte, len: int) {
}
}
-read_cmos(a: int): int {
+func read_cmos(a: int): int {
outb(0x70, (a & 0x7f) | 0x80);
return inb(0x71);
}
-read_rtc() {
+func read_rtc() {
var global: *global;
var epoch_time: int;
var days_since_epoch: int;
@@ -3452,7 +3452,7 @@ read_rtc() {
global.boot_time = epoch_time;
}
-_tstart() {
+func _tstart() {
var global: *global;
var t: *task;
global = g();
@@ -3462,7 +3462,7 @@ _tstart() {
task_exit();
}
-spawn(f: (func(t: *task)), name: *byte, a: *void): *task {
+func spawn(f: (func(t: *task)), name: *byte, a: *void): *task {
var global: *global;
var t: *task;
var cur: *task;
@@ -3541,7 +3541,7 @@ enum {
S_IFREG = 0x8000,
}
-strlen(s: *byte): int {
+func strlen(s: *byte): int {
var i: int;
i = 0;
loop {
@@ -3552,7 +3552,7 @@ strlen(s: *byte): int {
}
}
-strndup(s: *byte, n: int): *byte {
+func strndup(s: *byte, n: int): *byte {
var r: *byte;
if n >= 4096 {
kdie("str too large");
@@ -3563,11 +3563,11 @@ strndup(s: *byte, n: int): *byte {
return r;
}
-strdup(s: *byte): *byte {
+func strdup(s: *byte): *byte {
return strndup(s, strlen(s));
}
-mkvnode(): *vnode {
+func mkvnode(): *vnode {
var v: *vnode;
var global: *global;
global = g();
@@ -3582,7 +3582,7 @@ mkvnode(): *vnode {
return v;
}
-mkfile(v: *vnode, mode: int): *vfile {
+func mkfile(v: *vnode, mode: int): *vfile {
var f: *vfile;
if !v {
v = mkvnode();
@@ -3595,7 +3595,7 @@ mkfile(v: *vnode, mode: int): *vfile {
return f;
}
-mkroot(): *vfile {
+func mkroot(): *vfile {
var f: *vfile;
f = mkfile(0 as *vnode, S_IFDIR);
f.node.nlink = 1;
@@ -3603,7 +3603,7 @@ mkroot(): *vfile {
return f;
}
-efind(d: *vfile, name: *byte, nlen: int): *vent {
+func efind(d: *vfile, name: *byte, nlen: int): *vent {
var e: *vent;
e = d.node.ents;
loop {
@@ -3618,7 +3618,7 @@ efind(d: *vfile, name: *byte, nlen: int): *vent {
return e;
}
-vlink(d: *vfile, name: *byte, nlen: int, f: *vfile) {
+func vlink(d: *vfile, name: *byte, nlen: int, f: *vfile) {
var e: *vent;
e = efind(d, name, nlen);
if e {
@@ -3638,7 +3638,7 @@ vlink(d: *vfile, name: *byte, nlen: int, f: *vfile) {
}
}
-vlookup(d: *vfile, name: *byte, nlen: int, flags: int, mode: int): *vfile {
+func vlookup(d: *vfile, name: *byte, nlen: int, flags: int, mode: int): *vfile {
var f: *vfile;
var e: *vent;
@@ -3686,7 +3686,7 @@ vlookup(d: *vfile, name: *byte, nlen: int, flags: int, mode: int): *vfile {
return f;
}
-vopen(name: *byte, flags: int, mode: int): *vfile {
+func vopen(name: *byte, flags: int, mode: int): *vfile {
var d: *vfile;
var f: *vfile;
var i: int;
@@ -3741,7 +3741,7 @@ vopen(name: *byte, flags: int, mode: int): *vfile {
return f;
}
-vrelease_page(p: *vpage) {
+func vrelease_page(p: *vpage) {
var q: *vpage;
loop {
@@ -3777,7 +3777,7 @@ vrelease_page(p: *vpage) {
}
}
-vrelease(v: *vnode): int {
+func vrelease(v: *vnode): int {
var e: *vent;
var n: *vent;
v.refcount = v.refcount - 1;
@@ -3800,7 +3800,7 @@ vrelease(v: *vnode): int {
return 0;
}
-vclose(f: *vfile): int {
+func vclose(f: *vfile): int {
var n: *vnode;
if !f {
@@ -3819,7 +3819,7 @@ vclose(f: *vfile): int {
return vrelease(n);
}
-vseek(f: *vfile, o: int, w: int): int {
+func vseek(f: *vfile, o: int, w: int): int {
if w == 0 {
f.offset = o;
} else if w == 1 {
@@ -3835,7 +3835,7 @@ vseek(f: *vfile, o: int, w: int): int {
return f.offset;
}
-vwrite_page(v: *vnode, o: int, b: *byte, n: int): int {
+func vwrite_page(v: *vnode, o: int, b: *byte, n: int): int {
var key: int;
var p: *vpage;
var q: *vpage;
@@ -3902,7 +3902,7 @@ vwrite_page(v: *vnode, o: int, b: *byte, n: int): int {
return n;
}
-vread_page(v: *vnode, o: int, b: *byte, n: int): int {
+func vread_page(v: *vnode, o: int, b: *byte, n: int): int {
var key: int;
var p: *vpage;
@@ -3947,7 +3947,7 @@ vread_page(v: *vnode, o: int, b: *byte, n: int): int {
return n;
}
-vwrite(f: *vfile, b: *byte, n: int): int {
+func vwrite(f: *vfile, b: *byte, n: int): int {
var o: int;
var m: int;
var len: int;
@@ -3985,7 +3985,7 @@ vwrite(f: *vfile, b: *byte, n: int): int {
return m;
}
-vread(f: *vfile, b: *byte, n: int): int {
+func vread(f: *vfile, b: *byte, n: int): int {
var o: int;
var m: int;
var len: int;
@@ -4019,21 +4019,21 @@ vread(f: *vfile, b: *byte, n: int): int {
return m;
}
-vdup(f: *vfile): *vfile {
+func vdup(f: *vfile): *vfile {
f.refcount = f.refcount + 1;
return f;
}
-vnodedup(v: *vnode): *vnode {
+func vnodedup(v: *vnode): *vnode {
v.refcount = v.refcount + 1;
return v;
}
-vmkdir(name: *byte): *vfile {
+func vmkdir(name: *byte): *vfile {
return vopen(name, O_DIRECTORY | O_CREAT, 0);
}
-_ssr(r: *regs) {
+func _ssr(r: *regs) {
if r.rax == 0 {
kputs("read\n");
r.rax = -1;
@@ -4101,11 +4101,11 @@ _ssr(r: *regs) {
}
}
-initramfs(len: *int): *byte {
+func initramfs(len: *int): *byte {
return _include("initramfs", len);
}
-parse_hex32(i: int, r: *byte, n: int, x: *int): int {
+func parse_hex32(i: int, r: *byte, n: int, x: *int): int {
var j: int;
var z: int;
@@ -4139,7 +4139,7 @@ parse_hex32(i: int, r: *byte, n: int, x: *int): int {
return i;
}
-parse_initramfs_file(i: int, r: *byte, n: int): int {
+func parse_initramfs_file(i: int, r: *byte, n: int): int {
var ino: int;
var mode: int;
var uid: int;
@@ -4213,7 +4213,7 @@ parse_initramfs_file(i: int, r: *byte, n: int): int {
return i;
}
-parse_initramfs() {
+func parse_initramfs() {
var r: *byte;
var len: int;
var i: int;
@@ -4234,7 +4234,7 @@ parse_initramfs() {
}
}
-initramfs_create(name: *byte, data: *byte, size: int, mode: int) {
+func initramfs_create(name: *byte, data: *byte, size: int, mode: int) {
var type: int;
var n: int;
var ret: int;
@@ -4265,7 +4265,7 @@ initramfs_create(name: *byte, data: *byte, size: int, mode: int) {
}
}
-userswitch(entry: int, stack: int) {
+func userswitch(entry: int, stack: int) {
var r: regs;
var discard: regs;
bzero((&r) as *byte, sizeof(r));
@@ -4278,7 +4278,7 @@ userswitch(entry: int, stack: int) {
taskswitch(&discard, &r);
}
-map_user(vaddr: int): *byte {
+func map_user(vaddr: int): *byte {
var global: *global;
var task: *task;
var pt: *int;
@@ -4324,7 +4324,7 @@ map_user(vaddr: int): *byte {
return 0 as *byte;
}
-vload(f: *vfile, offset: int, vaddr: int, filesz: int, memsz: int): int {
+func vload(f: *vfile, offset: int, vaddr: int, filesz: int, memsz: int): int {
var t: *task;
var i: int;
var o: int;
@@ -4381,7 +4381,7 @@ vload(f: *vfile, offset: int, vaddr: int, filesz: int, memsz: int): int {
return 0;
}
-map_stack(argc: int, argv: **byte, envc: int, envv: **byte): int {
+func map_stack(argc: int, argv: **byte, envc: int, envv: **byte): int {
var m: *int;
var i: int;
var sp: int;
@@ -4456,7 +4456,7 @@ map_stack(argc: int, argv: **byte, envc: int, envv: **byte): int {
return sp;
}
-vexec(prog: *byte, argv: **byte, envp: **byte): int {
+func vexec(prog: *byte, argv: **byte, envp: **byte): int {
var f: *vfile;
var head: *byte;
var args: **byte;
@@ -4746,7 +4746,7 @@ vexec(prog: *byte, argv: **byte, envp: **byte): int {
userswitch(entry, stack);
kdie("unreachable");
-:fail;
+fail:
if f {
vclose(f);
}
@@ -4778,7 +4778,7 @@ vexec(prog: *byte, argv: **byte, envp: **byte): int {
return -1;
}
-task_init(t: *task) {
+func task_init(t: *task) {
// open("/dev/null") => 0
// open("/dev/tty") => 1
// dup(1) => 2
@@ -4787,7 +4787,7 @@ task_init(t: *task) {
}
}
-_kstart(mb: int) {
+func _kstart(mb: int) {
var global: global;
var task: task;
var brk: int;
diff --git a/lib.om b/lib.om
@@ -1,10 +1,10 @@
-die(msg: *byte) {
+func die(msg: *byte) {
fdputs(2, msg);
fdputs(2, "\n");
exit(1);
}
-strlen(s: *byte): int {
+func strlen(s: *byte): int {
var ret: int;
ret = 0;
loop {
@@ -15,7 +15,7 @@ strlen(s: *byte): int {
}
}
-memcmp(a: *byte, b: *byte, n: int): int {
+func memcmp(a: *byte, b: *byte, n: int): int {
var i: int;
i = 0;
@@ -37,7 +37,7 @@ memcmp(a: *byte, b: *byte, n: int): int {
}
}
-strcmp(a: *byte, b: *byte): int {
+func strcmp(a: *byte, b: *byte): int {
var i: int;
i = 0;
@@ -59,7 +59,7 @@ strcmp(a: *byte, b: *byte): int {
}
}
-fdgetc(fd: int): int {
+func fdgetc(fd: int): int {
var b: byte;
var ret: int;
ret = read(fd, &b, 1);
@@ -72,7 +72,7 @@ fdgetc(fd: int): int {
}
}
-fdputc(fd: int, ch: int) {
+func fdputc(fd: int, ch: int) {
var b: byte;
var ret: int;
b = ch as byte;
@@ -82,7 +82,7 @@ fdputc(fd: int, ch: int) {
}
}
-fdputs(fd: int, msg: *byte) {
+func fdputs(fd: int, msg: *byte) {
var len: int;
var ret: int;
var off: int;
@@ -100,7 +100,7 @@ fdputs(fd: int, msg: *byte) {
}
}
-fdputh(fd: int, n: int) {
+func fdputh(fd: int, n: int) {
var d: int;
d = n & 15;
@@ -114,7 +114,7 @@ fdputh(fd: int, n: int) {
fdputc(fd, "0123456789abcdef"[d] as int);
}
-fdputhn(fd: int, x: int, d: int) {
+func fdputhn(fd: int, x: int, d: int) {
loop {
if d == 0 {
break;
@@ -124,23 +124,23 @@ fdputhn(fd: int, x: int, d: int) {
}
}
-fdputh8(fd: int, x: int) {
+func fdputh8(fd: int, x: int) {
fdputhn(fd, x, 8);
}
-fdputh16(fd: int, x: int) {
+func fdputh16(fd: int, x: int) {
fdputhn(fd, x, 16);
}
-fdputh32(fd: int, x: int) {
+func fdputh32(fd: int, x: int) {
fdputhn(fd, x, 32);
}
-fdputh64(fd: int, x: int) {
+func fdputh64(fd: int, x: int) {
fdputhn(fd, x, 64);
}
-fdputd(fd: int, n: int) {
+func fdputd(fd: int, n: int) {
var a: int;
if (n < 0) {
@@ -159,7 +159,7 @@ fdputd(fd: int, n: int) {
fdputc(fd, '0' + a);
}
-xxd_line(line: *byte, offset: int, data: *byte, len: int) {
+func xxd_line(line: *byte, offset: int, data: *byte, len: int) {
var i: int;
var j: int;
var d: *byte;
@@ -233,7 +233,7 @@ xxd_line(line: *byte, offset: int, data: *byte, len: int) {
line[i] = 0 as byte;
}
-fdxxd(fd: int, data: *byte, len: int) {
+func fdxxd(fd: int, data: *byte, len: int) {
var i: int;
var j: int;
loop {
@@ -295,7 +295,7 @@ fdxxd(fd: int, data: *byte, len: int) {
}
}
-bzero(s: *byte, size: int) {
+func bzero(s: *byte, size: int) {
var i: int;
i = 0;
loop {
@@ -307,7 +307,7 @@ bzero(s: *byte, size: int) {
}
}
-memset(dest: *byte, c: int, size: int) {
+func memset(dest: *byte, c: int, size: int) {
var i: int;
if size < 0 {
@@ -324,7 +324,7 @@ memset(dest: *byte, c: int, size: int) {
}
}
-memcpy(dest: *byte, src: *byte, size: int) {
+func memcpy(dest: *byte, src: *byte, size: int) {
var i: int;
if size < 0 {
@@ -352,7 +352,7 @@ memcpy(dest: *byte, src: *byte, size: int) {
}
}
-unhex(dest: *byte, src: *byte): int {
+func unhex(dest: *byte, src: *byte): int {
var i: int;
var dlen: int;
var x: int;
@@ -408,7 +408,7 @@ unhex(dest: *byte, src: *byte): int {
return dlen;
}
-reverse(buf: *byte, len: int) {
+func reverse(buf: *byte, len: int) {
var i: int;
var x: byte;
i = 0;
@@ -427,13 +427,13 @@ reverse(buf: *byte, len: int) {
}
}
-assert(x: int, msg: *byte) {
+func assert(x: int, msg: *byte) {
if !x {
die(msg);
}
}
-readall(fd: int, len: *int, a: *alloc): *byte {
+func readall(fd: int, len: *int, a: *alloc): *byte {
var buf: *byte;
var tmp: *byte;
var cap: int;
@@ -477,7 +477,7 @@ readall(fd: int, len: *int, a: *alloc): *byte {
return buf;
}
-hex2int(s: *byte, len: int, ok: *int): int {
+func hex2int(s: *byte, len: int, ok: *int): int {
var i: int;
var x: int;
var d: int;
@@ -525,7 +525,7 @@ hex2int(s: *byte, len: int, ok: *int): int {
return x;
}
-dec2int(s: *byte, len: int, ok: *int): int {
+func dec2int(s: *byte, len: int, ok: *int): int {
var x: int;
var d: int;
var i: int;
@@ -568,7 +568,7 @@ dec2int(s: *byte, len: int, ok: *int): int {
return x;
}
-hexdig(ch: int, ok: *int): int {
+func hexdig(ch: int, ok: *int): int {
if ch >= '0' && ch <= '9' {
*ok = 1;
return ch - '0';
@@ -585,7 +585,7 @@ hexdig(ch: int, ok: *int): int {
}
-unescape(s: *byte, i: *int, len: int, ok: *int): int {
+func unescape(s: *byte, i: *int, len: int, ok: *int): int {
var ch: int;
var hex: int;
diff --git a/ls.om b/ls.om
@@ -1,4 +1,4 @@
-main(argc: int, argv: **byte, envp: **byte) {
+func main(argc: int, argv: **byte, envp: **byte) {
var fd: int;
var i: int;
var n: int;
diff --git a/mkdir.om b/mkdir.om
@@ -1,4 +1,4 @@
-main(argc: int, argv: **byte, envp: **byte) {
+func main(argc: int, argv: **byte, envp: **byte) {
var i: int;
i = 1;
loop {
diff --git a/mv.om b/mv.om
@@ -1,4 +1,4 @@
-main(argc: int, argv: **byte, envp: **byte) {
+func main(argc: int, argv: **byte, envp: **byte) {
if argc != 3 {
die("usage: mv [src] [dest]");
}
diff --git a/node.om b/node.om
@@ -72,7 +72,7 @@ enum {
N_MOD,
}
-mknode(c: *parser, kind: int, a: *node, b: *node): *node {
+func mknode(c: *parser, kind: int, a: *node, b: *node): *node {
var ret: *node;
ret = alloc(c.a, sizeof(*ret)) as *node;
ret.kind = kind;
@@ -88,15 +88,15 @@ mknode(c: *parser, kind: int, a: *node, b: *node): *node {
return ret;
}
-mknode0(c: *parser, kind: int): *node {
+func mknode0(c: *parser, kind: int): *node {
return mknode(c, kind, 0 as *node, 0 as *node);
}
-mknode1(c: *parser, kind: int, a: *node): *node {
+func mknode1(c: *parser, kind: int, a: *node): *node {
return mknode(c, kind, a, 0 as *node);
}
-concat_program(a: *node, b: *node): *node {
+func concat_program(a: *node, b: *node): *node {
var ret: *node;
if !a {
@@ -121,7 +121,7 @@ concat_program(a: *node, b: *node): *node {
return ret;
}
-node_to_str(kind: int): *byte {
+func node_to_str(kind: int): *byte {
if kind == N_IDENT { return "N_IDENT"; }
if kind == N_NUM { return "N_NUM"; }
if kind == N_CHAR { return "N_CHAR"; }
@@ -184,7 +184,7 @@ node_to_str(kind: int): *byte {
return "(invalid)";
}
-show_node(out: *file, n: *node) {
+func show_node(out: *file, n: *node) {
var i: int;
var ch: int;
var hex: *byte;
diff --git a/parse2.om b/parse2.om
@@ -3,7 +3,7 @@ struct parser {
p: *peg;
}
-setup_parser(a: *alloc): *parser {
+func setup_parser(a: *alloc): *parser {
var c: *parser;
c = alloc(a, sizeof(*c)) as *parser;
@@ -15,7 +15,7 @@ setup_parser(a: *alloc): *parser {
return c;
}
-parse(c: *parser, filename: *byte): *node {
+func parse(c: *parser, filename: *byte): *node {
var f: *file;
var fd: int;
var len: int;
@@ -40,16 +40,16 @@ parse(c: *parser, filename: *byte): *node {
return reconstruct(c, pn);
}
-fillpos(c: *parser, n: *node) {
+func fillpos(c: *parser, n: *node) {
}
-copypos(n: *node, pn: *peg_node) {
+func copypos(n: *node, pn: *peg_node) {
n.filename = pn.filename;
n.lineno = pn.line;
n.colno = pn.col;
}
-reconstruct(c: *parser, pn: *peg_node): *node {
+func reconstruct(c: *parser, pn: *peg_node): *node {
var ret: *node;
var link: **node;
var n: *node;
@@ -89,7 +89,7 @@ reconstruct(c: *parser, pn: *peg_node): *node {
return ret;
}
-reconstruct_intern(c: *parser, pn: *peg_node, s: *byte, len: int): *node {
+func reconstruct_intern(c: *parser, pn: *peg_node, s: *byte, len: int): *node {
var n: *node;
var i: int;
n = mknode0(c, N_IDENT);
@@ -107,12 +107,12 @@ reconstruct_intern(c: *parser, pn: *peg_node, s: *byte, len: int): *node {
return n;
}
-reconstruct_ident(c: *parser, pn: *peg_node): *node {
+func reconstruct_ident(c: *parser, pn: *peg_node): *node {
assert(pn.tag == P_ident, "ident");
return reconstruct_intern(c, pn, pn.str, pn.len);
}
-reconstruct_enum_item(c: *parser, pn: *peg_node): *node {
+func reconstruct_enum_item(c: *parser, pn: *peg_node): *node {
var a: *node;
var b: *node;
var n: *node;
@@ -132,7 +132,7 @@ reconstruct_enum_item(c: *parser, pn: *peg_node): *node {
return n;
}
-reconstruct_enum(c: *parser, pn: *peg_node): *node {
+func reconstruct_enum(c: *parser, pn: *peg_node): *node {
var a: *node;
var link: **node;
var n: *node;
@@ -159,7 +159,7 @@ reconstruct_enum(c: *parser, pn: *peg_node): *node {
return n;
}
-reconstruct_arg_decl(c: *parser, pn: *peg_node): *node {
+func reconstruct_arg_decl(c: *parser, pn: *peg_node): *node {
var a: *node;
var b: *node;
var n: *node;
@@ -174,7 +174,7 @@ reconstruct_arg_decl(c: *parser, pn: *peg_node): *node {
return n;
}
-reconstruct_func_type(c: *parser, pn: *peg_node): *node {
+func reconstruct_func_type(c: *parser, pn: *peg_node): *node {
var a: *node;
var b: *node;
var n: *node;
@@ -208,7 +208,7 @@ reconstruct_func_type(c: *parser, pn: *peg_node): *node {
return n;
}
-reconstruct_type(c: *parser, pn: *peg_node): *node {
+func reconstruct_type(c: *parser, pn: *peg_node): *node {
var n: *node;
assert(pn.tag == P_type, "type");
pn = pn.child;
@@ -233,7 +233,7 @@ reconstruct_type(c: *parser, pn: *peg_node): *node {
}
}
-reconstruct_member_decl(c: *parser, pn: *peg_node): *node {
+func reconstruct_member_decl(c: *parser, pn: *peg_node): *node {
var a: *node;
var b: *node;
var n: *node;
@@ -248,7 +248,7 @@ reconstruct_member_decl(c: *parser, pn: *peg_node): *node {
return n;
}
-reconstruct_member_list(c: *parser, pn: *peg_node): *node {
+func reconstruct_member_list(c: *parser, pn: *peg_node): *node {
var n: *node;
var a: *node;
var ret: *node;
@@ -275,7 +275,7 @@ reconstruct_member_list(c: *parser, pn: *peg_node): *node {
return ret;
}
-reconstruct_struct(c: *parser, pn: *peg_node): *node {
+func reconstruct_struct(c: *parser, pn: *peg_node): *node {
var n: *node;
var a: *node;
var b: *node;
@@ -287,7 +287,7 @@ reconstruct_struct(c: *parser, pn: *peg_node): *node {
return n;
}
-reconstruct_union(c: *parser, pn: *peg_node): *node {
+func reconstruct_union(c: *parser, pn: *peg_node): *node {
var n: *node;
var a: *node;
var b: *node;
@@ -299,12 +299,12 @@ reconstruct_union(c: *parser, pn: *peg_node): *node {
return n;
}
-reconstruct_expr(c: *parser, pn: *peg_node): *node {
+func reconstruct_expr(c: *parser, pn: *peg_node): *node {
assert(pn.tag == P_expr, "expr");
return reconstruct_bool(c, pn.child);
}
-reconstruct_bool(c: *parser, pn: *peg_node): *node {
+func reconstruct_bool(c: *parser, pn: *peg_node): *node {
var ret: *node;
var n: *node;
var link: **node;
@@ -339,7 +339,7 @@ reconstruct_bool(c: *parser, pn: *peg_node): *node {
return ret;
}
-reconstruct_comp(c: *parser, pn: *peg_node): *node {
+func reconstruct_comp(c: *parser, pn: *peg_node): *node {
var a: *node;
var b: *node;
var n: *node;
@@ -377,7 +377,7 @@ reconstruct_comp(c: *parser, pn: *peg_node): *node {
return n;
}
-reconstruct_add(c: *parser, pn: *peg_node): *node {
+func reconstruct_add(c: *parser, pn: *peg_node): *node {
var ret: *node;
var n: *node;
var link: **node;
@@ -415,7 +415,7 @@ reconstruct_add(c: *parser, pn: *peg_node): *node {
return ret;
}
-reconstruct_mul(c: *parser, pn: *peg_node): *node {
+func reconstruct_mul(c: *parser, pn: *peg_node): *node {
var ret: *node;
var n: *node;
var link: **node;
@@ -453,7 +453,7 @@ reconstruct_mul(c: *parser, pn: *peg_node): *node {
return ret;
}
-reconstruct_shift(c: *parser, pn: *peg_node): *node {
+func reconstruct_shift(c: *parser, pn: *peg_node): *node {
var ret: *node;
var n: *node;
var link: **node;
@@ -487,7 +487,7 @@ reconstruct_shift(c: *parser, pn: *peg_node): *node {
return ret;
}
-reconstruct_unary(c: *parser, pn: *peg_node): *node {
+func reconstruct_unary(c: *parser, pn: *peg_node): *node {
var n: *node;
var ret: *node;
var link: **node;
@@ -527,7 +527,7 @@ reconstruct_unary(c: *parser, pn: *peg_node): *node {
}
}
-reconstruct_args(c: *parser, pn: *peg_node): *node {
+func reconstruct_args(c: *parser, pn: *peg_node): *node {
var ret: *node;
var link: **node;
var a: *node;
@@ -553,7 +553,7 @@ reconstruct_args(c: *parser, pn: *peg_node): *node {
return ret;
}
-reconstruct_post(c: *parser, pn: *peg_node): *node {
+func reconstruct_post(c: *parser, pn: *peg_node): *node {
var ret: *node;
var n: *node;
var tag: int;
@@ -595,7 +595,7 @@ reconstruct_post(c: *parser, pn: *peg_node): *node {
return ret;
}
-reconstruct_primary(c: *parser, pn: *peg_node): *node {
+func reconstruct_primary(c: *parser, pn: *peg_node): *node {
assert(pn.tag == P_primary, "primary");
pn = pn.child;
if pn.tag == P_ident {
@@ -617,7 +617,7 @@ reconstruct_primary(c: *parser, pn: *peg_node): *node {
}
}
-reconstruct_hex(c: *parser, pn: *peg_node): *node {
+func reconstruct_hex(c: *parser, pn: *peg_node): *node {
var x: int;
var n: *node;
var ok: int;
@@ -632,7 +632,7 @@ reconstruct_hex(c: *parser, pn: *peg_node): *node {
return n;
}
-reconstruct_dec(c: *parser, pn: *peg_node): *node {
+func reconstruct_dec(c: *parser, pn: *peg_node): *node {
var x: int;
var n: *node;
var ok: int;
@@ -647,7 +647,7 @@ reconstruct_dec(c: *parser, pn: *peg_node): *node {
return n;
}
-reconstruct_str(c: *parser, pn: *peg_node): *node {
+func reconstruct_str(c: *parser, pn: *peg_node): *node {
var i: int;
var j: int;
var len: int;
@@ -678,7 +678,7 @@ reconstruct_str(c: *parser, pn: *peg_node): *node {
return n;
}
-reconstruct_char(c: *parser, pn: *peg_node): *node {
+func reconstruct_char(c: *parser, pn: *peg_node): *node {
var i: int;
var x: int;
var ok: int;
@@ -694,7 +694,7 @@ reconstruct_char(c: *parser, pn: *peg_node): *node {
n.n = x;
return n;
}
-reconstruct_sizeof(c: *parser, pn: *peg_node): *node {
+func reconstruct_sizeof(c: *parser, pn: *peg_node): *node {
var n: *node;
var a: *node;
assert(pn.tag == P_sizeof_expr, "sizeof_expr");
@@ -704,7 +704,7 @@ reconstruct_sizeof(c: *parser, pn: *peg_node): *node {
return n;
}
-reconstruct_stmt(c: *parser, pn: *peg_node): *node {
+func reconstruct_stmt(c: *parser, pn: *peg_node): *node {
assert(pn.tag == P_stmt, "stmt");
pn = pn.child;
if pn.tag == P_if_stmt {
@@ -736,7 +736,7 @@ reconstruct_stmt(c: *parser, pn: *peg_node): *node {
}
}
-reconstruct_if(c: *parser, pn: *peg_node): *node {
+func reconstruct_if(c: *parser, pn: *peg_node): *node {
var ret: *node;
var link: **node;
var a: *node;
@@ -784,7 +784,7 @@ reconstruct_if(c: *parser, pn: *peg_node): *node {
return ret;
}
-reconstruct_loop(c: *parser, pn: *peg_node): *node {
+func reconstruct_loop(c: *parser, pn: *peg_node): *node {
var n: *node;
var a: *node;
assert(pn.tag == P_loop_stmt, "loop_stmt");
@@ -794,7 +794,7 @@ reconstruct_loop(c: *parser, pn: *peg_node): *node {
return n;
}
-reconstruct_break(c: *parser, pn: *peg_node): *node {
+func reconstruct_break(c: *parser, pn: *peg_node): *node {
var n: *node;
assert(pn.tag == P_break_stmt, "break_stmt");
n = mknode0(c, N_BREAK);
@@ -802,7 +802,7 @@ reconstruct_break(c: *parser, pn: *peg_node): *node {
return n;
}
-reconstruct_continue(c: *parser, pn: *peg_node): *node {
+func reconstruct_continue(c: *parser, pn: *peg_node): *node {
var n: *node;
assert(pn.tag == P_continue_stmt, "continue_stmt");
n = mknode0(c, N_CONTINUE);
@@ -810,7 +810,7 @@ reconstruct_continue(c: *parser, pn: *peg_node): *node {
return n;
}
-reconstruct_return(c: *parser, pn: *peg_node): *node {
+func reconstruct_return(c: *parser, pn: *peg_node): *node {
var a: *node;
var n: *node;
assert(pn.tag == P_return_stmt, "return_stmt");
@@ -823,7 +823,7 @@ reconstruct_return(c: *parser, pn: *peg_node): *node {
return n;
}
-reconstruct_var(c: *parser, pn: *peg_node): *node {
+func reconstruct_var(c: *parser, pn: *peg_node): *node {
var a: *node;
var b: *node;
var n: *node;
@@ -835,7 +835,7 @@ reconstruct_var(c: *parser, pn: *peg_node): *node {
return n;
}
-reconstruct_label(c: *parser, pn: *peg_node): *node {
+func reconstruct_label(c: *parser, pn: *peg_node): *node {
var a: *node;
var n: *node;
assert(pn.tag == P_label_stmt, "label_stmt");
@@ -845,7 +845,7 @@ reconstruct_label(c: *parser, pn: *peg_node): *node {
return n;
}
-reconstruct_goto(c: *parser, pn: *peg_node): *node {
+func reconstruct_goto(c: *parser, pn: *peg_node): *node {
var a: *node;
var n: *node;
assert(pn.tag == P_goto_stmt, "goto_stmt");
@@ -855,7 +855,7 @@ reconstruct_goto(c: *parser, pn: *peg_node): *node {
return n;
}
-reconstruct_assign(c: *parser, pn: *peg_node): *node {
+func reconstruct_assign(c: *parser, pn: *peg_node): *node {
var a: *node;
var b: *node;
var n: *node;
@@ -867,17 +867,17 @@ reconstruct_assign(c: *parser, pn: *peg_node): *node {
return n;
}
-reconstruct_expr_stmt(c: *parser, pn: *peg_node): *node {
+func reconstruct_expr_stmt(c: *parser, pn: *peg_node): *node {
assert(pn.tag == P_expr_stmt, "expr_stmt");
return reconstruct_expr(c, pn.child);
}
-reconstruct_empty(c: *parser, pn: *peg_node): *node {
+func reconstruct_empty(c: *parser, pn: *peg_node): *node {
assert(pn.tag == P_empty_stmt, "empty_stmt");
return 0 as *node;
}
-reconstruct_compound(c: *parser, pn: *peg_node): *node {
+func reconstruct_compound(c: *parser, pn: *peg_node): *node {
var ret: *node;
var n: *node;
var a: *node;
@@ -904,7 +904,7 @@ reconstruct_compound(c: *parser, pn: *peg_node): *node {
return ret;
}
-reconstruct_func(c: *parser, pn: *peg_node): *node {
+func reconstruct_func(c: *parser, pn: *peg_node): *node {
var a: *node;
var b: *node;
var d: *node;
diff --git a/peg.om b/peg.om
@@ -14,7 +14,7 @@ enum {
LOOK_AND,
}
-decode_look(n: *peg_node): int {
+func decode_look(n: *peg_node): int {
var ret: int;
ret = LOOK_NORMAL;
@@ -36,7 +36,7 @@ enum {
ONE_OR_MORE,
}
-decode_count(n: *peg_node): int {
+func decode_count(n: *peg_node): int {
var ret: int;
ret = EXACTLY_ONE;
@@ -72,7 +72,7 @@ decode_count(n: *peg_node): int {
}
}
-translate_literal(c: *peg_compiler, n: *peg_node) {
+func translate_literal(c: *peg_compiler, n: *peg_node) {
var i: int;
var len: int;
var ch: int;
@@ -104,7 +104,7 @@ translate_literal(c: *peg_compiler, n: *peg_node) {
fputs(c.out, "\");\n");
}
-parse_escape(s: *byte, i: *int, n: int): int {
+func parse_escape(s: *byte, i: *int, n: int): int {
var nc: int;
var ok: int;
@@ -152,7 +152,7 @@ parse_escape(s: *byte, i: *int, n: int): int {
}
}
-translate_charset(c: *peg_compiler, n: *peg_node) {
+func translate_charset(c: *peg_compiler, n: *peg_node) {
var i: int;
var len: int;
var ch: int;
@@ -256,7 +256,7 @@ translate_charset(c: *peg_compiler, n: *peg_node) {
fputs(c.out, "\");\n");
}
-translate_pattern(c: *peg_compiler, n: *peg_node) {
+func translate_pattern(c: *peg_compiler, n: *peg_node) {
var count: int;
var look: int;
var d: *peg_node;
@@ -371,7 +371,7 @@ translate_pattern(c: *peg_compiler, n: *peg_node) {
}
}
-translate(c: *peg_compiler, n: *peg_node) {
+func translate(c: *peg_compiler, n: *peg_node) {
var v: *peg_node;
// Generate tags for each rule
@@ -394,6 +394,7 @@ translate(c: *peg_compiler, n: *peg_node) {
fputs(c.out, "}\n\n");
// Generate tag to string
+ fputs(c.out, "func ");
fputs(c.out, c.prefix);
fputs(c.out, "tag_to_str(tag: int): *byte {\n");
v = n.child;
@@ -424,7 +425,7 @@ translate(c: *peg_compiler, n: *peg_node) {
}
if v.tag == PEG_rule {
- fputs(c.out, "\npeg_");
+ fputs(c.out, "\nfunc peg_");
fputs(c.out, c.prefix);
fputb(c.out, v.child.str, v.child.len);
fputs(c.out, "(c: *peg): int {\n");
@@ -446,7 +447,7 @@ translate(c: *peg_compiler, n: *peg_node) {
}
}
-setup_peg(a: *alloc, prefix: *byte): *peg_compiler {
+func setup_peg(a: *alloc, prefix: *byte): *peg_compiler {
var c: *peg_compiler;
c = alloc(a, sizeof(*c)) as *peg_compiler;
c.a = a;
@@ -455,7 +456,7 @@ setup_peg(a: *alloc, prefix: *byte): *peg_compiler {
return c;
}
-peg_open_output(c: *peg_compiler, filename: *byte) {
+func peg_open_output(c: *peg_compiler, filename: *byte) {
var fd: int;
var f: *file;
@@ -470,7 +471,7 @@ peg_open_output(c: *peg_compiler, filename: *byte) {
c.out = f;
}
-peg_compile(c: *peg_compiler, filename: *byte) {
+func peg_compile(c: *peg_compiler, filename: *byte) {
var fd: int;
var f: *file;
var src: *byte;
diff --git a/peglib.om b/peglib.om
@@ -62,7 +62,7 @@ struct peg_node {
col: int;
}
-choice(c: *peg) {
+func choice(c: *peg) {
if c.sp == c.limit {
die("choice overflow");
}
@@ -75,14 +75,14 @@ choice(c: *peg) {
c.sp = c.sp + 1;
}
-commit(c: *peg) {
+func commit(c: *peg) {
if c.sp == 0 {
die("commit underflow");
}
c.sp = c.sp - 1;
}
-fail(c: *peg) {
+func fail(c: *peg) {
if c.sp == 0 {
die("fail underflow");
}
@@ -104,7 +104,7 @@ fail(c: *peg) {
c.col = c.stack[c.sp].col;
}
-get(c: *peg): int {
+func get(c: *peg): int {
var ch: int;
if c.pos == c.size {
@@ -127,7 +127,7 @@ get(c: *peg): int {
return ch;
}
-literal(c: *peg, s: *byte): int {
+func literal(c: *peg, s: *byte): int {
var i: int;
var ch: int;
@@ -150,12 +150,12 @@ literal(c: *peg, s: *byte): int {
return 1;
}
-enter(c: *peg, tag: int) {
+func enter(c: *peg, tag: int) {
choice(c);
c.tag = tag;
}
-leave(c: *peg, tag: int) {
+func leave(c: *peg, tag: int) {
var nargs: int;
var start: int;
var line: int;
@@ -196,7 +196,7 @@ leave(c: *peg, tag: int) {
c.depth = c.depth - nargs + 1;
}
-charset(c: *peg, s: *byte): int {
+func charset(c: *peg, s: *byte): int {
var i: int;
var ch: int;
@@ -219,7 +219,7 @@ charset(c: *peg, s: *byte): int {
return 1;
}
-any(c: *peg): int {
+func any(c: *peg): int {
var ch: int;
ch = get(c);
if ch == -1 {
@@ -229,7 +229,7 @@ any(c: *peg): int {
return 1;
}
-construct(c: *peg, sp: int): *peg_node {
+func construct(c: *peg, sp: int): *peg_node {
var i: int;
var j: int;
var nargs: int;
@@ -291,7 +291,7 @@ construct(c: *peg, sp: int): *peg_node {
}
}
-peg_new(filename: *byte, src: *byte, len: int, a: *alloc, grammar: (func(c:*peg):int), tag_to_str: (func(t:int):*byte)): *peg {
+func peg_new(filename: *byte, src: *byte, len: int, a: *alloc, grammar: (func(c:*peg):int), tag_to_str: (func(t:int):*byte)): *peg {
var c: *peg;
c = alloc(a, sizeof(*c)) as *peg;
@@ -333,7 +333,7 @@ peg_new(filename: *byte, src: *byte, len: int, a: *alloc, grammar: (func(c:*peg)
return c;
}
-peg_parse(c: *peg, sp: int): *peg_node {
+func peg_parse(c: *peg, sp: int): *peg_node {
choice(c);
if !c.grammar(c) {
fdputs(2, "syntax error at ");
@@ -356,7 +356,7 @@ peg_parse(c: *peg, sp: int): *peg_node {
return construct(c, sp);
}
-peg_reset(c: *peg, filename: *byte, src: *byte, len: int) {
+func peg_reset(c: *peg, filename: *byte, src: *byte, len: int) {
c.filename = filename;
c.src = src;
c.size = len;
@@ -376,14 +376,14 @@ peg_reset(c: *peg, filename: *byte, src: *byte, len: int) {
c.np = 0;
}
-peg_free(c: *peg) {
+func peg_free(c: *peg) {
free(c.a, c.stack as *byte);
free(c.a, c.nstack as *byte);
free(c.a, c.out as *byte);
free(c.a, c as *byte);
}
-peg_show(c: *peg, out: *file, n: *peg_node) {
+func peg_show(c: *peg, out: *file, n: *peg_node) {
var i: int;
var ch: int;
var hex: *byte;
diff --git a/poly1305.om b/poly1305.om
@@ -13,7 +13,7 @@ struct _poly1305_ctx {
a9: int;
}
-poly1305_reduce(a: *int) {
+func poly1305_reduce(a: *int) {
var c: int;
var k: int;
@@ -32,7 +32,7 @@ poly1305_reduce(a: *int) {
c = c + a[4] + (-4 & (-1 >> 32) & k); a[4] = c & (-1 >> 32); c = c >> 32;
}
-poly1305_load(dest: *int, src: *byte, n: int) {
+func poly1305_load(dest: *int, src: *byte, n: int) {
var i: int;
i = 0;
loop {
@@ -47,7 +47,7 @@ poly1305_load(dest: *int, src: *byte, n: int) {
}
}
-poly1305_digest(dest: *byte, src: *int) {
+func poly1305_digest(dest: *byte, src: *int) {
dest[0] = src[0] as byte;
dest[1] = (src[0] >> 8) as byte;
dest[2] = (src[0] >> 16) as byte;
@@ -66,7 +66,7 @@ poly1305_digest(dest: *byte, src: *int) {
dest[15] = (src[3] >> 24) as byte;
}
-poly1305_add(a: *int, x: *int) {
+func poly1305_add(a: *int, x: *int) {
var c: int;
c = x[0] + a[0]; a[0] = c & (-1 >> 32); c = c >> 32;
c = c + x[1] + a[1]; a[1] = c & (-1 >> 32); c = c >> 32;
@@ -75,7 +75,7 @@ poly1305_add(a: *int, x: *int) {
c = c + x[4] + a[4]; a[4] = c & (-1 >> 32);
}
-poly1305_mul(a: *int, r: *int) {
+func poly1305_mul(a: *int, r: *int) {
var _x: _poly1305_ctx;
var x: *int;
var i: int;
@@ -144,7 +144,7 @@ poly1305_mul(a: *int, r: *int) {
c = c + (x[8] >> 2) * 5 + ((x[9] & 3) << 30) * 5 + a[4]; a[4] = c & (-1 >> 32); c = c >> 32;
}
-poly1305_truncate(dest: *int, key: *byte) {
+func poly1305_truncate(dest: *int, key: *byte) {
poly1305_load(dest, key, 4);
dest[0] = dest[0] & 0x0fffffff;
@@ -154,7 +154,7 @@ poly1305_truncate(dest: *int, key: *byte) {
dest[4] = 0;
}
-poly1305_pad(dest: *int, msg: *byte, n: int) {
+func poly1305_pad(dest: *int, msg: *byte, n: int) {
var _pad: _poly1305_ctx;
var pad: *byte;
var i: int;
@@ -188,7 +188,7 @@ poly1305_pad(dest: *int, msg: *byte, n: int) {
poly1305_load(dest, pad, 5);
}
-poly1305(mac: *byte, key: *byte, msg: *byte, len: int) {
+func poly1305(mac: *byte, key: *byte, msg: *byte, len: int) {
var _a: _poly1305_ctx;
var a: *int;
var _r: _poly1305_ctx;
diff --git a/rm.om b/rm.om
@@ -1,4 +1,4 @@
-main(argc: int, argv: **byte, envp: **byte) {
+func main(argc: int, argv: **byte, envp: **byte) {
var i: int;
i = 1;
loop {
diff --git a/sh.om b/sh.om
@@ -28,7 +28,7 @@ enum {
T_RPAR,
}
-feedc(s: *shell) {
+func feedc(s: *shell) {
if s.script[0] {
s.c = s.script[0] as int;
s.script = &s.script[1];
@@ -43,7 +43,7 @@ feedc(s: *shell) {
s.c = -1;
}
-feedw(s: *shell) {
+func feedw(s: *shell) {
if s.len == s.cap {
die("too long");
}
@@ -55,7 +55,7 @@ feedw(s: *shell) {
feedc(s);
}
-feed_quote(s: *shell) {
+func feed_quote(s: *shell) {
feedc(s);
loop {
if s.c == '\"' {
@@ -78,7 +78,7 @@ feed_quote(s: *shell) {
}
}
-feed_var(s: *shell) {
+func feed_var(s: *shell) {
feedw(s);
if s.c != '{' {
@@ -113,7 +113,7 @@ feed_var(s: *shell) {
}
}
-feed(s: *shell) {
+func feed(s: *shell) {
loop {
if s.c < 0 {
s.tt = T_EOF;
@@ -265,7 +265,7 @@ struct cmd {
other: *cmd;
}
-mkcmd(s: *shell, kind: int): *cmd {
+func mkcmd(s: *shell, kind: int): *cmd {
var c: *cmd;
c = alloc(s.a, sizeof(*c)) as *cmd;
bzero(c as *byte, sizeof(*c));
@@ -275,7 +275,7 @@ mkcmd(s: *shell, kind: int): *cmd {
// command = LF
// | and_or LF
-parse_command(s: *shell): *cmd {
+func parse_command(s: *shell): *cmd {
var c: *cmd;
if s.tt == T_LF {
@@ -300,7 +300,7 @@ parse_command(s: *shell): *cmd {
// and_or = pipeline
// | pipeline '||' and_or
// | pipeine '&&' and_or
-parse_and_or(s: *shell): *cmd {
+func parse_and_or(s: *shell): *cmd {
var c: *cmd;
var link: **cmd;
var p: *cmd;
@@ -348,7 +348,7 @@ parse_and_or(s: *shell): *cmd {
// pipeline = '!' pipeline
// | compound
// | compound '|' pipeline
-parse_pipeline(s: *shell): *cmd {
+func parse_pipeline(s: *shell): *cmd {
var neg: int;
var c: *cmd;
var link: **cmd;
@@ -398,7 +398,7 @@ parse_pipeline(s: *shell): *cmd {
}
// compound = subshell | if | for | simple
-parse_compound(s: *shell): *cmd {
+func parse_compound(s: *shell): *cmd {
var c: *cmd;
c = parse_subshell(s);
@@ -421,7 +421,7 @@ parse_compound(s: *shell): *cmd {
// subshell = '(' command_list ')'
// | subshell redir_list
-parse_subshell(s: *shell): *cmd {
+func parse_subshell(s: *shell): *cmd {
var body: *cmd;
var link: **cmd;
var t: *cmd;
@@ -453,7 +453,7 @@ parse_subshell(s: *shell): *cmd {
return t;
}
-parse_keyword(s: *shell, key: *byte): int {
+func parse_keyword(s: *shell, key: *byte): int {
if s.tt != T_WORD {
return 0;
}
@@ -473,7 +473,7 @@ parse_keyword(s: *shell, key: *byte): int {
// for = 'for' NAME 'in' word_list LF 'do' command_list 'done'
// | for redir_list
-parse_for(s: *shell): *cmd {
+func parse_for(s: *shell): *cmd {
var arg: *cmd;
var arg_link: **cmd;
var body: *cmd;
@@ -543,7 +543,7 @@ parse_for(s: *shell): *cmd {
// | redir
// | word simple
// | redir simple
-parse_simple(s: *shell): *cmd {
+func parse_simple(s: *shell): *cmd {
var arg: *cmd;
var arg_link: **cmd;
var redir: *cmd;
@@ -599,7 +599,7 @@ parse_simple(s: *shell): *cmd {
// redir_list =
// | redir redir_list
-parse_redir_list(s: *shell): *cmd {
+func parse_redir_list(s: *shell): *cmd {
var c: *cmd;
var t: *cmd;
var link: **cmd;
@@ -617,7 +617,7 @@ parse_redir_list(s: *shell): *cmd {
}
}
-take(s: *shell): *byte {
+func take(s: *shell): *byte {
var w: *byte;
if s.tt != T_WORD {
@@ -634,7 +634,7 @@ take(s: *shell): *byte {
// redir = '>' word
// | '<' word
-parse_redir(s: *shell): *cmd {
+func parse_redir(s: *shell): *cmd {
var c: *cmd;
var w: *byte;
@@ -663,7 +663,7 @@ parse_redir(s: *shell): *cmd {
return 0 as *cmd;
}
-execute_command(s: *shell, c: *cmd) {
+func execute_command(s: *shell, c: *cmd) {
if c.kind == C_NOP {
return;
} else if c.kind == C_CMD {
@@ -710,7 +710,7 @@ execute_command(s: *shell, c: *cmd) {
}
}
-main(argc: int, argv: **byte, envp: **byte) {
+func main(argc: int, argv: **byte, envp: **byte) {
var a: alloc;
var s: shell;
var c: *cmd;
diff --git a/sha256.om b/sha256.om
@@ -40,7 +40,7 @@ struct _sha256_digest {
d4: int;
}
-sha256_init(r: *sha256_ctx) {
+func sha256_init(r: *sha256_ctx) {
r.a = 0x6a09e667;
r.b = 0xbb67ae85;
r.c = 0x3c6ef372;
@@ -52,11 +52,11 @@ sha256_init(r: *sha256_ctx) {
r.len = 0;
}
-ror32(x: int, n: int): int {
+func ror32(x: int, n: int): int {
return ((x >> n) | (x << (32 - n))) & (-1 >> 32);
}
-sha256_round(ctx: *sha256_ctx, w: *int, k: int) {
+func sha256_round(ctx: *sha256_ctx, w: *int, k: int) {
var t1: int;
var t2: int;
var s0: int;
@@ -103,7 +103,7 @@ sha256_round(ctx: *sha256_ctx, w: *int, k: int) {
ctx.a = (t1 + t2) & (-1 >> 32);
}
-sha256_rounds(ctx: *sha256_ctx, block: *byte) {
+func sha256_rounds(ctx: *sha256_ctx, block: *byte) {
var _w: _sha256_block;
var w: *int;
var r: sha256_ctx;
@@ -258,7 +258,7 @@ sha256_rounds(ctx: *sha256_ctx, block: *byte) {
ctx.h = (ctx.h + r.h) & (-1 >> 32);
}
-sha256_finish(ctx: *sha256_ctx, nblocks: int, data: *byte, len: int) {
+func sha256_finish(ctx: *sha256_ctx, nblocks: int, data: *byte, len: int) {
var _final: sha256_ctx;
var final: *byte;
var pad: int;
@@ -333,7 +333,7 @@ sha256_finish(ctx: *sha256_ctx, nblocks: int, data: *byte, len: int) {
sha256_rounds(ctx, final);
}
-sha256_digest(digest: *byte, ctx: *sha256_ctx) {
+func sha256_digest(digest: *byte, ctx: *sha256_ctx) {
digest[0] = (ctx.a >> 24) as byte;
digest[1] = (ctx.a >> 16) as byte;
digest[2] = (ctx.a >> 8) as byte;
@@ -368,14 +368,14 @@ sha256_digest(digest: *byte, ctx: *sha256_ctx) {
digest[31] = ctx.h as byte;
}
-sha256(digest: *byte, data: *byte, dlen: int) {
+func sha256(digest: *byte, data: *byte, dlen: int) {
var ctx: sha256_ctx;
sha256_init(&ctx);
sha256_finish(&ctx, 0, data, dlen);
sha256_digest(digest, &ctx);
}
-sha256_hmac(mac: *byte, key: *byte, klen: int, data: *byte, dlen: int) {
+func sha256_hmac(mac: *byte, key: *byte, klen: int, data: *byte, dlen: int) {
var _digest: _sha256_block;
var digest: *byte;
var _ipad: _sha256_block;
@@ -438,7 +438,7 @@ sha256_hmac(mac: *byte, key: *byte, klen: int, data: *byte, dlen: int) {
sha256_digest(mac, &ctx);
}
-sha256_update(ctx: *sha256_ctx, msg: *byte, len: int) {
+func sha256_update(ctx: *sha256_ctx, msg: *byte, len: int) {
var o: int;
var r: int;
@@ -473,7 +473,7 @@ sha256_update(ctx: *sha256_ctx, msg: *byte, len: int) {
}
}
-sha256_final(digest: *byte, ctx: *sha256_ctx) {
+func sha256_final(digest: *byte, ctx: *sha256_ctx) {
sha256_finish(ctx, ctx.len >> 6, (&ctx.block) as *byte, ctx.len & 63);
sha256_digest(digest, ctx);
}
diff --git a/sha512.om b/sha512.om
@@ -36,7 +36,7 @@ struct _sha512_digest {
c: sha512_ctx;
}
-sha512_init(ctx: *sha512_ctx) {
+func sha512_init(ctx: *sha512_ctx) {
ctx.a = (0x6a09e667 << 32) | 0xf3bcc908;
ctx.b = (0xbb67ae85 << 32) | 0x84caa73b;
ctx.c = (0x3c6ef372 << 32) | 0xfe94f82b;
@@ -48,11 +48,11 @@ sha512_init(ctx: *sha512_ctx) {
ctx.len = 0;
}
-ror64(x: int, n: int): int {
+func ror64(x: int, n: int): int {
return (x >> n) | (x << (64 - n));
}
-sha512_round(r: *sha512_ctx, w: *int, k: int) {
+func sha512_round(r: *sha512_ctx, w: *int, k: int) {
var s0: int;
var s1: int;
var t1: int;
@@ -96,7 +96,7 @@ sha512_round(r: *sha512_ctx, w: *int, k: int) {
w[15] = w16;
}
-sha512_rounds(ctx: *sha512_ctx, block: *byte) {
+func sha512_rounds(ctx: *sha512_ctx, block: *byte) {
var r: sha512_ctx;
var _w: _sha512_block;
var w: *int;
@@ -222,7 +222,7 @@ sha512_rounds(ctx: *sha512_ctx, block: *byte) {
ctx.h = ctx.h + r.h;
}
-sha512_finish(ctx: *sha512_ctx, nblocks: int, data: *byte, len: int) {
+func sha512_finish(ctx: *sha512_ctx, nblocks: int, data: *byte, len: int) {
var _final: _sha512_block;
var final: *byte;
var pad: int;
@@ -263,7 +263,7 @@ sha512_finish(ctx: *sha512_ctx, nblocks: int, data: *byte, len: int) {
sha512_rounds(ctx, final);
}
-sha512_digest(digest: *byte, ctx: *sha512_ctx) {
+func sha512_digest(digest: *byte, ctx: *sha512_ctx) {
var r: *int;
var i: int;
r = &ctx.a;
@@ -284,14 +284,14 @@ sha512_digest(digest: *byte, ctx: *sha512_ctx) {
}
}
-sha512(digest: *byte, data: *byte, dlen: int) {
+func sha512(digest: *byte, data: *byte, dlen: int) {
var ctx: sha512_ctx;
sha512_init(&ctx);
sha512_finish(&ctx, 0, data, dlen);
sha512_digest(digest, &ctx);
}
-sha512_hmac(mac: *byte, key: *byte, klen: int, data: *byte, dlen: int) {
+func sha512_hmac(mac: *byte, key: *byte, klen: int, data: *byte, dlen: int) {
var _digest: _sha512_block;
var digest: *byte;
var _ipad: _sha512_block;
@@ -335,7 +335,7 @@ sha512_hmac(mac: *byte, key: *byte, klen: int, data: *byte, dlen: int) {
sha512_digest(mac, &ctx);
}
-sha512_update(ctx: *sha512_ctx, msg: *byte, len: int) {
+func sha512_update(ctx: *sha512_ctx, msg: *byte, len: int) {
var o: int;
var r: int;
@@ -370,7 +370,7 @@ sha512_update(ctx: *sha512_ctx, msg: *byte, len: int) {
}
}
-sha512_final(digest: *byte, ctx: *sha512_ctx) {
+func sha512_final(digest: *byte, ctx: *sha512_ctx) {
sha512_finish(ctx, ctx.len >> 7, (&ctx.block) as *byte, ctx.len & 127);
sha512_digest(digest, ctx);
}
diff --git a/sshd.om b/sshd.om
@@ -1,4 +1,4 @@
-read_line(fd: int, buf: *byte, max: int): int {
+func read_line(fd: int, buf: *byte, max: int): int {
var len: int;
var ret: int;
var c: byte;
@@ -32,7 +32,7 @@ read_line(fd: int, buf: *byte, max: int): int {
}
}
-writeall(fd: int, buf: *byte, n: int): int {
+func writeall(fd: int, buf: *byte, n: int): int {
var ret: int;
loop {
if n == 0 {
@@ -52,7 +52,7 @@ writeall(fd: int, buf: *byte, n: int): int {
}
}
-read_fill(fd: int, buf: *byte, n: int): int {
+func read_fill(fd: int, buf: *byte, n: int): int {
var ret: int;
loop {
if n == 0 {
@@ -73,8 +73,8 @@ read_fill(fd: int, buf: *byte, n: int): int {
}
}
-_rdrand(): int;
-read_rand(buf: *byte, n: int) {
+func _rdrand(): int;
+func read_rand(buf: *byte, n: int) {
var i: int;
i = 0;
loop {
@@ -91,7 +91,7 @@ struct _ssh_nonce {
x1: int;
}
-read_frame(ctx: *sshd_ctx) {
+func read_frame(ctx: *sshd_ctx) {
var len: int;
var padlen: int;
var minlen: int;
@@ -195,7 +195,7 @@ read_frame(ctx: *sshd_ctx) {
ctx.index = 0;
}
-write_frame(ctx: *sshd_ctx) {
+func write_frame(ctx: *sshd_ctx) {
var len: int;
var padlen: int;
var minlen: int;
@@ -353,7 +353,7 @@ struct ssh_cr_exit_signal {
lang: ssh_str;
}
-doversion(ctx: *sshd_ctx) {
+func doversion(ctx: *sshd_ctx) {
var ident: *byte;
var n: int;
@@ -387,7 +387,7 @@ struct ssh_disconnect {
lang: ssh_str;
}
-decode_disconnect(p: *ssh_disconnect, ctx: *sshd_ctx) {
+func decode_disconnect(p: *ssh_disconnect, ctx: *sshd_ctx) {
var tag: int;
decode_u8(&tag, ctx);
if tag != SSH_MSG_DISCONNECT {
@@ -401,7 +401,7 @@ decode_disconnect(p: *ssh_disconnect, ctx: *sshd_ctx) {
}
}
-encode_disconnect(p: *ssh_disconnect, ctx: *sshd_ctx) {
+func encode_disconnect(p: *ssh_disconnect, ctx: *sshd_ctx) {
var tag: int;
clear_frame(ctx);
tag = SSH_MSG_DISCONNECT;
@@ -427,7 +427,7 @@ struct ssh_kexinit {
reserved: int;
}
-decode_u8(s: *int, ctx: *sshd_ctx) {
+func decode_u8(s: *int, ctx: *sshd_ctx) {
if ctx.framelen < 1 || ctx.index > ctx.framelen - 1 {
die("u8 truncated");
}
@@ -435,7 +435,7 @@ decode_u8(s: *int, ctx: *sshd_ctx) {
ctx.index = ctx.index + 1;
}
-decode_u32(s: *int, ctx: *sshd_ctx) {
+func decode_u32(s: *int, ctx: *sshd_ctx) {
if ctx.framelen < 4 || ctx.index > ctx.framelen - 4 {
die("u32 truncated");
}
@@ -446,7 +446,7 @@ decode_u32(s: *int, ctx: *sshd_ctx) {
ctx.index = ctx.index + 4;
}
-decode_str(s: *ssh_str, ctx: *sshd_ctx) {
+func decode_str(s: *ssh_str, ctx: *sshd_ctx) {
decode_u32(&s.len, ctx);
if s.len < 0 || ctx.framelen < s.len || ctx.index > ctx.framelen - s.len {
die("str truncated");
@@ -455,7 +455,7 @@ decode_str(s: *ssh_str, ctx: *sshd_ctx) {
ctx.index = ctx.index + s.len;
}
-decode_cookie(s: *ssh_str, ctx: *sshd_ctx) {
+func decode_cookie(s: *ssh_str, ctx: *sshd_ctx) {
if ctx.framelen < 16 || ctx.index > ctx.framelen - 16 {
die("cookie truncated");
}
@@ -464,12 +464,12 @@ decode_cookie(s: *ssh_str, ctx: *sshd_ctx) {
ctx.index = ctx.index + 16;
}
-decode_bool(s: *int, ctx: *sshd_ctx) {
+func decode_bool(s: *int, ctx: *sshd_ctx) {
decode_u8(s, ctx);
*s = (*s != 0);
}
-decode_kexinit(kex: *ssh_kexinit, ctx: *sshd_ctx) {
+func decode_kexinit(kex: *ssh_kexinit, ctx: *sshd_ctx) {
var tag: int;
decode_u8(&tag, ctx);
if tag != SSH_MSG_KEXINIT {
@@ -493,7 +493,7 @@ decode_kexinit(kex: *ssh_kexinit, ctx: *sshd_ctx) {
}
}
-decode_newkeys(kex: *ssh_newkeys, ctx: *sshd_ctx) {
+func decode_newkeys(kex: *ssh_newkeys, ctx: *sshd_ctx) {
var tag: int;
decode_u8(&tag, ctx);
if tag != SSH_MSG_NEWKEYS {
@@ -508,7 +508,7 @@ struct ssh_ecdh_init {
qc: ssh_str;
}
-decode_ecdh_init(dh: *ssh_ecdh_init, ctx: *sshd_ctx) {
+func decode_ecdh_init(dh: *ssh_ecdh_init, ctx: *sshd_ctx) {
var tag: int;
decode_u8(&tag, ctx);
if tag != SSH_MSG_ECDH_INIT {
@@ -524,7 +524,7 @@ struct ssh_service_request {
name: ssh_str;
}
-decode_service_request(sr: *ssh_service_request, ctx: *sshd_ctx) {
+func decode_service_request(sr: *ssh_service_request, ctx: *sshd_ctx) {
var tag: int;
decode_u8(&tag, ctx);
if tag != SSH_MSG_SERVICE_REQUEST {
@@ -546,7 +546,7 @@ struct ssh_userauth_request {
sig: ssh_str;
}
-decode_userauth_request(ar: *ssh_userauth_request, ctx: *sshd_ctx) {
+func decode_userauth_request(ar: *ssh_userauth_request, ctx: *sshd_ctx) {
var tag: int;
decode_u8(&tag, ctx);
if tag != SSH_MSG_USERAUTH_REQUEST {
@@ -580,7 +580,7 @@ decode_userauth_request(ar: *ssh_userauth_request, ctx: *sshd_ctx) {
}
}
-set_str(s: *ssh_str, v: *byte) {
+func set_str(s: *ssh_str, v: *byte) {
s.s = v;
s.len = strlen(v);
}
@@ -590,17 +590,17 @@ struct _ssh_cookie {
x1: int;
}
-clear_frame(ctx: *sshd_ctx) {
+func clear_frame(ctx: *sshd_ctx) {
ctx.frame = &ctx.buf[5];
ctx.framelen = ctx.bufsz - 5;
ctx.index = 0;
}
-finish_frame(ctx: *sshd_ctx) {
+func finish_frame(ctx: *sshd_ctx) {
ctx.framelen = ctx.index;
}
-encode_u8(x: *int, ctx: *sshd_ctx) {
+func encode_u8(x: *int, ctx: *sshd_ctx) {
if ctx.framelen < 1 || ctx.index > ctx.framelen - 1 {
die("u8 truncated");
}
@@ -608,7 +608,7 @@ encode_u8(x: *int, ctx: *sshd_ctx) {
ctx.index = ctx.index + 1;
}
-encode_cookie(x: *ssh_str, ctx: *sshd_ctx) {
+func encode_cookie(x: *ssh_str, ctx: *sshd_ctx) {
if x.len != 16 || ctx.framelen < 16 || ctx.index > ctx.framelen - 16 {
die("cookie truncated");
}
@@ -616,13 +616,13 @@ encode_cookie(x: *ssh_str, ctx: *sshd_ctx) {
ctx.index = ctx.index + 16;
}
-encode_bool(x: *int, ctx: *sshd_ctx) {
+func encode_bool(x: *int, ctx: *sshd_ctx) {
var y: int;
y = *x != 0;
encode_u8(&y, ctx);
}
-encode_u32(x: *int, ctx: *sshd_ctx) {
+func encode_u32(x: *int, ctx: *sshd_ctx) {
if ctx.framelen < 4 || ctx.index > ctx.framelen - 4 {
die("u32 truncated");
}
@@ -633,7 +633,7 @@ encode_u32(x: *int, ctx: *sshd_ctx) {
ctx.index = ctx.index + 4;
}
-encode_blob(x: *ssh_blob, ctx: *sshd_ctx) {
+func encode_blob(x: *ssh_blob, ctx: *sshd_ctx) {
var len: int;
len = x.alg.len + x.blob.len + 8;
encode_u32(&len, ctx);
@@ -641,7 +641,7 @@ encode_blob(x: *ssh_blob, ctx: *sshd_ctx) {
encode_str(&x.blob, ctx);
}
-encode_str(x: *ssh_str, ctx: *sshd_ctx) {
+func encode_str(x: *ssh_str, ctx: *sshd_ctx) {
encode_u32(&x.len, ctx);
if ctx.framelen < x.len || ctx.index > ctx.framelen - x.len {
die("str truncated");
@@ -650,7 +650,7 @@ encode_str(x: *ssh_str, ctx: *sshd_ctx) {
ctx.index = ctx.index + x.len;
}
-encode_kexinit(kex: *ssh_kexinit, ctx: *sshd_ctx) {
+func encode_kexinit(kex: *ssh_kexinit, ctx: *sshd_ctx) {
var tag: int;
clear_frame(ctx);
tag = SSH_MSG_KEXINIT;
@@ -674,7 +674,7 @@ encode_kexinit(kex: *ssh_kexinit, ctx: *sshd_ctx) {
struct ssh_newkeys {
}
-encode_newkeys(kex: *ssh_newkeys, ctx: *sshd_ctx) {
+func encode_newkeys(kex: *ssh_newkeys, ctx: *sshd_ctx) {
var tag: int;
clear_frame(ctx);
tag = SSH_MSG_NEWKEYS;
@@ -686,7 +686,7 @@ struct ssh_service_accept {
name: ssh_str;
}
-encode_service_accept(sa: *ssh_service_accept, ctx: *sshd_ctx) {
+func encode_service_accept(sa: *ssh_service_accept, ctx: *sshd_ctx) {
var tag: int;
clear_frame(ctx);
tag = SSH_MSG_SERVICE_ACCEPT;
@@ -700,7 +700,7 @@ struct ssh_userauth_failure {
partial_success: int;
}
-encode_userauth_failure(uf: *ssh_userauth_failure, ctx: *sshd_ctx) {
+func encode_userauth_failure(uf: *ssh_userauth_failure, ctx: *sshd_ctx) {
var tag: int;
clear_frame(ctx);
tag = SSH_MSG_USERAUTH_FAILURE;
@@ -713,7 +713,7 @@ encode_userauth_failure(uf: *ssh_userauth_failure, ctx: *sshd_ctx) {
struct ssh_userauth_success {
}
-encode_userauth_success(us: *ssh_userauth_success, ctx: *sshd_ctx) {
+func encode_userauth_success(us: *ssh_userauth_success, ctx: *sshd_ctx) {
var tag: int;
clear_frame(ctx);
tag = SSH_MSG_USERAUTH_SUCCESS;
@@ -726,7 +726,7 @@ struct ssh_userauth_pk_ok {
pub: ssh_str;
}
-encode_userauth_pk_ok(ok: *ssh_userauth_pk_ok, ctx: *sshd_ctx) {
+func encode_userauth_pk_ok(ok: *ssh_userauth_pk_ok, ctx: *sshd_ctx) {
var tag: int;
clear_frame(ctx);
tag = SSH_MSG_USERAUTH_PK_OK;
@@ -747,13 +747,13 @@ struct ssh_ecdh_reply {
sig: ssh_blob;
}
-set_blob(d: *ssh_blob, alg: *byte, b: *byte, n: int) {
+func set_blob(d: *ssh_blob, alg: *byte, b: *byte, n: int) {
set_str(&d.alg, alg);
d.blob.s = b;
d.blob.len = n;
}
-encode_ecdh_reply(dh: *ssh_ecdh_reply, ctx: *sshd_ctx) {
+func encode_ecdh_reply(dh: *ssh_ecdh_reply, ctx: *sshd_ctx) {
var tag: int;
clear_frame(ctx);
tag = SSH_MSG_ECDH_REPLY;
@@ -764,7 +764,7 @@ encode_ecdh_reply(dh: *ssh_ecdh_reply, ctx: *sshd_ctx) {
finish_frame(ctx);
}
-ssh_u32_sha256_update(ctx: *sha256_ctx, n: int) {
+func ssh_u32_sha256_update(ctx: *sha256_ctx, n: int) {
var a: byte;
a = (n >> 24) as byte;
sha256_update(ctx, &a, 1);
@@ -776,18 +776,18 @@ ssh_u32_sha256_update(ctx: *sha256_ctx, n: int) {
sha256_update(ctx, &a, 1);
}
-ssh_blob_sha256_update(ctx: *sha256_ctx, b: *ssh_blob) {
+func ssh_blob_sha256_update(ctx: *sha256_ctx, b: *ssh_blob) {
ssh_u32_sha256_update(ctx, b.alg.len + b.blob.len + 8);
ssh_str_sha256_update(ctx, b.alg.s, b.alg.len);
ssh_str_sha256_update(ctx, b.blob.s, b.blob.len);
}
-ssh_str_sha256_update(ctx: *sha256_ctx, b: *byte, n: int) {
+func ssh_str_sha256_update(ctx: *sha256_ctx, b: *byte, n: int) {
ssh_u32_sha256_update(ctx, n);
sha256_update(ctx, b, n);
}
-ssh_mpint_sha256_update(ctx: *sha256_ctx, b: *byte, n: int) {
+func ssh_mpint_sha256_update(ctx: *sha256_ctx, b: *byte, n: int) {
var a: byte;
loop {
@@ -821,7 +821,7 @@ struct ssh_channel_open {
maximum_packet_size: int;
}
-decode_channel_open(p: *ssh_channel_open, ctx: *sshd_ctx) {
+func decode_channel_open(p: *ssh_channel_open, ctx: *sshd_ctx) {
var tag: int;
decode_u8(&tag, ctx);
if tag != SSH_MSG_CHANNEL_OPEN {
@@ -845,7 +845,7 @@ struct ssh_channel_open_confirmation {
maximum_packet_size: int;
}
-encode_channel_open_confirmation(p: *ssh_channel_open_confirmation, ctx: *sshd_ctx) {
+func encode_channel_open_confirmation(p: *ssh_channel_open_confirmation, ctx: *sshd_ctx) {
var tag: int;
clear_frame(ctx);
tag = SSH_MSG_CHANNEL_OPEN_CONFIRMATION;
@@ -867,7 +867,7 @@ struct ssh_channel_open_failure {
lang: ssh_str;
}
-encode_channel_open_failure(p: *ssh_channel_open_failure, ctx: *sshd_ctx) {
+func encode_channel_open_failure(p: *ssh_channel_open_failure, ctx: *sshd_ctx) {
var tag: int;
clear_frame(ctx);
tag = SSH_MSG_CHANNEL_OPEN_FAILURE;
@@ -884,7 +884,7 @@ struct ssh_channel_window_adjust {
window: int;
}
-decode_channel_window_adjust(p: *ssh_channel_window_adjust, ctx: *sshd_ctx) {
+func decode_channel_window_adjust(p: *ssh_channel_window_adjust, ctx: *sshd_ctx) {
var tag: int;
decode_u8(&tag, ctx);
if tag != SSH_MSG_CHANNEL_WINDOW_ADJUST {
@@ -897,7 +897,7 @@ decode_channel_window_adjust(p: *ssh_channel_window_adjust, ctx: *sshd_ctx) {
}
}
-encode_channel_window_adjust(p: *ssh_channel_window_adjust, ctx: *sshd_ctx) {
+func encode_channel_window_adjust(p: *ssh_channel_window_adjust, ctx: *sshd_ctx) {
var tag: int;
clear_frame(ctx);
tag = SSH_MSG_CHANNEL_WINDOW_ADJUST;
@@ -912,7 +912,7 @@ struct ssh_channel_data {
data: ssh_str;
}
-decode_channel_data(p: *ssh_channel_data, ctx: *sshd_ctx) {
+func decode_channel_data(p: *ssh_channel_data, ctx: *sshd_ctx) {
var tag: int;
decode_u8(&tag, ctx);
if tag != SSH_MSG_CHANNEL_DATA {
@@ -925,7 +925,7 @@ decode_channel_data(p: *ssh_channel_data, ctx: *sshd_ctx) {
}
}
-encode_channel_data(p: *ssh_channel_data, ctx: *sshd_ctx) {
+func encode_channel_data(p: *ssh_channel_data, ctx: *sshd_ctx) {
var tag: int;
clear_frame(ctx);
tag = SSH_MSG_CHANNEL_DATA;
@@ -941,7 +941,7 @@ struct ssh_channel_extended_data {
data: ssh_str;
}
-encode_channel_extended_data(p: *ssh_channel_extended_data, ctx: *sshd_ctx) {
+func encode_channel_extended_data(p: *ssh_channel_extended_data, ctx: *sshd_ctx) {
var tag: int;
clear_frame(ctx);
tag = SSH_MSG_CHANNEL_EXTENDED_DATA;
@@ -956,7 +956,7 @@ struct ssh_channel_eof {
channel: int;
}
-decode_channel_eof(p: *ssh_channel_eof, ctx: *sshd_ctx) {
+func decode_channel_eof(p: *ssh_channel_eof, ctx: *sshd_ctx) {
var tag: int;
decode_u8(&tag, ctx);
if tag != SSH_MSG_CHANNEL_EOF {
@@ -968,7 +968,7 @@ decode_channel_eof(p: *ssh_channel_eof, ctx: *sshd_ctx) {
}
}
-encode_channel_eof(p: *ssh_channel_eof, ctx: *sshd_ctx) {
+func encode_channel_eof(p: *ssh_channel_eof, ctx: *sshd_ctx) {
var tag: int;
clear_frame(ctx);
tag = SSH_MSG_CHANNEL_EOF;
@@ -981,7 +981,7 @@ struct ssh_channel_close {
channel: int;
}
-decode_channel_close(p: *ssh_channel_close, ctx: *sshd_ctx) {
+func decode_channel_close(p: *ssh_channel_close, ctx: *sshd_ctx) {
var tag: int;
decode_u8(&tag, ctx);
if tag != SSH_MSG_CHANNEL_CLOSE {
@@ -993,7 +993,7 @@ decode_channel_close(p: *ssh_channel_close, ctx: *sshd_ctx) {
}
}
-encode_channel_close(p: *ssh_channel_close, ctx: *sshd_ctx) {
+func encode_channel_close(p: *ssh_channel_close, ctx: *sshd_ctx) {
var tag: int;
clear_frame(ctx);
tag = SSH_MSG_CHANNEL_CLOSE;
@@ -1017,7 +1017,7 @@ struct ssh_channel_request {
exit_signal: ssh_cr_exit_signal;
}
-decode_channel_request(p: *ssh_channel_request, ctx: *sshd_ctx) {
+func decode_channel_request(p: *ssh_channel_request, ctx: *sshd_ctx) {
var tag: int;
bzero(p as *byte, sizeof(*p));
decode_u8(&tag, ctx);
@@ -1060,7 +1060,7 @@ decode_channel_request(p: *ssh_channel_request, ctx: *sshd_ctx) {
}
}
-encode_channel_request(p: *ssh_channel_request, ctx: *sshd_ctx) {
+func encode_channel_request(p: *ssh_channel_request, ctx: *sshd_ctx) {
var tag: int;
clear_frame(ctx);
tag = SSH_MSG_CHANNEL_REQUEST;
@@ -1092,7 +1092,7 @@ struct ssh_channel_success {
channel: int;
}
-encode_channel_success(p: *ssh_channel_success, ctx: *sshd_ctx) {
+func encode_channel_success(p: *ssh_channel_success, ctx: *sshd_ctx) {
var tag: int;
clear_frame(ctx);
tag = SSH_MSG_CHANNEL_SUCCESS;
@@ -1105,7 +1105,7 @@ struct ssh_channel_failure {
channel: int;
}
-encode_channel_failure(p: *ssh_channel_failure, ctx: *sshd_ctx) {
+func encode_channel_failure(p: *ssh_channel_failure, ctx: *sshd_ctx) {
var tag: int;
clear_frame(ctx);
tag = SSH_MSG_CHANNEL_FAILURE;
@@ -1114,7 +1114,7 @@ encode_channel_failure(p: *ssh_channel_failure, ctx: *sshd_ctx) {
finish_frame(ctx);
}
-dokex(ctx: *sshd_ctx) {
+func dokex(ctx: *sshd_ctx) {
var cookie: _ssh_cookie;
var ckex: ssh_kexinit;
var skex: ssh_kexinit;
@@ -1228,7 +1228,7 @@ dokex(ctx: *sshd_ctx) {
ctx.en_client_to_server = 1;
}
-kex_key(key: *byte, a: *byte, ctx: *sshd_ctx) {
+func kex_key(key: *byte, a: *byte, ctx: *sshd_ctx) {
var h: sha256_ctx;
sha256_init(&h);
@@ -1245,13 +1245,13 @@ kex_key(key: *byte, a: *byte, ctx: *sshd_ctx) {
sha256_final(&key[32], &h);
}
-ssh_streq(a: *ssh_str, b: *byte): int {
+func ssh_streq(a: *ssh_str, b: *byte): int {
var len: int;
len = strlen(b);
return a.len == len && memcmp(a.s, b, len) == 0;
}
-doauth(ctx: *sshd_ctx) {
+func doauth(ctx: *sshd_ctx) {
var csr: ssh_service_request;
var cua: ssh_userauth_request;
var ssa: ssh_service_accept;
@@ -1348,7 +1348,7 @@ doauth(ctx: *sshd_ctx) {
write_frame(ctx);
}
-dosession(ctx: *sshd_ctx) {
+func dosession(ctx: *sshd_ctx) {
var cco: ssh_channel_open;
var scc: ssh_channel_open_confirmation;
var ccr: ssh_channel_request;
@@ -1374,19 +1374,19 @@ dosession(ctx: *sshd_ctx) {
write_frame(ctx);
}
-dodisconnect(ctx: *sshd_ctx) {
+func dodisconnect(ctx: *sshd_ctx) {
var d: ssh_disconnect;
decode_disconnect(&d, ctx);
exit(0);
}
-dowindow(ctx: *sshd_ctx) {
+func dowindow(ctx: *sshd_ctx) {
var cwa: ssh_channel_window_adjust;
decode_channel_window_adjust(&cwa, ctx);
ctx.stdout_window = ctx.stdout_window + cwa.window;
}
-dodata(ctx: *sshd_ctx) {
+func dodata(ctx: *sshd_ctx) {
var cd: ssh_channel_data;
decode_channel_data(&cd, ctx);
if ctx.stdin_eof {
@@ -1399,13 +1399,13 @@ dodata(ctx: *sshd_ctx) {
ctx.stdin_fill = ctx.stdin_fill + cd.data.len;
}
-doeof(ctx: *sshd_ctx) {
+func doeof(ctx: *sshd_ctx) {
var ce: ssh_channel_eof;
decode_channel_eof(&ce, ctx);
ctx.stdin_eof = 1;
}
-doclose(ctx: *sshd_ctx) {
+func doclose(ctx: *sshd_ctx) {
var cc: ssh_channel_close;
decode_channel_close(&cc, ctx);
exit(0);
@@ -1418,7 +1418,7 @@ struct _argv4 {
arg3: *byte;
}
-ssh_spawn(ctx: *sshd_ctx, argv: **byte) {
+func ssh_spawn(ctx: *sshd_ctx, argv: **byte) {
var pid: int;
var stdin_read: int;
var stdin_write: int;
@@ -1479,12 +1479,12 @@ ssh_spawn(ctx: *sshd_ctx, argv: **byte) {
ctx.child_stderr = stderr_read;
}
-dopty(cr: *ssh_cr_pty, ctx: *sshd_ctx): int {
+func dopty(cr: *ssh_cr_pty, ctx: *sshd_ctx): int {
// allocate pty
return 0;
}
-doshell(cr: *ssh_cr_shell, ctx: *sshd_ctx): int {
+func doshell(cr: *ssh_cr_shell, ctx: *sshd_ctx): int {
var argv: _argv4;
argv.arg0 = "/bin/sh";
argv.arg1 = 0 as *byte;
@@ -1492,7 +1492,7 @@ doshell(cr: *ssh_cr_shell, ctx: *sshd_ctx): int {
return 1;
}
-doexec(cr: *ssh_cr_exec, ctx: *sshd_ctx): int {
+func doexec(cr: *ssh_cr_exec, ctx: *sshd_ctx): int {
var argv: _argv4;
var cmd: *byte;
cmd = alloc(ctx.a, cr.command.len + 1);
@@ -1507,17 +1507,17 @@ doexec(cr: *ssh_cr_exec, ctx: *sshd_ctx): int {
return 1;
}
-dowinch(cr: *ssh_cr_winch, ctx: *sshd_ctx): int {
+func dowinch(cr: *ssh_cr_winch, ctx: *sshd_ctx): int {
// window change
return 0;
}
-dosignal(cr: *ssh_cr_signal, ctx: *sshd_ctx): int {
+func dosignal(cr: *ssh_cr_signal, ctx: *sshd_ctx): int {
// signal
return 0;
}
-dorequest(ctx: *sshd_ctx) {
+func dorequest(ctx: *sshd_ctx) {
var cr: ssh_channel_request;
var ss: ssh_channel_success;
var sf: ssh_channel_failure;
@@ -1564,7 +1564,7 @@ struct pfd4 {
p3: int;
}
-reset_pfd(pfd: *int, ctx: *sshd_ctx): int {
+func reset_pfd(pfd: *int, ctx: *sshd_ctx): int {
var n: int;
var events: int;
@@ -1613,7 +1613,7 @@ reset_pfd(pfd: *int, ctx: *sshd_ctx): int {
return n;
}
-poll_client(revents: int, ctx: *sshd_ctx) {
+func poll_client(revents: int, ctx: *sshd_ctx) {
var tag: int;
var len: int;
var swa: ssh_channel_window_adjust;
@@ -1719,7 +1719,7 @@ poll_client(revents: int, ctx: *sshd_ctx) {
}
}
-poll_stdin(revents: int, ctx: *sshd_ctx) {
+func poll_stdin(revents: int, ctx: *sshd_ctx) {
var ret: int;
if ctx.stdin_fill == 0 && ctx.stdin_eof {
close(ctx.child_stdin);
@@ -1740,7 +1740,7 @@ poll_stdin(revents: int, ctx: *sshd_ctx) {
ctx.stdin_window = ctx.stdin_window + ret;
}
-poll_stdout(revents: int, ctx: *sshd_ctx) {
+func poll_stdout(revents: int, ctx: *sshd_ctx) {
var ret: int;
ret = read(ctx.child_stdout, &ctx.stdout_buf[ctx.stdout_fill], ctx.stdout_size - ctx.stdout_fill);
if ret == -EINTR {
@@ -1754,7 +1754,7 @@ poll_stdout(revents: int, ctx: *sshd_ctx) {
ctx.stdout_fill = ctx.stdout_fill + ret;
}
-poll_stderr(revents: int, ctx: *sshd_ctx) {
+func poll_stderr(revents: int, ctx: *sshd_ctx) {
var ret: int;
ret = read(ctx.child_stderr, &ctx.stderr_buf[ctx.stderr_fill], ctx.stderr_size - ctx.stderr_fill);
if ret == -EINTR {
@@ -1768,7 +1768,7 @@ poll_stderr(revents: int, ctx: *sshd_ctx) {
ctx.stderr_fill = ctx.stderr_fill + ret;
}
-poll_exit(ctx: *sshd_ctx) {
+func poll_exit(ctx: *sshd_ctx) {
var ret: int;
var status: int;
loop {
@@ -1783,7 +1783,7 @@ poll_exit(ctx: *sshd_ctx) {
}
}
-client_loop(ctx: *sshd_ctx) {
+func client_loop(ctx: *sshd_ctx) {
var _p: pfd4;
var p: *int;
var n: int;
@@ -1834,7 +1834,7 @@ client_loop(ctx: *sshd_ctx) {
}
}
-cmain(ctx: *sshd_ctx) {
+func cmain(ctx: *sshd_ctx) {
doversion(ctx);
read_frame(ctx);
@@ -1911,7 +1911,7 @@ struct sshd_ctx {
exit_status: int;
}
-format_key(d: **byte, dlen: *int, k: *byte, ctx: *sshd_ctx) {
+func format_key(d: **byte, dlen: *int, k: *byte, ctx: *sshd_ctx) {
var s: ssh_str;
clear_frame(ctx);
set_str(&s, "ssh-ed25519");
@@ -1926,12 +1926,12 @@ format_key(d: **byte, dlen: *int, k: *byte, ctx: *sshd_ctx) {
clear_frame(ctx);
}
-dosigchld() {
+func dosigchld() {
}
-_restorer();
+func _restorer();
-signal(sig: int, handler: func()) {
+func signal(sig: int, handler: func()) {
var act: sigaction;
act.handler = (&dosigchld) as int;
act.flags = 1 << 26;
@@ -1940,7 +1940,7 @@ signal(sig: int, handler: func()) {
sigaction(sig, &act, 0 as *sigaction);
}
-main(argc: int, argv: **byte, envp: **byte) {
+func main(argc: int, argv: **byte, envp: **byte) {
var fd: int;
var cfd: int;
var port: int;
diff --git a/syscall.om b/syscall.om
@@ -1,4 +1,4 @@
-syscall(n: int, a1: int, a2: int, a3: int, a4: int, a5: int, a6: int): int;
+func syscall(n: int, a1: int, a2: int, a3: int, a4: int, a5: int, a6: int): int;
enum {
O_RDONLY = 0,
@@ -32,44 +32,44 @@ enum {
SIGWINCH = 28,
}
-_start(argc: int, argv: **byte, envp: **byte) {
+func _start(argc: int, argv: **byte, envp: **byte) {
main(argc, argv, envp);
exit(0);
}
-read(fd: int, buf: *byte, n: int): int {
+func read(fd: int, buf: *byte, n: int): int {
return syscall(0, fd, buf as int, n, 0, 0, 0);
}
-write(fd: int, buf: *byte, n: int): int {
+func write(fd: int, buf: *byte, n: int): int {
return syscall(1, fd, buf as int, n, 0, 0, 0);
}
-open(name: *byte, flags: int, mode: int): int {
+func open(name: *byte, flags: int, mode: int): int {
return syscall(2, name as int, flags, mode, 0, 0, 0);
}
-close(fd: int): int {
+func close(fd: int): int {
return syscall(3, fd, 0, 0, 0, 0, 0);
}
-fstat(fd: int, buf: *byte): int {
+func fstat(fd: int, buf: *byte): int {
return syscall(5, fd, buf as int, 0, 0, 0, 0);
}
-poll(pfd: *int, nfd: int, timeout: int): int {
+func poll(pfd: *int, nfd: int, timeout: int): int {
return syscall(7, pfd as int, nfd, timeout, 0, 0, 0);
}
-lseek(fd: int, off: int, whence: int): int {
+func lseek(fd: int, off: int, whence: int): int {
return syscall(8, fd, off, whence, 0, 0, 0);
}
-mmap(addr: int, len: int, prot: int, flags: int, fd: int, off: int): int {
+func mmap(addr: int, len: int, prot: int, flags: int, fd: int, off: int): int {
return syscall(9, addr, len, prot, flags, fd, off);
}
-munmap(addr: int, len: int): int {
+func munmap(addr: int, len: int): int {
return syscall(11, addr, len, 0, 0, 0, 0);
}
@@ -80,11 +80,11 @@ struct sigaction {
mask: int;
}
-sigaction(sig: int, act: *sigaction, oact: *sigaction): int {
+func sigaction(sig: int, act: *sigaction, oact: *sigaction): int {
return syscall(13, sig, act as int, oact as int, 8, 0, 0);
}
-pipe(rfd: *int, wfd: *int): int {
+func pipe(rfd: *int, wfd: *int): int {
var buf: int;
var ret: int;
ret = syscall(22, (&buf) as int, 0, 0, 0, 0, 0);
@@ -95,39 +95,39 @@ pipe(rfd: *int, wfd: *int): int {
return ret;
}
-dup2(old: int, new: int): int {
+func dup2(old: int, new: int): int {
return syscall(33, old, new, 0, 0, 0, 0);
}
-socket(pf: int, ty: int, pc: int): int {
+func socket(pf: int, ty: int, pc: int): int {
return syscall(41, pf, ty, pc, 0, 0, 0);
}
-accept(fd: int, addr: *byte, len: *int): int {
+func accept(fd: int, addr: *byte, len: *int): int {
return syscall(43, fd, addr as int, len as int, 0, 0, 0);
}
-bind(fd: int, addr: *byte, len: int): int {
+func bind(fd: int, addr: *byte, len: int): int {
return syscall(49, fd, addr as int, len as int, 0, 0, 0);
}
-listen(fd: int, backlog: int): int {
+func listen(fd: int, backlog: int): int {
return syscall(50, fd, backlog, 0, 0, 0, 0);
}
-fork(): int {
+func fork(): int {
return syscall(57, 0, 0, 0, 0, 0, 0);
}
-exec(cmd: *byte, argv: **byte, envp: **byte): int {
+func exec(cmd: *byte, argv: **byte, envp: **byte): int {
return syscall(59, cmd as int, argv as int, envp as int, 0, 0, 0);
}
-exit(n: int) {
+func exit(n: int) {
syscall(60, n, 0, 0, 0, 0, 0);
}
-wait(pid: int, status: *int, flags: int): int {
+func wait(pid: int, status: *int, flags: int): int {
var s: int;
var ret: int;
s = 0;
@@ -138,18 +138,18 @@ wait(pid: int, status: *int, flags: int): int {
return ret;
}
-rename(oldname: *byte, newname: *byte): int {
+func rename(oldname: *byte, newname: *byte): int {
return syscall(82, oldname as int, newname as int, 0, 0, 0, 0);
}
-mkdir(name: *byte): int {
+func mkdir(name: *byte): int {
return syscall(83, name as int, 0, 0, 0, 0, 0);
}
-unlink(name: *byte): int {
+func unlink(name: *byte): int {
return syscall(87, name as int, 0, 0, 0, 0, 0);
}
-getdirents(fd: int, buf: *byte, len: int): int {
+func getdirents(fd: int, buf: *byte, len: int): int {
return syscall(217, fd, buf as int, len, 0, 0, 0);
}
diff --git a/type.om b/type.om
@@ -16,7 +16,7 @@ enum {
TY_UNION,
}
-type_sizeof(c: *compiler, t: *type): int {
+func type_sizeof(c: *compiler, t: *type): int {
var kind: int;
kind = t.kind;
@@ -40,7 +40,7 @@ type_sizeof(c: *compiler, t: *type): int {
}
// Unify two types
-unify(c: *compiler, a: *type, b: *type) {
+func unify(c: *compiler, a: *type, b: *type) {
var kind: int;
if (a == b) {
@@ -73,7 +73,7 @@ unify(c: *compiler, a: *type, b: *type) {
}
}
-count_args(c: *compiler, t: *type): int {
+func count_args(c: *compiler, t: *type): int {
var nargs: int;
nargs = 0;
@@ -89,7 +89,7 @@ count_args(c: *compiler, t: *type): int {
return nargs;
}
-mktype(c: *compiler, kind: int, a: *type, b: *type, st: *decl): *type {
+func mktype(c: *compiler, kind: int, a: *type, b: *type, st: *decl): *type {
var t: *type;
t = alloc(c.a, sizeof(*t)) as *type;
@@ -102,35 +102,35 @@ mktype(c: *compiler, kind: int, a: *type, b: *type, st: *decl): *type {
return t;
}
-mktype_struct(c: *compiler, st: *decl): *type {
+func mktype_struct(c: *compiler, st: *decl): *type {
return mktype(c, TY_STRUCT, 0 as *type, 0 as *type, st);
}
-mktype_union(c: *compiler, st: *decl): *type {
+func mktype_union(c: *compiler, st: *decl): *type {
return mktype(c, TY_UNION, 0 as *type, 0 as *type, st);
}
-mktype0(c: *compiler, kind: int): *type {
+func mktype0(c: *compiler, kind: int): *type {
return mktype(c, kind, 0 as *type, 0 as *type, 0 as *decl);
}
-mktype1(c: *compiler, kind: int, a: *type): *type {
+func mktype1(c: *compiler, kind: int, a: *type): *type {
return mktype(c, kind, a, 0 as *type, 0 as *decl);
}
-mktype2(c: *compiler, kind: int, a: *type, b: *type): *type {
+func mktype2(c: *compiler, kind: int, a: *type, b: *type): *type {
return mktype(c, kind, a, b, 0 as *decl);
}
-type_isint(t: *type): int {
+func type_isint(t: *type): int {
return t.kind == TY_INT || t.kind == TY_BYTE;
}
-type_isprim(t: *type): int {
+func type_isprim(t: *type): int {
return t.kind != TY_VOID && t.kind != TY_STRUCT && t.kind != TY_UNION;
}
-prototype(c: *compiler, n: *node): *type {
+func prototype(c: *compiler, n: *node): *type {
var a: *type;
var b: *type;
var st: *decl;
diff --git a/vimfiles/syntax/omiltem.vim b/vimfiles/syntax/omiltem.vim
@@ -62,7 +62,6 @@ hi def link oGoto Statement
hi def link oVar Keyword
hi def link oAs Keyword
hi def link oNil Keyword
-hi def link oFunc Keyword
hi def link oEnum Structure
hi def link oStruct Structure
@@ -71,5 +70,6 @@ hi def link oUnion Structure
hi def link oByte Type
hi def link oInt Type
hi def link oVoid Type
+hi def link oFunc Type
let b:current_syntax = "omiltem"
diff --git a/xxd.om b/xxd.om
@@ -1,4 +1,4 @@
-doxxd(fd: int, buf: *byte) {
+func doxxd(fd: int, buf: *byte) {
var n: int;
var m: int;
var ret: int;
@@ -34,7 +34,7 @@ doxxd(fd: int, buf: *byte) {
}
}
-main(argc: int, argv: **byte, envp: **byte) {
+func main(argc: int, argv: **byte, envp: **byte) {
var fd: int;
var i: int;
var a: alloc;