diff options
Diffstat (limited to 'libacc/tests/main.cpp')
-rw-r--r-- | libacc/tests/main.cpp | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/libacc/tests/main.cpp b/libacc/tests/main.cpp index acee09d..4f8a65d 100644 --- a/libacc/tests/main.cpp +++ b/libacc/tests/main.cpp @@ -32,6 +32,7 @@ int run(MainPtr mainFunc, int argc, char** argv) { int main(int argc, char** argv) { const char* inFile = NULL; bool printListing; + bool runResults = false; FILE* in = stdin; int i; for (i = 1; i < argc; i++) { @@ -41,6 +42,9 @@ int main(int argc, char** argv) { case 'S': printListing = true; break; + case 'R': + runResults = true; + break; default: fprintf(stderr, "Unrecognized flag %s\n", arg); return 3; @@ -105,16 +109,20 @@ int main(int argc, char** argv) { } } - accGetScriptLabel(script, "main", (ACCvoid**) & mainPointer); + if (runResults) { + accGetScriptLabel(script, "main", (ACCvoid**) & mainPointer); - result = accGetError(script); - if (result == ACC_NO_ERROR) { - fprintf(stderr, "Executing compiled code:\n"); - int codeArgc = argc - i + 1; - char** codeArgv = argv + i - 1; - codeArgv[0] = (char*) (inFile ? inFile : "stdin"); - result = run(mainPointer, codeArgc, codeArgv); - fprintf(stderr, "result: %d\n", result); + result = accGetError(script); + if (result != ACC_NO_ERROR) { + fprintf(stderr, "Could not find main: %d\n", result); + } else { + fprintf(stderr, "Executing compiled code:\n"); + int codeArgc = argc - i + 1; + char** codeArgv = argv + i - 1; + codeArgv[0] = (char*) (inFile ? inFile : "stdin"); + result = run(mainPointer, codeArgc, codeArgv); + fprintf(stderr, "result: %d\n", result); + } } exit: |