From d6232a0b2e53d6bd374c762a4f47e7a8799de5d2 Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Mon, 9 Oct 2000 11:47:32 -0200 Subject: better treatment for source names --- ldo.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'ldo.c') diff --git a/ldo.c b/ldo.c index a3752042..46d53d57 100644 --- a/ldo.c +++ b/ldo.c @@ -1,5 +1,5 @@ /* -** $Id: ldo.c,v 1.103 2000/10/05 13:00:17 roberto Exp roberto $ +** $Id: ldo.c,v 1.104 2000/10/06 12:45:25 roberto Exp roberto $ ** Stack and Call structure of Lua ** See Copyright Notice in lua.h */ @@ -260,14 +260,16 @@ static int protectedparser (lua_State *L, ZIO *z, int bin) { static int parse_file (lua_State *L, const char *filename) { ZIO z; - char source[MAXFILENAME]; int status; int bin; /* flag for file mode */ int c; /* look ahead char */ FILE *f = (filename == NULL) ? stdin : fopen(filename, "r"); if (f == NULL) return LUA_ERRFILE; /* unable to open file */ - if (filename == NULL) filename = "(stdin)"; - sprintf(source, "@%.*s", (int)sizeof(source)-2, filename); + lua_pushstring(L, "@"); + lua_pushstring(L, (filename == NULL) ? "(stdin)" : filename); + lua_concat(L, 2); + filename = lua_tostring(L, -1); /* filename = '@'..filename */ + lua_pop(L, 1); /* OK: there is no GC during parser */ c = fgetc(f); ungetc(c, f); bin = (c == ID_CHUNK); @@ -275,7 +277,7 @@ static int parse_file (lua_State *L, const char *filename) { f = freopen(filename, "rb", f); /* set binary mode */ if (f == NULL) return LUA_ERRFILE; /* unable to reopen file */ } - luaZ_Fopen(&z, f, source); + luaZ_Fopen(&z, f, filename); status = protectedparser(L, &z, bin); if (f != stdin) fclose(f); -- cgit v1.2.3-55-g6feb