diff options
Diffstat (limited to 'js/scripting-lang/baba-yaga-c/src/main.c')
-rw-r--r-- | js/scripting-lang/baba-yaga-c/src/main.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/js/scripting-lang/baba-yaga-c/src/main.c b/js/scripting-lang/baba-yaga-c/src/main.c index 84bbb56..c1bc9f8 100644 --- a/js/scripting-lang/baba-yaga-c/src/main.c +++ b/js/scripting-lang/baba-yaga-c/src/main.c @@ -105,7 +105,7 @@ int main(int argc, char* argv[]) { } else if (optind < argc) { /* Check if the argument looks like a file (not starting with -) */ char* arg = argv[optind]; - if (arg[0] != '-' && strchr(arg, ' ') == NULL && strchr(arg, ';') == NULL) { + if (arg[0] != '-' && access(arg, F_OK) == 0) { /* Treat as file */ run_file(interp, arg); } else { @@ -316,11 +316,21 @@ static void run_file(Interpreter* interp, const char* filename) { value = baba_yaga_execute(interp, source, strlen(source), &result); free(source); - if (result != EXEC_SUCCESS) { + if (result == EXEC_SUCCESS) { + /* Print result using value_to_string for consistent formatting */ + /* Don't print special IO return value */ + if (value.type != VAL_NUMBER || value.data.number != -999999) { + char* str = baba_yaga_value_to_string(&value); + printf("%s\n", str); + free(str); + } + } else { BabaYagaError* error = baba_yaga_get_error(interp); if (error != NULL) { fprintf(stderr, "Error: %s\n", error->message); baba_yaga_error_destroy(error); + } else { + fprintf(stderr, "Error: Execution failed\n"); } exit(EXIT_FAILURE); } |