os

An operating system
git clone https://erai.gay/code/os/
Log | Files | Refs | README | LICENSE

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:
Malloc.om | 6+++---
Mas.om | 128++++++++++++++++++++++++++++++++++++++++----------------------------------------
Mbufio.om | 24++++++++++++------------
Mcat.om | 4++--
Mcc0.c | 3++-
Mcc1.om | 60++++++++++++++++++++++++++++++------------------------------
Mchacha20.om | 8++++----
Mcmp.om | 2+-
Mcout.om | 22+++++++++++-----------
Mcpio.om | 6+++---
Mdecl.om | 6+++---
Mdump.om | 2+-
Mecho.om | 2+-
Med25519.om | 78+++++++++++++++++++++++++++++++++++++++---------------------------------------
Mgenlex.om | 82++++++++++++++++++++++++++++++++++++++++----------------------------------------
Mkernel.om | 366++++++++++++++++++++++++++++++++++++++++----------------------------------------
Mlib.om | 54+++++++++++++++++++++++++++---------------------------
Mls.om | 2+-
Mmkdir.om | 2+-
Mmv.om | 2+-
Mnode.om | 12++++++------
Mparse2.om | 90++++++++++++++++++++++++++++++++++++++++----------------------------------------
Mpeg.om | 23++++++++++++-----------
Mpeglib.om | 30+++++++++++++++---------------
Mpoly1305.om | 16++++++++--------
Mrm.om | 2+-
Msh.om | 38+++++++++++++++++++-------------------
Msha256.om | 20++++++++++----------
Msha512.om | 20++++++++++----------
Msshd.om | 174++++++++++++++++++++++++++++++++++++++++----------------------------------------
Msyscall.om | 52++++++++++++++++++++++++++--------------------------
Mtype.om | 24++++++++++++------------
Mvimfiles/syntax/omiltem.vim | 2+-
Mxxd.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;