mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-05-20 06:09:18 +02:00
fixing bug in loading init.scm file
This commit is contained in:
parent
cafb396745
commit
a60cc1e98c
4 changed files with 14 additions and 8 deletions
4
Makefile
4
Makefile
|
@ -44,7 +44,7 @@ XCPPFLAGS := $(CPPFLAGS) -Iinclude
|
||||||
endif
|
endif
|
||||||
|
|
||||||
XLDFLAGS := $(LDFLAGS) $(GCLDFLAGS) -lm
|
XLDFLAGS := $(LDFLAGS) $(GCLDFLAGS) -lm
|
||||||
XCFLAGS := $(CFLAGS) -Wall -O2 -g
|
XCFLAGS := $(CFLAGS) -Wall -g
|
||||||
|
|
||||||
INCLUDES = include/chibi/sexp.h include/chibi/config.h include/chibi/install.h
|
INCLUDES = include/chibi/sexp.h include/chibi/config.h include/chibi/install.h
|
||||||
|
|
||||||
|
@ -100,7 +100,7 @@ install: chibi-scheme
|
||||||
|
|
||||||
uninstall:
|
uninstall:
|
||||||
rm -f $(BINDIR)/chibi-scheme*
|
rm -f $(BINDIR)/chibi-scheme*
|
||||||
rm -f $(LIBDIR)/libchibischeme$(SO)
|
rm -f $(LIBDIR)/libchibi-scheme$(SO)
|
||||||
cd $(INCDIR) && rm -f $(INCLUDES) include/chibi/eval.h
|
cd $(INCDIR) && rm -f $(INCLUDES) include/chibi/eval.h
|
||||||
rm -f $(MODDIR)/*.scm
|
rm -f $(MODDIR)/*.scm
|
||||||
|
|
||||||
|
|
2
eval.c
2
eval.c
|
@ -1828,6 +1828,8 @@ static sexp sexp_open_output_file (sexp ctx, sexp path) {
|
||||||
|
|
||||||
static sexp sexp_close_port (sexp ctx, sexp port) {
|
static sexp sexp_close_port (sexp ctx, sexp port) {
|
||||||
fclose(sexp_port_stream(port));
|
fclose(sexp_port_stream(port));
|
||||||
|
if (sexp_port_buf(port))
|
||||||
|
free(sexp_port_buf(port));
|
||||||
return SEXP_VOID;
|
return SEXP_VOID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
8
main.c
8
main.c
|
@ -1,4 +1,4 @@
|
||||||
/* main.c -- chibi-scheme command-line app using */
|
/* main.c -- chibi-scheme command-line app */
|
||||||
/* Copyright (c) 2009 Alex Shinn. All rights reserved. */
|
/* Copyright (c) 2009 Alex Shinn. All rights reserved. */
|
||||||
/* BSD-style license: http://synthcode.com/license.txt */
|
/* BSD-style license: http://synthcode.com/license.txt */
|
||||||
|
|
||||||
|
@ -24,11 +24,11 @@ sexp find_module_file (sexp ctx, char *file) {
|
||||||
flen = strlen(file);
|
flen = strlen(file);
|
||||||
path = (char*) malloc(mlen+flen+2);
|
path = (char*) malloc(mlen+flen+2);
|
||||||
memcpy(path, chibi_module_dir, mlen);
|
memcpy(path, chibi_module_dir, mlen);
|
||||||
path[mlen+1] = '/';
|
path[mlen] = '/';
|
||||||
memcpy(path+mlen+1, file, flen);
|
memcpy(path+mlen+1, file, flen);
|
||||||
path[mlen+flen] = '\0';
|
path[mlen+flen+1] = '\0';
|
||||||
if (! stat(path, &buf))
|
if (! stat(path, &buf))
|
||||||
res = sexp_c_string(ctx, path, mlen+flen+1);
|
res = sexp_c_string(ctx, path, mlen+flen+2);
|
||||||
else
|
else
|
||||||
res = SEXP_FALSE;
|
res = SEXP_FALSE;
|
||||||
free(path);
|
free(path);
|
||||||
|
|
8
sexp.c
8
sexp.c
|
@ -625,12 +625,15 @@ sexp sexp_get_output_string (sexp ctx, sexp port) {
|
||||||
|
|
||||||
sexp sexp_make_input_string_port (sexp ctx, sexp str) {
|
sexp sexp_make_input_string_port (sexp ctx, sexp str) {
|
||||||
FILE *in = fmemopen(sexp_string_data(str), sexp_string_length(str), "r");
|
FILE *in = fmemopen(sexp_string_data(str), sexp_string_length(str), "r");
|
||||||
return sexp_make_input_port(ctx, in, SEXP_FALSE);
|
sexp res = sexp_make_input_port(ctx, in, SEXP_FALSE);
|
||||||
|
sexp_port_cookie(res) = str; /* for gc preservation */
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
sexp sexp_make_output_string_port (sexp ctx) {
|
sexp sexp_make_output_string_port (sexp ctx) {
|
||||||
sexp res = sexp_make_output_port(ctx, NULL, SEXP_FALSE);
|
sexp res = sexp_make_output_port(ctx, NULL, SEXP_FALSE);
|
||||||
sexp_port_stream(res) = open_memstream(&sexp_port_buf(res), &sexp_port_size(res));
|
sexp_port_stream(res)
|
||||||
|
= open_memstream(&sexp_port_buf(res), &sexp_port_size(res));
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -656,6 +659,7 @@ sexp sexp_make_output_port (sexp ctx, FILE* out, sexp name) {
|
||||||
sexp_port_stream(p) = out;
|
sexp_port_stream(p) = out;
|
||||||
sexp_port_name(p) = name;
|
sexp_port_name(p) = name;
|
||||||
sexp_port_line(p) = 0;
|
sexp_port_line(p) = 0;
|
||||||
|
sexp_port_buf(p) = NULL;
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue