From c695b53a759cb7209e4b15abaec365fa0049bdc4 Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Thu, 2 Jan 2020 14:30:43 +0100 Subject: [PATCH] Issue 117: Skip first line if it starts with a shebang when loading files. A file that starts with #! is going to be a syntax error anyway, so we won't be changing the behavior of any other valid source files with this fix. --- jsstate.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/jsstate.c b/jsstate.c index 75b7842..2974336 100644 --- a/jsstate.c +++ b/jsstate.c @@ -130,7 +130,7 @@ void js_loadstring(js_State *J, const char *filename, const char *source) void js_loadfile(js_State *J, const char *filename) { FILE *f; - char *s; + char *s, *p; int n, t; f = fopen(filename, "rb"); @@ -176,7 +176,15 @@ void js_loadfile(js_State *J, const char *filename) js_throw(J); } - js_loadstring(J, filename, s); + /* skip first line if it starts with "#!" */ + p = s; + if (p[0] == '#' && p[1] == '!') { + p += 2; + while (*p && *p != '\n') + ++p; + } + + js_loadstring(J, filename, p); js_free(J, s); fclose(f);