summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDaniel Bovensiepen <[email protected]>2012-09-23 22:59:37 +0800
committerDaniel Bovensiepen <[email protected]>2012-09-23 22:59:37 +0800
commitb4c4fce03fb21105874f0e37ec091d8bbcd8c81f (patch)
treec2908d0f5392ffe432d32a926e0d8a9591137aed
parent62b652c2925b2f71972b201a8134cf22183102b0 (diff)
downloadmruby-b4c4fce03fb21105874f0e37ec091d8bbcd8c81f.tar.gz
mruby-b4c4fce03fb21105874f0e37ec091d8bbcd8c81f.zip
Modify generator for using printf
-rw-r--r--mrbgems/generator.c172
1 files changed, 88 insertions, 84 deletions
diff --git a/mrbgems/generator.c b/mrbgems/generator.c
index f33a43944..ddcc6ab3a 100644
--- a/mrbgems/generator.c
+++ b/mrbgems/generator.c
@@ -5,6 +5,7 @@
#include <sys/types.h>
#include <sys/stat.h>
#include <mrbconf.h>
+#include <stdlib.h>
static int
one (const struct dirent *unused)
@@ -45,8 +46,8 @@ directory_exists(char path[4096]) {
* FALSE => template for all GEMs
*
*/
-static char
-*for_each_gem (char before[1024], char after[1024],
+static char*
+for_each_gem (char before[1024], char after[1024],
char start[1024], char end[1024],
char dir_to_skip[1024])
{
@@ -54,10 +55,12 @@ static char
int n;
char gemname[1024] = "";
char gemname_path[4096] = "";
- char complete_line[4096] = "";
char src_path[4096] = "";
struct stat attribut;
+ // return value
+ char* complete_line = malloc(4096 + sizeof(char));
+
strcat(complete_line, start);
n = scandir("./g", &eps, one, alphasort);
@@ -114,102 +117,100 @@ make_gem_makefile()
int gem_c_empty;
int gem_ruby_empty;
- puts("CFLAGS := -I. -I../../include -I../../src");
- puts("");
- puts("ifeq ($(OS),Windows_NT)");
- puts("MAKE_FLAGS = --no-print-directory CC=$(CC) LL=$(LL) ALL_CFLAGS='$(ALL_CFLAGS)'");
- puts("else");
- puts("MAKE_FLAGS = --no-print-directory CC='$(CC)' LL='$(LL)' ALL_CFLAGS='$(ALL_CFLAGS)'");
- puts("endif");
- puts("");
+ printf("CFLAGS := -I. -I../../include -I../../src\n\n"
+ "ifeq ($(OS),Windows_NT)\n"
+ "MAKE_FLAGS = --no-print-directory CC=$(CC) LL=$(LL) ALL_CFLAGS='$(ALL_CFLAGS)'\n"
+ "else\n"
+ "MAKE_FLAGS = --no-print-directory CC='$(CC)' LL='$(LL)' ALL_CFLAGS='$(ALL_CFLAGS)'\n"
+ "endif\n\n");
+ /* is there any GEM available? */
gem_check = for_each_gem("", "", "", "", "");
if (strcmp(gem_check, "") == 0)
gem_empty = TRUE;
else
gem_empty = FALSE;
+ /* is there a C extension available? */
gem_check = for_each_gem("", "", "", "", "src");
if (strcmp(gem_check, "") == 0)
gem_c_empty = TRUE;
- else
+ else
gem_c_empty = FALSE;
+ /* is there a Ruby extension available */
gem_check = for_each_gem("", "", "", "", "mrblib");
if (strcmp(gem_check, "") == 0)
gem_ruby_empty = TRUE;
- else
+ else
gem_ruby_empty = FALSE;
- puts(".PHONY : all");
+ printf(".PHONY : all\n");
if (gem_empty) {
- puts("all :");
- puts("");
+ printf("all :\n\n");
}
else {
if (gem_c_empty) {
- puts("all : mrblib_gem.o");
- puts("\t$(AR) rs ../../lib/libmruby.a mrblib_gem.o");
+ printf("all : mrblib_gem.o\n"
+ "\t$(AR) rs ../../lib/libmruby.a mrblib_gem.o\n");
}
else if (gem_ruby_empty) {
- puts("all : all_gems");
+ printf("all : all_gems\n");
}
else {
- puts("all : all_gems mrblib_gem.o");
- puts("\t$(AR) rs ../../lib/libmruby.a mrblib_gem.o");
+ printf("all : all_gems mrblib_gem.o\n"
+ "\t$(AR) rs ../../lib/libmruby.a mrblib_gem.o\n");
}
- puts("");
+ printf("\n");
// Rule for building all C extensions of each Gem
if (!gem_c_empty) {
- puts("all_gems :");
- puts(for_each_gem("\t@$(MAKE) -C ", " $(MAKE_FLAGS)\n", "", "", ""));
- puts("");
+ printf("all_gems :\n%s",
+ for_each_gem("\t@$(MAKE) -C ", " $(MAKE_FLAGS)\n", "", "", "")
+ );
}
// Rule for building all Ruby Extension of each Gem
if (!gem_ruby_empty) {
- puts("mrblib_gem.o : mrblib_gem.c");
- puts("");
+ printf("mrblib_gem.o : mrblib_gem.c\n\n"
- puts("mrblib_gem.c : mrblib_gem.ctmp");
- puts("\tcat $< > $@");
- puts("");
+ "mrblib_gem.c : mrblib_gem.ctmp\n"
+ "\tcat $< > $@\n\n"
- puts("mrblib_gem.ctmp : mrblib_gem.rbtmp");
- puts("\t../../bin/mrbc -Bmrblib_gem_irep -o$@ $<");
- puts("");
+ "mrblib_gem.ctmp : mrblib_gem.rbtmp\n"
+ "\t../../bin/mrbc -Bmrblib_gem_irep -o$@ $<\n\n"
- puts("mrblib_gem.rbtmp :");
- puts(for_each_gem(" ", "/mrblib/*.rb", "\tcat", "> mrblib_gem.rbtmp", "mrblib"));
- puts("");
+ "mrblib_gem.rbtmp :\n%s",
+ for_each_gem(" ", "/mrblib/*.rb", "\tcat", "> mrblib_gem.rbtmp", "mrblib")
+ );
}
}
- puts(".PHONY : prepare-test");
- puts("prepare-test : mrbgemtest.ctmp");
- puts("");
+ printf(".PHONY : prepare-test\n"
+ "prepare-test : mrbgemtest.ctmp\n\n"
- puts("mrbgemtest.ctmp : mrbgemtest.rbtmp");
- puts("\t../../bin/mrbc -Bmrbgemtest_irep -omrbgemtest.ctmp mrbgemtest.rbtmp");
- puts("");
+ "mrbgemtest.ctmp : mrbgemtest.rbtmp\n"
+ "\t../../bin/mrbc -Bmrbgemtest_irep -omrbgemtest.ctmp mrbgemtest.rbtmp\n\n"
- puts("mrbgemtest.rbtmp :");
+ "mrbgemtest.rbtmp :\n"
+ );
if (!gem_empty)
- puts(for_each_gem(" ", "/test/*.rb ", "\tcat", " > mrbgemtest.rbtmp", ""));
+ printf("%s",
+ for_each_gem(" ", "/test/*.rb ", "\tcat", " > mrbgemtest.rbtmp", "")
+ );
else
- puts("\t../generator rbtmp > mrbgemtest.rbtmp");
+ printf("\t../generator rbtmp > mrbgemtest.rbtmp\n");
- puts("");
-
- puts(".PHONY : clean");
- puts("clean :");
- puts("\t$(RM) *.c *.d *.rbtmp *.ctmp *.o mrbtest");
+ printf("\n.PHONY : clean\n"
+ "clean :\n"
+ "\t$(RM) *.c *.d *.rbtmp *.ctmp *.o mrbtest\n");
if (!gem_empty)
- puts(for_each_gem("\t@$(MAKE) clean -C ", " $(MAKE_FLAGS)\n", "", "", ""));
+ printf("%s",
+ for_each_gem("\t@$(MAKE) clean -C ", " $(MAKE_FLAGS)\n", "", "", "")
+ );
}
/*
@@ -224,72 +225,75 @@ make_init_gems()
int gem_c_empty;
int gem_ruby_empty;
+ /* is there any GEM available? */
gem_check = for_each_gem("", "", "", "", "");
if (strcmp(gem_check, "") == 0)
gem_empty = TRUE;
else
gem_empty = FALSE;
+ /* is there a C extension available? */
gem_check = for_each_gem("", "", "", "", "src");
if (strcmp(gem_check, "") == 0)
gem_c_empty = TRUE;
else
gem_c_empty = FALSE;
+ /* is there a Ruby extension available */
gem_check = for_each_gem("", "", "", "", "mrblib");
if (strcmp(gem_check, "") == 0)
gem_ruby_empty = TRUE;
else
gem_ruby_empty = FALSE;
- puts("/*");
- puts(" * This file contains a list of all");
- puts(" * initializing methods which are");
- puts(" * necessary to bootstrap all gems.");
- puts(" *");
- puts(" * IMPORTANT:");
- puts(" * This file was generated!");
- puts(" * All manual changes will get lost.");
- puts(" */");
-
- puts("");
- puts("#include \"mruby.h\"");
- puts("#include \"mruby/irep.h\"");
- puts("#include \"mruby/dump.h\"");
- puts("#include \"mruby/string.h\"");
- puts("#include \"mruby/proc.h\"");
- puts("");
+ printf("/*\n"
+ " * This file contains a list of all\n"
+ " * initializing methods which are\n"
+ " * necessary to bootstrap all gems.\n"
+ " *\n"
+ " * IMPORTANT:\n"
+ " * This file was generated!\n"
+ " * All manual changes will get lost.\n"
+ " */\n\n"
+ "#include \"mruby.h\"\n"
+ "#include \"mruby/irep.h\"\n"
+ "#include \"mruby/dump.h\"\n"
+ "#include \"mruby/string.h\"\n"
+ "#include \"mruby/proc.h\"\n"
+ "");
if (!gem_c_empty)
- puts(for_each_gem("void mrb_", "_gem_init(mrb_state*);\n", "", "", "src"));
+ printf("%s",
+ for_each_gem("void mrb_", "_gem_init(mrb_state*);\n", "", "", "src")
+ );
if (!gem_ruby_empty)
- puts("extern const char mrblib_gem_irep[];");
-
- puts("");
+ printf("extern const char mrblib_gem_irep[];\n");
- puts("void");
- puts("mrb_init_mrbgems(mrb_state *mrb) {");
+ printf("\nvoid\n"
+ "mrb_init_mrbgems(mrb_state *mrb) {");
if (!gem_c_empty)
- puts(for_each_gem(" mrb_", "_gem_init(mrb);\n", "", "", "src"));
+ printf("%s",
+ for_each_gem(" mrb_", "_gem_init(mrb);\n", "", "", "src")
+ );
if (!gem_ruby_empty) {
- puts(" int n = mrb_read_irep(mrb, mrblib_gem_irep);");
- puts(" mrb_run(mrb, mrb_proc_new(mrb, mrb->irep[n]), mrb_top_self(mrb));");
- puts(" if (mrb->exc) {");
- puts(" mrb_p(mrb, mrb_obj_value(mrb->exc));");
- puts(" exit(0);");
- puts(" }");
+ printf(" int n = mrb_read_irep(mrb, mrblib_gem_irep);\n"
+ " mrb_run(mrb, mrb_proc_new(mrb, mrb->irep[n]), mrb_top_self(mrb));\n"
+ " if (mrb->exc) {\n"
+ " mrb_p(mrb, mrb_obj_value(mrb->exc));\n"
+ " exit(0);\n"
+ " }");
}
- puts("}");
+ printf("}");
}
void
make_rbtmp()
{
- puts("");
+ printf("\n");
}
int
@@ -306,7 +310,7 @@ main (int argc, char *argv[])
return 1;
}
else {
- puts("Argument missing! Options: 'makefile', 'init_gems', 'rbtmp'");
+ printf("Argument missing! Options: 'makefile', 'init_gems', 'rbtmp'");
return 1;
}