picrin/contrib/20.r7rs/src/load.c

40 lines
615 B
C
Raw Normal View History

/**
* See Copyright Notice in picrin.h
*/
#include "picrin.h"
2016-02-18 15:54:50 -05:00
#include <stdio.h>
static pic_value
pic_load_load(pic_state *pic)
{
pic_value envid;
char *fn;
2015-07-12 19:20:07 -04:00
struct pic_port *port;
2016-02-18 15:54:50 -05:00
FILE *fp;
pic_get_args(pic, "z|o", &fn, &envid);
2016-02-18 15:54:50 -05:00
fp = fopen(fn, "r");
if (fp == NULL) {
pic_errorf(pic, "load: could not open file %s", fn);
}
port = pic_make_port(pic, xfopen_file(pic, fp, "r"));
2015-07-12 19:20:07 -04:00
pic_load(pic, port);
pic_close_port(pic, port);
return pic_undef_value(pic);
}
void
pic_init_load(pic_state *pic)
{
pic_deflibrary(pic, "scheme.load");
pic_defun(pic, "load", pic_load_load);
}