2015-01-17 10:32:52 -05:00
|
|
|
/**
|
|
|
|
* See Copyright Notice in picrin.h
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "picrin.h"
|
|
|
|
|
2016-02-18 15:54:50 -05:00
|
|
|
#include <stdio.h>
|
|
|
|
|
2015-01-17 10:32:52 -05:00
|
|
|
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;
|
2015-01-17 10:32:52 -05:00
|
|
|
|
|
|
|
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);
|
2015-01-17 10:32:52 -05:00
|
|
|
|
2016-02-18 06:15:42 -05:00
|
|
|
return pic_undef_value(pic);
|
2015-01-17 10:32:52 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
pic_init_load(pic_state *pic)
|
|
|
|
{
|
2016-02-18 03:39:32 -05:00
|
|
|
pic_deflibrary(pic, "scheme.load");
|
2016-02-14 23:20:26 -05:00
|
|
|
|
|
|
|
pic_defun(pic, "load", pic_load_load);
|
2015-01-17 10:32:52 -05:00
|
|
|
}
|