diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..73f69e0 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/discord.xml b/.idea/discord.xml new file mode 100644 index 0000000..d8e9561 --- /dev/null +++ b/.idea/discord.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..53624c9 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,18 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Makefile b/Makefile index 64b28e1..b7c70a0 100644 --- a/Makefile +++ b/Makefile @@ -2,9 +2,9 @@ sourcefiles := $(shell find src/impl/ -name *.c) all: - make build-main + make build -build-main: +build: mkdir -p dist/ && \ gcc -o dist/bf2c -I src/intf/ ${sourcefiles} diff --git a/src/impl/main.c b/src/impl/main.c index 9922eba..ac18604 100644 --- a/src/impl/main.c +++ b/src/impl/main.c @@ -4,6 +4,9 @@ #include "popen2.h" int is_arg(int ac, char **argv, char *arg) { + + + if (ac < 2) return 0; for(int x=1; x < ac; x++) if (0 == strcmp(argv[x], arg)) @@ -70,61 +73,70 @@ int main(int argc, char **argv) { out = fdopen(*fwd, "w"); } - fprintf(out, - "#include \n" - "#include \n\n" - "int main(int argc, char **argv) {\n" - "unsigned char *cell = calloc(%d, 1);\n" - "unsigned char *cells = cell;\n" - "if (!cell) {\n" - "fprintf(stderr, \"Error allocating memory.\\n\");\n" - "return 1;\n" - "}\n\n", cellsize - ); + fprintf(out, + "#include \n" + "#include \n\n" + "int main(int argc, char **argv) {\n" + "unsigned char *cell = calloc(%d, 1);\n" + "unsigned char *cells = cell;\n" + "if (!cell) {\n" + "fprintf(stderr, \"Error allocating memory.\\n\");\n" + "return 1;\n" + "}\n\n", cellsize + ); - a=1; + a = 1; - while (b!=EOF) { - c = getc(in); - switch (c) { - case '>': - case '<': - case '+': - case '-': - case '.': - case ',': - case '[': - case ']': - case EOF: - if (c!=EOF && b==c && optimise) a++; - else { - switch (b) { - case '>': addValueChange(out, "cell", true, a); break; - case '<': addValueChange(out, "cell", false, a); break; - case '+': addValueChange(out, "*cell", true, a); break; - case '-': addValueChange(out, "*cell", false, a); break; + while (b != EOF) { + c = getc(in); + switch (c) { + case '>': + case '<': + case '+': + case '-': case '.': - for (int i = 0; i < a; i++) fprintf(out, "putchar(*cell);\n"); - break; case ',': - for (int i = 0; i < a; i++) fprintf(out, "*cell = getchar();\n"); - break; case '[': - for (int i = 0; i < a; i++) fprintf(out, "while (*cell) {\n"); - break; case ']': - for (int i = 0; i < a; i++) fprintf(out, "}\n"); - break; - default: break; - } + case EOF: + if (c != EOF && b == c && optimise) a++; + else { + switch (b) { + case '>': + addValueChange(out, "cell", true, a); + break; + case '<': + addValueChange(out, "cell", false, a); + break; + case '+': + addValueChange(out, "*cell", true, a); + break; + case '-': + addValueChange(out, "*cell", false, a); + break; + case '.': + for (int i = 0; i < a; i++) fprintf(out, "putchar(*cell);\n"); + break; + case ',': + for (int i = 0; i < a; i++) fprintf(out, "*cell = getchar();\n"); + break; + case '[': + for (int i = 0; i < a; i++) fprintf(out, "while (*cell) {\n"); + break; + case ']': + for (int i = 0; i < a; i++) fprintf(out, "}\n"); + break; + default: + break; + } - // Reset for next loop - a = 1; - b = c; + // Reset for next loop + a = 1; + b = c; + } + break; } - break; } - } - fprintf(out, "\nfree(cells);\nreturn 0;\n}\n"); + fprintf(out, "\nfree(cells);\nreturn 0;\n}\n"); }