mirror of
https://github.com/false-schemers/skint.git
synced 2025-01-21 19:27:27 +01:00
file open refactoring -- work in progress
This commit is contained in:
parent
74c3b9ffef
commit
c35bba32ec
4 changed files with 34 additions and 16 deletions
12
i.c
12
i.c
|
@ -3098,29 +3098,25 @@ define_instruction(opop) {
|
||||||
|
|
||||||
define_instruction(oif) {
|
define_instruction(oif) {
|
||||||
FILE *fp = fopen(stringchars(ac), "r");
|
FILE *fp = fopen(stringchars(ac), "r");
|
||||||
if (fp == NULL) fail("can't open input file");
|
ac = (fp == NULL) ? bool_obj(0) : iport_file_obj(fp);
|
||||||
ac = iport_file_obj(fp);
|
|
||||||
gonexti();
|
gonexti();
|
||||||
}
|
}
|
||||||
|
|
||||||
define_instruction(oof) {
|
define_instruction(oof) {
|
||||||
FILE *fp = fopen(stringchars(ac), "w");
|
FILE *fp = fopen(stringchars(ac), "w");
|
||||||
if (fp == NULL) fail("can't open output file");
|
ac = (fp == NULL) ? bool_obj(0) : oport_file_obj(fp);
|
||||||
ac = oport_file_obj(fp);
|
|
||||||
gonexti();
|
gonexti();
|
||||||
}
|
}
|
||||||
|
|
||||||
define_instruction(obif) {
|
define_instruction(obif) {
|
||||||
FILE *fp = fopen(stringchars(ac), "rb");
|
FILE *fp = fopen(stringchars(ac), "rb");
|
||||||
if (fp == NULL) fail("can't open binary input file");
|
ac = (fp == NULL) ? bool_obj(0) : iport_file_obj(fp);
|
||||||
ac = iport_file_obj(fp);
|
|
||||||
gonexti();
|
gonexti();
|
||||||
}
|
}
|
||||||
|
|
||||||
define_instruction(obof) {
|
define_instruction(obof) {
|
||||||
FILE *fp = fopen(stringchars(ac), "wb");
|
FILE *fp = fopen(stringchars(ac), "wb");
|
||||||
if (fp == NULL) fail("can't open binary output file");
|
ac = (fp == NULL) ? bool_obj(0) : oport_file_obj(fp);
|
||||||
ac = oport_file_obj(fp);
|
|
||||||
gonexti();
|
gonexti();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
8
i.h
8
i.h
|
@ -474,10 +474,10 @@ declare_instruction(sop, "P11", 0, "current-output-port",
|
||||||
declare_instruction(sep, "P12", 0, "current-error-port", '0', AUTOGL)
|
declare_instruction(sep, "P12", 0, "current-error-port", '0', AUTOGL)
|
||||||
declare_instruction(ipop, "P20", 0, "input-port-open?", '1', AUTOGL)
|
declare_instruction(ipop, "P20", 0, "input-port-open?", '1', AUTOGL)
|
||||||
declare_instruction(opop, "P21", 0, "output-port-open?", '1', AUTOGL)
|
declare_instruction(opop, "P21", 0, "output-port-open?", '1', AUTOGL)
|
||||||
declare_instruction(oif, "P40", 0, "open-input-file", '1', AUTOGL)
|
declare_instruction(oif, "P40", 0, "%open-input-file", '1', AUTOGL)
|
||||||
declare_instruction(oof, "P41", 0, "open-output-file", '1', AUTOGL)
|
declare_instruction(oof, "P41", 0, "%open-output-file", '1', AUTOGL)
|
||||||
declare_instruction(obif, "P42", 0, "open-binary-input-file", '1', AUTOGL)
|
declare_instruction(obif, "P42", 0, "%open-binary-input-file", '1', AUTOGL)
|
||||||
declare_instruction(obof, "P43", 0, "open-binary-output-file", '1', AUTOGL)
|
declare_instruction(obof, "P43", 0, "%open-binary-output-file", '1', AUTOGL)
|
||||||
declare_instruction(ois, "P50", 0, "open-input-string", '1', AUTOGL)
|
declare_instruction(ois, "P50", 0, "open-input-string", '1', AUTOGL)
|
||||||
declare_instruction(oos, "P51", 0, "open-output-string", '0', AUTOGL)
|
declare_instruction(oos, "P51", 0, "open-output-string", '0', AUTOGL)
|
||||||
declare_instruction(oib, "P52", 0, "open-input-bytevector", '1', AUTOGL)
|
declare_instruction(oib, "P52", 0, "open-input-bytevector", '1', AUTOGL)
|
||||||
|
|
6
s.c
6
s.c
|
@ -2,6 +2,12 @@
|
||||||
|
|
||||||
char *s_code[] = {
|
char *s_code[] = {
|
||||||
|
|
||||||
|
"C", 0,
|
||||||
|
"@(y16:%25open-input-file)@!(y15:open-input-file)"
|
||||||
|
"@(y17:%25open-output-file)@!(y16:open-output-file)"
|
||||||
|
"@(y23:%25open-binary-input-file)@!(y22:open-binary-input-file)"
|
||||||
|
"@(y24:%25open-binary-output-file)@!(y23:open-binary-output-file)",
|
||||||
|
|
||||||
"S", "let-syntax",
|
"S", "let-syntax",
|
||||||
"l4:y12:syntax-rules;n;l2:l2:y1:_;l2:l2:y2:kw;y4:init;;y3:...;;;l1:y5:b"
|
"l4:y12:syntax-rules;n;l2:l2:y1:_;l2:l2:y2:kw;y4:init;;y3:...;;;l1:y5:b"
|
||||||
"egin;;;l2:py1:_;pl2:l2:y2:kw;y4:init;;y3:...;;y5:forms;;;l3:py13:synta"
|
"egin;;;l2:py1:_;pl2:l2:y2:kw;y4:init;;y3:...;;y5:forms;;;l3:py13:synta"
|
||||||
|
|
24
src/s.scm
24
src/s.scm
|
@ -1359,10 +1359,10 @@
|
||||||
; (current-input-port) ; need to be made into a parameter
|
; (current-input-port) ; need to be made into a parameter
|
||||||
; (current-output-port) ; need to be made into a parameter
|
; (current-output-port) ; need to be made into a parameter
|
||||||
; (current-error-port) ; need to be made into a parameter
|
; (current-error-port) ; need to be made into a parameter
|
||||||
; (open-input-file s)
|
; (%open-input-file s) +
|
||||||
; (open-binary-input-file s)
|
; (%open-binary-input-file s) +
|
||||||
; (open-output-file x)
|
; (%open-output-file x) +
|
||||||
; (open-binary-output-file x)
|
; (%open-binary-output-file x) +
|
||||||
; (close-input-port p)
|
; (close-input-port p)
|
||||||
; (close-output-port p)
|
; (close-output-port p)
|
||||||
; (open-input-string s)
|
; (open-input-string s)
|
||||||
|
@ -1376,6 +1376,22 @@
|
||||||
(define textual-port? port?) ; all ports are bimodal
|
(define textual-port? port?) ; all ports are bimodal
|
||||||
(define binary-port? port?) ; all ports are bimodal
|
(define binary-port? port?) ; all ports are bimodal
|
||||||
|
|
||||||
|
(define-inline (open-input-file fn)
|
||||||
|
(or (%open-input-file fn)
|
||||||
|
(file-error "cannot open input file" fn)))
|
||||||
|
|
||||||
|
(define-inline (open-output-file fn)
|
||||||
|
(or (%open-output-file fn)
|
||||||
|
(file-error "cannot open output file" fn)))
|
||||||
|
|
||||||
|
(define-inline (open-binary-input-file fn)
|
||||||
|
(or (%open-binary-input-file fn)
|
||||||
|
(file-error "cannot open binary input file" fn)))
|
||||||
|
|
||||||
|
(define-inline (open-binary-output-file fn)
|
||||||
|
(or (%open-binary-output-file fn)
|
||||||
|
(file-error "cannot open binary output file" fn)))
|
||||||
|
|
||||||
(define (close-port p)
|
(define (close-port p)
|
||||||
(if (input-port? p) (close-input-port p))
|
(if (input-port? p) (close-input-port p))
|
||||||
(if (output-port? p) (close-output-port p)))
|
(if (output-port? p) (close-output-port p)))
|
||||||
|
|
Loading…
Reference in a new issue