DUK_EXTERNAL int sjs_vm_eval_file(const sjs_vm_t* vm, const char* filename, FILE* foutput, FILE* ferror, bool use_strict) { int r; char* data; char path[8192]; r = sjs__path_normalize(filename, path, sizeof(path)); if (r < 0) { if (ferror) { fprintf(ferror, "sjs: cannot open file '%s': [Errno %d] %s\n", filename, -r, strerror(-r)); fflush(ferror); } return r; } r = sjs__file_read(path, &data); if (r < 0) { if (ferror) { fprintf(ferror, "sjs: cannot open file '%s': [Errno %d] %s\n", filename, -r, strerror(-r)); fflush(ferror); } return r; } else if (r == 0) { /* also return in case of a 0 sized file */ free(data); return r; } else { r = sjs_vm_eval_code(vm, path, data, r, foutput, ferror, use_strict); free(data); return r; } }
DUK_EXTERNAL int sjs_vm_eval_file(const sjs_vm_t* vm, const char* filename, FILE* foutput, FILE* ferror) { int r; char* data; r = sjs__file_read(filename, &data); if (r < 0) { return r; } else if (r == 0) { /* also return in case of a 0 sized file */ free(data); return r; } else { r = sjs_vm_eval_code(vm, filename, data, r, foutput, ferror); free(data); return r; } }