Преглед изворни кода

format for file source is independent of "ldo".

Roberto Ierusalimschy пре 26 година
родитељ
комит
f2d35bdc78
3 измењених фајлова са 15 додато и 9 уклоњено
  1. 8 1
      lauxlib.c
  2. 3 1
      lauxlib.h
  3. 4 7
      ldo.c

+ 8 - 1
lauxlib.c

@@ -1,5 +1,5 @@
 /*
-** $Id: lauxlib.c,v 1.14 1999/02/25 19:13:56 roberto Exp roberto $
+** $Id: lauxlib.c,v 1.15 1999/03/04 21:17:26 roberto Exp roberto $
 ** Auxiliary functions for building Lua libraries
 ** See Copyright Notice in lua.h
 */
@@ -126,3 +126,10 @@ void luaL_chunkid (char *out, char *source, int len) {
   }
 }
 
+
+void luaL_filesource (char *out, char *filename, int len) {
+  if (filename == NULL)
+    strcpy(out, "@(stdin)");
+  else
+    sprintf(out, "@%.*s", len-2, filename);  /* -2 for '@' and '\0' */
+}

+ 3 - 1
lauxlib.h

@@ -1,5 +1,5 @@
 /*
-** $Id: lauxlib.h,v 1.10 1998/12/28 13:44:54 roberto Exp roberto $
+** $Id: lauxlib.h,v 1.11 1999/03/04 21:17:26 roberto Exp roberto $
 ** Auxiliary functions for building Lua libraries
 ** See Copyright Notice in lua.h
 */
@@ -47,5 +47,7 @@ void luaL_oldbuffer (int old);
 char *luaL_buffer (void);
 int luaL_findstring (char *name, char *list[]);
 void luaL_chunkid (char *out, char *source, int len);
+void luaL_filesource (char *out, char *filename, int len);
+
 
 #endif

+ 4 - 7
ldo.c

@@ -1,5 +1,5 @@
 /*
-** $Id: ldo.c,v 1.37 1999/03/04 21:17:26 roberto Exp roberto $
+** $Id: ldo.c,v 1.38 1999/03/05 20:45:01 roberto Exp roberto $
 ** Stack and Call structure of Lua
 ** See Copyright Notice in lua.h
 */
@@ -362,20 +362,17 @@ int lua_dofile (char *filename) {
   int status;
   int c;
   int bin;
-  char name[MAXFILENAME+2];  /* +2 for '@' and '\0' */
+  char source[MAXFILENAME];
   FILE *f = (filename == NULL) ? stdin : fopen(filename, "r");
   if (f == NULL)
     return 2;
-  if (filename == NULL)
-    strcpy(name, "@(stdin)");
-  else
-    sprintf(name, "@%.*s", MAXFILENAME, filename);
   c = fgetc(f);
   ungetc(c, f);
   bin = (c == ID_CHUNK);
   if (bin)
     f = freopen(filename, "rb", f);  /* set binary mode */
-  luaZ_Fopen(&z, f, name);
+  luaL_filesource(source, filename, MAXFILENAME);
+  luaZ_Fopen(&z, f, source);
   status = do_main(&z, bin);
   if (f != stdin)
     fclose(f);