summaryrefslogtreecommitdiffhomepage
path: root/src/load.c
diff options
context:
space:
mode:
authorMasaki Muranaka <[email protected]>2013-02-23 17:05:18 +0900
committerMasaki Muranaka <[email protected]>2013-02-23 17:05:18 +0900
commit2bfb88825de745714f2ae56f13ccaf079fc10d88 (patch)
tree73d8dcae25b8afc4bbbcf2078798720d4934a388 /src/load.c
parent58b9e7672474160df90ba11c915eeac093fe12d2 (diff)
downloadmruby-2bfb88825de745714f2ae56f13ccaf079fc10d88.tar.gz
mruby-2bfb88825de745714f2ae56f13ccaf079fc10d88.zip
Fix errors caused by stdio.h dependent code.
Diffstat (limited to 'src/load.c')
-rw-r--r--src/load.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/src/load.c b/src/load.c
index a61af509c..850fa6e8d 100644
--- a/src/load.c
+++ b/src/load.c
@@ -11,6 +11,7 @@
#include "mruby/proc.h"
#include "mruby/irep.h"
+#ifdef ENABLE_STDIO
typedef struct _RiteFILE
{
FILE* fp;
@@ -18,6 +19,7 @@ typedef struct _RiteFILE
int cnt;
int readlen;
} RiteFILE;
+#endif
const char hex2bin[256] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //00-0f
@@ -38,15 +40,18 @@ static uint16_t hex_to_uint16(unsigned char*);
static uint32_t hex_to_uint32(unsigned char*);
static char* hex_to_str(char*,char*,uint16_t*);
uint16_t calc_crc_16_ccitt(unsigned char*,int);
+#ifdef ENABLE_STDIO
static unsigned char rite_fgetcSub(RiteFILE*);
static unsigned char rite_fgetc(RiteFILE*,int);
static unsigned char* rite_fgets(RiteFILE*,unsigned char*,int,int);
static int load_rite_header(FILE*,rite_binary_header*,unsigned char*);
static int load_rite_irep_record(mrb_state*, RiteFILE*,unsigned char*,uint32_t*);
+#endif
static int read_rite_header(mrb_state*,unsigned char*,rite_binary_header*);
static int read_rite_irep_record(mrb_state*,unsigned char*,uint32_t*);
+#ifdef ENABLE_STDIO
static unsigned char
rite_fgetcSub(RiteFILE* rfp)
{
@@ -65,7 +70,9 @@ rite_fgetcSub(RiteFILE* rfp)
}
return rfp->buf[(rfp->cnt)++];
}
+#endif /* ENABLE_STDIO */
+#ifdef ENABLE_STDIO
static unsigned char
rite_fgetc(RiteFILE* rfp, int ignorecomment)
{
@@ -87,7 +94,9 @@ rite_fgetc(RiteFILE* rfp, int ignorecomment)
}
}
}
+#endif /* ENABLE_STDIO */
+#ifdef ENABLE_STDIO
static unsigned char*
rite_fgets(RiteFILE* rfp, unsigned char* dst, int len, int ignorecomment)
{
@@ -100,7 +109,9 @@ rite_fgets(RiteFILE* rfp, unsigned char* dst, int len, int ignorecomment)
}
return dst;
}
+#endif /* ENABLE_STDIO */
+#ifdef ENABLE_STDIO
static int
load_rite_header(FILE* fp, rite_binary_header* bin_header, unsigned char* hcrc)
{
@@ -128,7 +139,9 @@ load_rite_header(FILE* fp, rite_binary_header* bin_header, unsigned char* hcrc)
return MRB_DUMP_OK;
}
+#endif /* ENABLE_STDIO */
+#ifdef ENABLE_STDIO
static int
load_rite_irep_record(mrb_state *mrb, RiteFILE* rfp, unsigned char* dst, uint32_t* len)
{
@@ -152,8 +165,10 @@ load_rite_irep_record(mrb_state *mrb, RiteFILE* rfp, unsigned char* dst, uint32_
//IREP HEADER BLOCK
*dst = rite_fgetc(rfp, TRUE); //record identifier
- if (*dst != RITE_IREP_IDENFIFIER)
- return MRB_DUMP_INVALID_IREP;
+ if (*dst != RITE_IREP_IDENFIFIER) {
+ result = MRB_DUMP_INVALID_IREP;
+ goto error_exit;
+ }
dst += sizeof(unsigned char);
*dst = rite_fgetc(rfp, TRUE); //class or module
dst += sizeof(unsigned char);
@@ -247,7 +262,9 @@ error_exit:
return result;
}
+#endif /* ENABLE_STDIO */
+#ifdef ENABLE_STDIO
int
mrb_read_irep_file(mrb_state *mrb, FILE* fp)
{
@@ -306,6 +323,7 @@ error_exit:
return ret;
}
+#endif /* ENABLE_STDIO */
static int
read_rite_header(mrb_state *mrb, unsigned char *bin, rite_binary_header* bin_header)
@@ -668,6 +686,7 @@ irep_error(mrb_state *mrb, int n)
mrb->exc = (struct RObject*)mrb_object(mrb_exc_new(mrb, E_SCRIPT_ERROR, msg, sizeof(msg) - 1));
}
+#ifdef ENABLE_STDIO
mrb_value
mrb_load_irep_file(mrb_state *mrb, FILE* fp)
{
@@ -679,6 +698,7 @@ mrb_load_irep_file(mrb_state *mrb, FILE* fp)
}
return mrb_run(mrb, mrb_proc_new(mrb, mrb->irep[n]), mrb_top_self(mrb));
}
+#endif
mrb_value
mrb_load_irep(mrb_state *mrb, const char *bin)