Commit 29d84a16 authored by Masaki Muranaka's avatar Masaki Muranaka

Separate FILE dependencies with ENABLE_STDIO.

parent 6eda7c28
...@@ -101,7 +101,9 @@ struct mrb_parser_state { ...@@ -101,7 +101,9 @@ struct mrb_parser_state {
struct mrb_pool *pool; struct mrb_pool *pool;
mrb_ast_node *cells; mrb_ast_node *cells;
const char *s, *send; const char *s, *send;
#ifdef ENABLE_STDIO
FILE *f; FILE *f;
#endif
char *filename; char *filename;
int lineno; int lineno;
int column; int column;
...@@ -143,16 +145,22 @@ void mrb_parser_free(struct mrb_parser_state*); ...@@ -143,16 +145,22 @@ void mrb_parser_free(struct mrb_parser_state*);
void mrb_parser_parse(struct mrb_parser_state*,mrbc_context*); void mrb_parser_parse(struct mrb_parser_state*,mrbc_context*);
/* utility functions */ /* utility functions */
#ifdef ENABLE_STDIO
struct mrb_parser_state* mrb_parse_file(mrb_state*,FILE*,mrbc_context*); struct mrb_parser_state* mrb_parse_file(mrb_state*,FILE*,mrbc_context*);
#endif
struct mrb_parser_state* mrb_parse_string(mrb_state*,const char*,mrbc_context*); struct mrb_parser_state* mrb_parse_string(mrb_state*,const char*,mrbc_context*);
struct mrb_parser_state* mrb_parse_nstring(mrb_state*,const char*,int,mrbc_context*); struct mrb_parser_state* mrb_parse_nstring(mrb_state*,const char*,int,mrbc_context*);
int mrb_generate_code(mrb_state*, struct mrb_parser_state*); int mrb_generate_code(mrb_state*, struct mrb_parser_state*);
/* program load functions */ /* program load functions */
#ifdef ENABLE_STDIO
mrb_value mrb_load_file(mrb_state*,FILE*); mrb_value mrb_load_file(mrb_state*,FILE*);
#endif
mrb_value mrb_load_string(mrb_state *mrb, const char *s); mrb_value mrb_load_string(mrb_state *mrb, const char *s);
mrb_value mrb_load_nstring(mrb_state *mrb, const char *s, int len); mrb_value mrb_load_nstring(mrb_state *mrb, const char *s, int len);
#ifdef ENABLE_STDIO
mrb_value mrb_load_file_cxt(mrb_state*,FILE*, mrbc_context *cxt); mrb_value mrb_load_file_cxt(mrb_state*,FILE*, mrbc_context *cxt);
#endif
mrb_value mrb_load_string_cxt(mrb_state *mrb, const char *s, mrbc_context *cxt); mrb_value mrb_load_string_cxt(mrb_state *mrb, const char *s, mrbc_context *cxt);
mrb_value mrb_load_nstring_cxt(mrb_state *mrb, const char *s, int len, mrbc_context *cxt); mrb_value mrb_load_nstring_cxt(mrb_state *mrb, const char *s, int len, mrbc_context *cxt);
......
...@@ -3241,12 +3241,15 @@ nextc(parser_state *p) ...@@ -3241,12 +3241,15 @@ nextc(parser_state *p)
cons_free(tmp); cons_free(tmp);
} }
else { else {
#ifdef ENABLE_STDIO
if (p->f) { if (p->f) {
if (feof(p->f)) return -1; if (feof(p->f)) return -1;
c = fgetc(p->f); c = fgetc(p->f);
if (c == EOF) return -1; if (c == EOF) return -1;
} }
else if (!p->s || p->s >= p->send) { else
#endif
if (!p->s || p->s >= p->send) {
return -1; return -1;
} }
else { else {
...@@ -3304,6 +3307,7 @@ peeks(parser_state *p, const char *s) ...@@ -3304,6 +3307,7 @@ peeks(parser_state *p, const char *s)
{ {
int len = strlen(s); int len = strlen(s);
#ifdef ENABLE_STDIO
if (p->f) { if (p->f) {
int n = 0; int n = 0;
while (*s) { while (*s) {
...@@ -3311,7 +3315,9 @@ peeks(parser_state *p, const char *s) ...@@ -3311,7 +3315,9 @@ peeks(parser_state *p, const char *s)
} }
return TRUE; return TRUE;
} }
else if (p->s && p->s + len >= p->send) { else
#endif
if (p->s && p->s + len >= p->send) {
if (memcmp(p->s, s, len) == 0) return TRUE; if (memcmp(p->s, s, len) == 0) return TRUE;
} }
return FALSE; return FALSE;
...@@ -5079,7 +5085,9 @@ mrb_parser_new(mrb_state *mrb) ...@@ -5079,7 +5085,9 @@ mrb_parser_new(mrb_state *mrb)
p->in_def = p->in_single = 0; p->in_def = p->in_single = 0;
p->s = p->send = NULL; p->s = p->send = NULL;
#ifdef ENABLE_STDIO
p->f = NULL; p->f = NULL;
#endif
p->cmd_start = TRUE; p->cmd_start = TRUE;
p->in_def = p->in_single = FALSE; p->in_def = p->in_single = FALSE;
...@@ -5132,6 +5140,7 @@ mrbc_filename(mrb_state *mrb, mrbc_context *c, const char *s) ...@@ -5132,6 +5140,7 @@ mrbc_filename(mrb_state *mrb, mrbc_context *c, const char *s)
return c->filename; return c->filename;
} }
#ifdef ENABLE_STDIO
parser_state* parser_state*
mrb_parse_file(mrb_state *mrb, FILE *f, mrbc_context *c) mrb_parse_file(mrb_state *mrb, FILE *f, mrbc_context *c)
{ {
...@@ -5145,6 +5154,7 @@ mrb_parse_file(mrb_state *mrb, FILE *f, mrbc_context *c) ...@@ -5145,6 +5154,7 @@ mrb_parse_file(mrb_state *mrb, FILE *f, mrbc_context *c)
mrb_parser_parse(p, c); mrb_parser_parse(p, c);
return p; return p;
} }
#endif
parser_state* parser_state*
mrb_parse_nstring(mrb_state *mrb, const char *s, int len, mrbc_context *c) mrb_parse_nstring(mrb_state *mrb, const char *s, int len, mrbc_context *c)
...@@ -5208,6 +5218,7 @@ load_exec(mrb_state *mrb, parser_state *p, mrbc_context *c) ...@@ -5208,6 +5218,7 @@ load_exec(mrb_state *mrb, parser_state *p, mrbc_context *c)
return v; return v;
} }
#ifdef ENABLE_STDIO
mrb_value mrb_value
mrb_load_file_cxt(mrb_state *mrb, FILE *f, mrbc_context *c) mrb_load_file_cxt(mrb_state *mrb, FILE *f, mrbc_context *c)
{ {
...@@ -5219,6 +5230,7 @@ mrb_load_file(mrb_state *mrb, FILE *f) ...@@ -5219,6 +5230,7 @@ mrb_load_file(mrb_state *mrb, FILE *f)
{ {
return mrb_load_file_cxt(mrb, f, NULL); return mrb_load_file_cxt(mrb, f, NULL);
} }
#endif
mrb_value mrb_value
mrb_load_nstring_cxt(mrb_state *mrb, const char *s, int len, mrbc_context *c) mrb_load_nstring_cxt(mrb_state *mrb, const char *s, int len, mrbc_context *c)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment