diff options
author | Tim Potter <tpot@samba.org> | 2005-06-03 07:56:41 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:17:26 -0500 |
commit | 65d685c722ecf51bf84bb24af66c1f30c33b3b96 (patch) | |
tree | c8879021519c2a2d28be761e8cea4393e5b33d04 | |
parent | 0253adcab3157ec73cc96ad74b19faa2c87e067a (diff) | |
download | samba-65d685c722ecf51bf84bb24af66c1f30c33b3b96.tar.gz samba-65d685c722ecf51bf84bb24af66c1f30c33b3b96.tar.bz2 samba-65d685c722ecf51bf84bb24af66c1f30c33b3b96.zip |
r7214: Undo my interpreter patch. Tridge thought of a much better way to do it
that doesn't involve any changes to ejs at all.
(This used to be commit 7b49711ecb87e8618be5ae934ffed5995408b748)
-rw-r--r-- | source4/lib/ejs/ejs.c | 4 | ||||
-rw-r--r-- | source4/lib/ejs/ejsInternal.h | 5 | ||||
-rw-r--r-- | source4/lib/ejs/ejsLex.c | 20 | ||||
-rw-r--r-- | source4/lib/ejs/ejsParser.c | 27 |
4 files changed, 4 insertions, 52 deletions
diff --git a/source4/lib/ejs/ejs.c b/source4/lib/ejs/ejs.c index d0eaf6e389..41af795370 100644 --- a/source4/lib/ejs/ejs.c +++ b/source4/lib/ejs/ejs.c @@ -418,10 +418,8 @@ int ejsEvalScript(EjsId eid, char *script, MprVar *vp, char **emsg) endlessLoopTest = NULL; ep->exitStatus = 0; - ejsParse(ep, EJS_STATE_BEGIN, EJS_FLAGS_EXE); /* Skip over #! */ - do { - state = ejsParse(ep, EJS_STATE_STMT, EJS_FLAGS_EXE); + state = ejsParse(ep, EJS_STATE_BEGIN, EJS_FLAGS_EXE); if (state == EJS_STATE_RET) { state = EJS_STATE_EOF; diff --git a/source4/lib/ejs/ejsInternal.h b/source4/lib/ejs/ejsInternal.h index 2f776b8b79..4d54c4e8c6 100644 --- a/source4/lib/ejs/ejsInternal.h +++ b/source4/lib/ejs/ejsInternal.h @@ -100,7 +100,7 @@ extern "C" { #define EJS_TOK_IN 26 /* in */ #define EJS_TOK_FUNCTION 27 /* function */ #define EJS_TOK_NUMBER 28 /* Number */ -#define EJS_TOK_HASHBANG 29 /* #!/path/to/interpreter */ + /* * Expression operators */ @@ -150,7 +150,8 @@ extern "C" { #define EJS_STATE_DEC 18 /* Declaration statement */ #define EJS_STATE_DEC_DONE 19 #define EJS_STATE_RET 20 /* Return statement */ -#define EJS_STATE_BEGIN 21 /* Start of script */ + +#define EJS_STATE_BEGIN EJS_STATE_STMT /* * General parsing flags. diff --git a/source4/lib/ejs/ejsLex.c b/source4/lib/ejs/ejsLex.c index 81f56b092e..b0d6483c2a 100644 --- a/source4/lib/ejs/ejsLex.c +++ b/source4/lib/ejs/ejsLex.c @@ -674,26 +674,6 @@ static int getLexicalToken(Ejs *ep, int state) inputPutback(ep, c); return EJS_TOK_NUMBER; - case '#': - if (ip->lineNumber == 1) { - if ((c = inputGetc(ep)) < 0) { - ejsError(ep, "Syntax Error"); - return EJS_TOK_ERR; - } - if (c != '!') { - ejsError(ep, "Syntax Error"); - return EJS_TOK_ERR; - } - while ((c = inputGetc(ep)) != -1) { - if (c == '\r' || c == '\n') - break; - tokenAddChar(ep, c); - } - return EJS_TOK_HASHBANG; - } - - /* Fall through to default handling */ - default: /* * Identifiers or a function names diff --git a/source4/lib/ejs/ejsParser.c b/source4/lib/ejs/ejsParser.c index 942b08272e..17fe0ce98a 100644 --- a/source4/lib/ejs/ejsParser.c +++ b/source4/lib/ejs/ejsParser.c @@ -67,7 +67,6 @@ static int parseId(Ejs *ep, int state, int flags, char **id, static int parseInc(Ejs *ep, int state, int flags); static int parseIf(Ejs *ep, int state, int flags, int *done); static int parseStmt(Ejs *ep, int state, int flags); -static int parseHashBang(Ejs *ep, int state, int flags); static void removeNewlines(Ejs *ep, int state); static void updateResult(Ejs *ep, int state, int flags, MprVar *vp); @@ -82,12 +81,6 @@ int ejsParse(Ejs *ep, int state, int flags) switch (state) { /* - * The very start of a script. - */ - case EJS_STATE_BEGIN: - state = parseHashBang(ep, state, flags); - break; - /* * Any statement, function arguments or conditional expressions */ case EJS_STATE_STMT: @@ -149,26 +142,6 @@ int ejsParse(Ejs *ep, int state, int flags) /******************************************************************************/ /* - * Parse a #!/path/to/interpreter line which we just throw away. - */ - -static int parseHashBang(Ejs *ep, int state, int flags) -{ - int tid; - - /* Look for #! */ - - tid = ejsLexGetToken(ep, state); - - if (tid != EJS_TOK_HASHBANG) { - ejsLexPutbackToken(ep, tid, ep->token); - } - - return EJS_STATE_STMT; -} - -/******************************************************************************/ -/* * Parse any statement including functions and simple relational operations */ |