summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2013-02-23 21:26:37 -0800
committerYukihiro "Matz" Matsumoto <[email protected]>2013-02-23 21:26:37 -0800
commita6d7de5dab594b0ba85c80246f59eb43774a707d (patch)
treeeda288b230308b10945cf8c23d0a01cee190b940
parent231be7c2317b7feac6c05d71aefe618f3aa93114 (diff)
parent2bfb88825de745714f2ae56f13ccaf079fc10d88 (diff)
downloadmruby-a6d7de5dab594b0ba85c80246f59eb43774a707d.tar.gz
mruby-a6d7de5dab594b0ba85c80246f59eb43774a707d.zip
Merge pull request #875 from monaka/pr-enable-building-libmruby-with-DISABLE_STDIO-macro
Fix errors caused by stdio.h dependent code.
-rw-r--r--include/mruby/dump.h14
-rw-r--r--src/dump.c4
-rw-r--r--src/load.c24
3 files changed, 36 insertions, 6 deletions
diff --git a/include/mruby/dump.h b/include/mruby/dump.h
index 650651a7e..eb8fe55dd 100644
--- a/include/mruby/dump.h
+++ b/include/mruby/dump.h
@@ -12,16 +12,22 @@ extern "C" {
#endif
#include "mruby.h"
+#ifdef ENABLE_STDIO
#include <stdio.h>
+#endif
#include <stdint.h>
+#ifdef ENABLE_STDIO
int mrb_dump_irep(mrb_state*,int,FILE*);
-int mrb_read_irep(mrb_state*,const char*);
+int mrb_bdump_irep(mrb_state *mrb, int n, FILE *f,const char *initname);
+
int mrb_read_irep_file(mrb_state*,FILE*);
-/* mrb_value mrb_load_irep(mrb_state*,const char*); */ /* declared in <irep.h> */
-mrb_value mrb_load_irep_file(mrb_state*,FILE*);
+#endif
+int mrb_read_irep(mrb_state*,const char*);
-int mrb_bdump_irep(mrb_state *mrb, int n, FILE *f,const char *initname);
+#ifdef ENABLE_STDIO
+mrb_value mrb_load_irep_file(mrb_state*,FILE*);
+#endif
/* dump type */
#define DUMP_TYPE_CODE 0
diff --git a/src/dump.c b/src/dump.c
index e2878bfed..b73e7104e 100644
--- a/src/dump.c
+++ b/src/dump.c
@@ -50,6 +50,8 @@ enum {
DUMP_SECTION_NUM,
};
+#ifdef ENABLE_STDIO
+
uint16_t calc_crc_16_ccitt(unsigned char*,int);
static inline int uint8_dump(uint8_t,char*,int);
static inline int uint16_dump(uint16_t,char*,int);
@@ -741,3 +743,5 @@ mrb_bdump_irep(mrb_state *mrb, int n, FILE *f,const char *initname)
return rc;
}
+
+#endif /* ENABLE_STDIO */
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)