ref: b4753216186283dba9a9a66f83dcc0dd16dd8e15
parent: e06012b79e628f3c549a832919241d01bd4f189a
author: Sigrid Solveig Haflínudóttir <sigrid@ftrv.se>
date: Tue Dec 24 12:39:19 EST 2024
ios_put*, fl_print_*, out*: fix awkward argument ordering
--- a/flisp.c
+++ b/flisp.c
@@ -2377,9 +2377,9 @@
}
}
FL_CATCH_NO_INC{- ios_puts("fatal error during bootstrap:\n", ios_stderr);+ ios_puts(ios_stderr, "fatal error during bootstrap: ");
fl_print(ios_stderr, FL(lasterror));
- ios_putc('\n', ios_stderr);+ ios_putc(ios_stderr, '\n');
return 1;
}
ios_close(value2c(ios_t*, FL(stack)[FL(sp)-1]));
--- a/flmain.c
+++ b/flmain.c
@@ -54,9 +54,9 @@
}
}
FL_CATCH_EXTERN_NO_RESTORE{- ios_puts("fatal error:\n", ios_stderr);+ ios_puts(ios_stderr, "fatal error:\n");
fl_print(ios_stderr, FL(lasterror));
- ios_putc('\n', ios_stderr);+ ios_putc(ios_stderr, '\n');
break;
}
fl_exit(r);
--- a/ios.c
+++ b/ios.c
@@ -817,7 +817,7 @@
/* higher level interface */
int
-ios_putc(int c, ios_t *s)
+ios_putc(ios_t *s, int c)
{char ch = c;
--- a/ios.h
+++ b/ios.h
@@ -117,10 +117,10 @@
/* stdio-style functions */
#define IOS_EOF (-1)
-int ios_putc(int c, ios_t *s);
+int ios_putc(ios_t *s, int c);
int ios_getc(ios_t *s);
int ios_peekc(ios_t *s);
-#define ios_puts(str, s) ios_write(s, str, strlen(str))
+#define ios_puts(s, str) ios_write(s, str, strlen(str))
/*
With memory streams, mixed reads and writes are equivalent to performing
--- a/iostream.c
+++ b/iostream.c
@@ -9,12 +9,12 @@
print_iostream(value_t v, ios_t *f)
{USED(v);
- fl_print_str("#<io stream", f);+ fl_print_str(f, "#<io stream");
if(*f->loc.filename){- fl_print_chr(' ', f);- fl_print_str(f->loc.filename, f);
+ fl_print_chr(f, ' ');
+ fl_print_str(f, f->loc.filename);
}
- fl_print_chr('>', f);+ fl_print_chr(f, '>');
}
static void
--- a/print.c
+++ b/print.c
@@ -8,9 +8,9 @@
#define LOG2_10 3.321928094887362347870319429489
static void
-outc(char c, ios_t *f)
+outc(ios_t *f, char c)
{- ios_putc(c, f);
+ ios_putc(f, c);
if(c == '\n')
FL(hpos) = 0;
else
@@ -18,14 +18,14 @@
}
static void
-outs(const char *s, ios_t *f)
+outs(ios_t *f, const char *s)
{- ios_puts(s, f);
+ ios_puts(f, s);
FL(hpos) += u8_strwidth(s);
}
static void
-outsn(const char *s, ios_t *f, size_t n)
+outsn(ios_t *f, const char *s, size_t n)
{ios_write(f, s, n);
FL(hpos) += u8_strwidth(s);
@@ -32,21 +32,21 @@
}
static int
-outindent(int n, ios_t *f)
+outindent(ios_t *f, int n)
{// move back to left margin if we get too indented
if(n > FL(scr_width)-12)
n = 2;
int n0 = n;
- ios_putc('\n', f);+ ios_putc(f, '\n');
FL(vpos)++;
FL(hpos) = n;
while(n >= 8){- ios_putc('\t', f);+ ios_putc(f, '\t');
n -= 8;
}
while(n){- ios_putc(' ', f);+ ios_putc(f, ' ');
n--;
}
return n0;
@@ -53,15 +53,15 @@
}
void
-fl_print_chr(char c, ios_t *f)
+fl_print_chr(ios_t *f, char c)
{- outc(c, f);
+ outc(f, c);
}
void
-fl_print_str(const char *s, ios_t *f)
+fl_print_str(ios_t *f, const char *s)
{- outs(s, f);
+ outs(f, s);
}
void
@@ -135,22 +135,22 @@
}
if(escape){ if(charescape){- outc('|', f);+ outc(f, '|');
i = 0;
while(name[i]){if(name[i] == '|' || name[i] == '\\')
- outc('\\', f);- outc(name[i], f);
+ outc(f, '\\');
+ outc(f, name[i]);
i++;
}
- outc('|', f);+ outc(f, '|');
}else{- outc('|', f);- outs(name, f);
- outc('|', f);+ outc(f, '|');
+ outs(f, name);
+ outc(f, '|');
}
}else{- outs(name, f);
+ outs(f, name);
}
}
@@ -290,12 +290,12 @@
// special prefix syntax
unmark_cons(v);
unmark_cons(cdr_(v));
- outs(op, f);
+ outs(f, op);
fl_print_child(f, car_(cdr_(v)));
return;
}
int startpos = FL(hpos);
- outc('(', f);+ outc(f, '(');int newindent = FL(hpos), blk = blockindent(v);
int lastv, n = 0, si, ind, est, always = 0, nextsmall, thistiny;
if(!blk)
@@ -307,7 +307,7 @@
while(1){cd = cdr_(v);
if(FL(print_length) >= 0 && n >= FL(print_length) && cd != FL_nil){- outsn("...)", f, 4);+ outsn(f, "...)", 4);
break;
}
lastv = FL(vpos);
@@ -315,10 +315,10 @@
fl_print_child(f, car_(v));
if(!iscons(cd) || ptrhash_has(&FL(printconses), (void*)cd)){ if(cd != FL_nil){- outsn(" . ", f, 3);+ outsn(f, " . ", 3);
fl_print_child(f, cd);
}
- outc(')', f);+ outc(f, ')');
break;
}
@@ -350,11 +350,11 @@
}
if(ind){- newindent = outindent(newindent, f);
+ newindent = outindent(f, newindent);
n_unindented = 1;
}else{n_unindented++;
- outc(' ', f);+ outc(f, ' ');
if(n == 0){// set indent level after printing head
si = specialindent(head);
@@ -392,7 +392,7 @@
{const char *name;
if(FL(print_level) >= 0 && FL(p_level) >= FL(print_level) && (iscons(v) || isvector(v) || isclosure(v))){- outc('#', f);+ outc(f, '#');
return;
}
FL(p_level)++;
@@ -404,28 +404,28 @@
case TAG_SYM:
name = symbol_name(v);
if(FL(print_princ))
- outs(name, f);
+ outs(f, name);
else if(ismanaged(v)){- outsn("#:", f, 2);- outs(name, f);
+ outsn(f, "#:", 2);
+ outs(f, name);
}else
print_symbol_name(f, name);
break;
case TAG_FUNCTION:
if(v == FL_t)
- outsn("#t", f, 2);+ outsn(f, "#t", 2);
else if(v == FL_f)
- outsn("#f", f, 2);+ outsn(f, "#f", 2);
else if(v == FL_nil)
- outsn("nil", f, 3);+ outsn(f, "nil", 3);
else if(v == FL_eof)
- outsn("#<eof>", f, 6);+ outsn(f, "#<eof>", 6);
else if(v == FL_void){- outsn("#<void>", f, 7);+ outsn(f, "#<void>", 7);
}else if(isbuiltin(v)){if(!FL(print_princ))
- outsn("#.", f, 2);- outs(builtins[uintval(v)].name, f);
+ outsn(f, "#.", 2);
+ outs(f, builtins[uintval(v)].name);
}else{assert(isclosure(v));
if(!FL(print_princ)){@@ -432,7 +432,7 @@
if(print_circle_prefix(f, v))
break;
function_t *fn = ptr(v);
- outs("#fn(", f);+ outs(f, "#fn(");char *data = cvalue_data(fn->bcode);
size_t i, sz = cvalue_len(fn->bcode);
for(i = 0; i < sz; i++)
@@ -440,25 +440,25 @@
fl_print_child(f, fn->bcode);
for(i = 0; i < sz; i++)
data[i] -= 48;
- outc(' ', f);+ outc(f, ' ');
fl_print_child(f, fn->vals);
if(fn->env != FL_nil){- outc(' ', f);+ outc(f, ' ');
fl_print_child(f, fn->env);
}
if(fn->name != FL(lambda)){- outc(' ', f);+ outc(f, ' ');
fl_print_child(f, fn->name);
}
- outc(')', f);+ outc(f, ')');
}else{- outs("#<function>", f);+ outs(f, "#<function>");
}
}
break;
case TAG_CPRIM:
if(v == UNBOUND)
- outs("#<undefined>", f);+ outs(f, "#<undefined>");
else
cvalue_print(f, v);
break;
@@ -468,30 +468,30 @@
if(!FL(print_princ) && print_circle_prefix(f, v))
break;
if(isvector(v)){- outs("#(", f);+ outs(f, "#(");int newindent = FL(hpos), est;
int i, sz = vector_size(v);
for(i = 0; i < sz; i++){ if(FL(print_length) >= 0 && i >= FL(print_length) && i < sz-1){- outsn("...", f, 3);+ outsn(f, "...", 3);
break;
}
fl_print_child(f, vector_elt(v, i));
if(i < sz-1){if(!FL(print_pretty))
- outc(' ', f);+ outc(f, ' ');
else{est = lengthestimate(vector_elt(v, i+1));
if(FL(hpos) > FL(scr_width)-4 ||
(est != -1 && (FL(hpos)+est > FL(scr_width)-2)) ||
(FL(hpos) > FL(scr_width)/2 && !smallp(vector_elt(v, i+1)) && !tinyp(vector_elt(v, i))))
- newindent = outindent(newindent, f);
+ newindent = outindent(f, newindent);
else
- outc(' ', f);+ outc(f, ' ');
}
}
}
- outc(')', f);+ outc(f, ')');
break;
}
if(iscvalue(v))
@@ -516,21 +516,21 @@
for(i = 0; i < sz; i++){c = str[i];
if(c == '\\')
- outsn("\\\\", f, 2);+ outsn(f, "\\\\", 2);
else if(c == '"')
- outsn("\\\"", f, 2);+ outsn(f, "\\\"", 2);
else if(c >= 32 && c < 0x7f)
- outc(c, f);
+ outc(f, c);
else{- outsn("\\x", f, 2);- outc(hexdig[c>>4], f);
- outc(hexdig[c&0xf], f);
+ outsn(f, "\\x", 2);
+ outc(f, hexdig[c>>4]);
+ outc(f, hexdig[c&0xf]);
}
}
}else{ while(i < sz){size_t n = u8_escape(buf, sizeof(buf), str, &i, sz, 1, 0);
- outsn(buf, f, n-1);
+ outsn(f, buf, n-1);
}
}
}
@@ -634,7 +634,7 @@
if(type == FL(bytesym)){uint8_t ch = *(uint8_t*)data;
if(FL(print_princ))
- outc(ch, f);
+ outc(f, ch);
else if(weak)
FL(hpos) += ios_printf(f, "0x%hhx", ch);
else
@@ -645,24 +645,24 @@
int nb = runetochar(seq, &r);
seq[nb] = '\0';
if(FL(print_princ)){- outsn(seq, f, nb);
+ outsn(f, seq, nb);
}else{- outsn("#\\", f, 2);+ outsn(f, "#\\", 2);
switch(r){- case 0x00: outsn("nul", f, 3); break;- case 0x07: outsn("alarm", f, 5); break;- case 0x08: outsn("backspace", f, 9); break;- case 0x09: outsn("tab", f, 3); break;- case 0x0a: outsn("newline", f, 7); break;- case 0x0b: outsn("vtab", f, 4); break;- case 0x0c: outsn("page", f, 4); break;- case 0x0d: outsn("return", f, 6); break;- case 0x1b: outsn("esc", f, 3); break;- case ' ': outsn("space", f, 5); break;- case 0x7f: outsn("delete", f, 6); break;+ case 0x00: outsn(f, "nul", 3); break;
+ case 0x07: outsn(f, "alarm", 5); break;
+ case 0x08: outsn(f, "backspace", 9); break;
+ case 0x09: outsn(f, "tab", 3); break;
+ case 0x0a: outsn(f, "newline", 7); break;
+ case 0x0b: outsn(f, "vtab", 4); break;
+ case 0x0c: outsn(f, "page", 4); break;
+ case 0x0d: outsn(f, "return", 6); break;
+ case 0x1b: outsn(f, "esc", 3); break;
+ case ' ': outsn(f, "space", 5); break;
+ case 0x7f: outsn(f, "delete", 6); break;
default:
if(u8_iswprint(r))
- outs(seq, f);
+ outs(f, seq);
else
FL(hpos) += ios_printf(f, "x%04x", r);
break;
@@ -688,22 +688,22 @@
if(type == FL(floatsym) && !FL(print_princ) && !weak)
FL(hpos) += ios_printf(f, "#%s(%s)", symbol_name(type), rep);
else
- outs(rep, f);
+ outs(f, rep);
}else if(d == 0){if(1/d < 0)
- outsn("-0.0", f, 4);+ outsn(f, "-0.0", 4);
else
- outsn("0.0", f, 3);+ outsn(f, "0.0", 3);
if(type == FL(floatsym) && !FL(print_princ) && !weak)
- outc('f', f);+ outc(f, 'f');
}else{snprint_real(buf, sizeof(buf), d, 0, ndec, 3, 10);
int hasdec = (strpbrk(buf, ".eE") != nil);
- outs(buf, f);
+ outs(f, buf);
if(!hasdec)
- outsn(".0", f, 2);+ outsn(f, ".0", 2);
if(type == FL(floatsym) && !FL(print_princ) && !weak)
- outc('f', f);+ outc(f, 'f');
}
}else if(type == FL(uint64sym)){uint64_t ui64 = *(uint64_t*)data;
@@ -754,15 +754,15 @@
FL(hpos) += u8_strwidth(data);
*/
}else{- outc('"', f);+ outc(f, '"');
print_string(f, (char*)data, len);
- outc('"', f);+ outc(f, '"');
}
return;
}else if(eltype == FL(runesym)){char buf[UTFmax];
if(!FL(print_princ))
- outc('"', f);+ outc(f, '"');
for(i = 0; i < cnt; i++, data = (char*)data + elsize){int n = runetochar(buf, (Rune*)data);
if(FL(print_princ))
@@ -771,28 +771,28 @@
print_string(f, buf, n);
}
if(!FL(print_princ))
- outc('"', f);+ outc(f, '"');
return;
}
if(!weak){ if(eltype == FL(uint8sym)){- outsn("#vu8(", f, 5);+ outsn(f, "#vu8(", 5); }else{- outsn("#array(", f, 7);+ outsn(f, "#array(", 7);fl_print_child(f, eltype);
if(cnt > 0)
- outc(' ', f);+ outc(f, ' ');
}
}else{- outs("#(", f);+ outs(f, "#(");}
for(i = 0; i < cnt; i++){if(i > 0)
- outc(' ', f);+ outc(f, ' ');
cvalue_printdata(f, data, elsize, eltype, 1);
data = (char*)data + elsize;
}
- outc(')', f);+ outc(f, ')');
}
}
}
@@ -811,11 +811,11 @@
FL(hpos) += ios_printf(f, "#<builtin @%p>", fptr);
}else{ if(FL(print_princ)){- outs(symbol_name(label), f);
+ outs(f, symbol_name(label));
}else{- outsn("#fn(", f, 4);- outs(symbol_name(label), f);
- outc(')', f);+ outsn(f, "#fn(", 4);+ outs(f, symbol_name(label));
+ outc(f, ')');
}
}
}else if(cv_class(cv)->vtable != nil && cv_class(cv)->vtable->print != nil){--- a/print.h
+++ b/print.h
@@ -2,6 +2,6 @@
void fl_print(ios_t *f, value_t v);
void print_traverse(value_t v);
-void fl_print_chr(char c, ios_t *f);
-void fl_print_str(const char *s, ios_t *f);
+void fl_print_chr(ios_t *f, char c);
+void fl_print_str(ios_t *f, const char *s);
void fl_print_child(ios_t *f, value_t v);
--- a/sixel.c
+++ b/sixel.c
@@ -218,7 +218,7 @@
print_sixeloutput(value_t v, ios_t *s)
{USED(v);
- fl_print_str("#<sixel output>", s);+ fl_print_str(s, "#<sixel output>");
}
static void
--- a/table.c
+++ b/table.c
@@ -11,18 +11,18 @@
htable_t *h = cvalue_data(v);
size_t i;
int first = 1;
- fl_print_str("#table(", f);+ fl_print_str(f, "#table("); for(i = 0; i < h->size; i += 2){ if(h->table[i+1] != HT_NOTFOUND){if(!first)
- fl_print_str(" ", f);+ fl_print_str(f, " ");
fl_print_child(f, (value_t)h->table[i]);
- fl_print_chr(' ', f);+ fl_print_chr(f, ' ');
fl_print_child(f, (value_t)h->table[i+1]);
first = 0;
}
}
- fl_print_chr(')', f);+ fl_print_chr(f, ')');
}
static void
--
⑨