浏览代码

`lauxlib' is now part of the libraries (not used by core Lua)

Roberto Ierusalimschy 25 年之前
父节点
当前提交
8060193702
共有 14 个文件被更改,包括 134 次插入122 次删除
  1. 3 4
      lapi.c
  2. 1 23
      lauxlib.c
  3. 1 2
      lauxlib.h
  4. 16 12
      ldebug.c
  5. 1 2
      ldo.c
  6. 8 10
      liolib.c
  7. 3 4
      llex.c
  8. 35 1
      lobject.c
  9. 4 1
      lobject.h
  10. 1 2
      ltable.c
  11. 17 9
      ltm.c
  12. 6 4
      luadebug.h
  13. 9 10
      lundump.c
  14. 29 38
      makefile

+ 3 - 4
lapi.c

@@ -1,5 +1,5 @@
 /*
-** $Id: lapi.c,v 1.94 2000/09/05 19:33:32 roberto Exp roberto $
+** $Id: lapi.c,v 1.95 2000/09/11 19:45:27 roberto Exp roberto $
 ** Lua API
 ** See Copyright Notice in lua.h
 */
@@ -10,7 +10,6 @@
 #include "lua.h"
 
 #include "lapi.h"
-#include "lauxlib.h"
 #include "ldo.h"
 #include "lfunc.h"
 #include "lgc.h"
@@ -234,7 +233,7 @@ void lua_pushcclosure (lua_State *L, lua_CFunction fn, int n) {
 void lua_pushusertag (lua_State *L, void *u, int tag) {  /* ORDER LUA_T */
   luaC_checkGC(L);
   if (tag != LUA_ANYTAG && tag != TAG_USERDATA && tag < NUM_TAGS)
-    luaL_verror(L, "invalid tag for a userdata (%d)", tag);
+    luaO_verror(L, "invalid tag for a userdata (%d)", tag);
   tsvalue(L->top) = luaS_createudata(L, u, tag);
   ttype(L->top) = TAG_USERDATA;
   api_incr_top(L);
@@ -387,7 +386,7 @@ void lua_settag (lua_State *L, int tag) {
       tsvalue(L->top-1)->u.d.tag = tag;
       break;
     default:
-      luaL_verror(L, "cannot change the tag of a %.20s",
+      luaO_verror(L, "cannot change the tag of a %.20s",
                   luaO_typename(L->top-1));
   }
   L->top--;

+ 1 - 23
lauxlib.c

@@ -1,5 +1,5 @@
 /*
-** $Id: lauxlib.c,v 1.33 2000/08/29 20:43:28 roberto Exp roberto $
+** $Id: lauxlib.c,v 1.34 2000/09/11 17:38:42 roberto Exp roberto $
 ** Auxiliary functions for building Lua libraries
 ** See Copyright Notice in lua.h
 */
@@ -118,28 +118,6 @@ void luaL_verror (lua_State *L, const char *fmt, ...) {
 }
 
 
-#define EXTRALEN	sizeof("string \"...\"0")
-
-void luaL_chunkid (char *out, const char *source, int len) {
-  if (*source == '(') {
-    strncpy(out, source+1, len-1);  /* remove first char */
-    out[len-1] = '\0';  /* make sure `out' has an end */
-    out[strlen(out)-1] = '\0';  /* remove last char */
-  }
-  else {
-    len -= EXTRALEN;
-    if (*source == '@')
-      sprintf(out, "file `%.*s'", len, source+1);
-    else {
-      const char *b = strchr(source , '\n');  /* stop at first new line */
-      int lim = (b && (b-source)<len) ? b-source : len;
-      sprintf(out, "string \"%.*s\"", lim, source);
-      strcpy(out+lim+(EXTRALEN-sizeof("...\"0")), "...\"");
-    }
-  }
-}
-
-
 /*
 ** {======================================================
 ** Generic Buffer manipulation

+ 1 - 2
lauxlib.h

@@ -1,5 +1,5 @@
 /*
-** $Id: lauxlib.h,v 1.22 2000/09/04 18:27:32 roberto Exp roberto $
+** $Id: lauxlib.h,v 1.23 2000/09/11 17:38:42 roberto Exp roberto $
 ** Auxiliary functions for building Lua libraries
 ** See Copyright Notice in lua.h
 */
@@ -34,7 +34,6 @@ void luaL_checktype (lua_State *L, int narg, const char *tname);
 
 void luaL_verror (lua_State *L, const char *fmt, ...);
 int luaL_findstring (const char *name, const char *const list[]);
-void luaL_chunkid (char *out, const char *source, int len);
 
 
 

+ 16 - 12
ldebug.c

@@ -1,5 +1,5 @@
 /*
-** $Id: ldebug.c,v 1.38 2000/08/28 20:22:21 roberto Exp roberto $
+** $Id: ldebug.c,v 1.39 2000/08/31 13:29:12 roberto Exp roberto $
 ** Debug Interface
 ** See Copyright Notice in lua.h
 */
@@ -10,7 +10,6 @@
 #include "lua.h"
 
 #include "lapi.h"
-#include "lauxlib.h"
 #include "lcode.h"
 #include "ldebug.h"
 #include "ldo.h"
@@ -18,6 +17,7 @@
 #include "lobject.h"
 #include "lopcodes.h"
 #include "lstate.h"
+#include "lstring.h"
 #include "ltable.h"
 #include "ltm.h"
 #include "luadebug.h"
@@ -172,17 +172,20 @@ const char *lua_setlocal (lua_State *L, const lua_Debug *ar, int localnum) {
 }
 
 
+static void infoLproto (lua_Debug *ar, Proto *f) {
+  ar->source = f->source->str;
+  ar->linedefined = f->lineDefined;
+  ar->what = "Lua";
+}
+
+
 static void lua_funcinfo (lua_Debug *ar, StkId func) {
   switch (ttype(func)) {
     case TAG_LCLOSURE:
-      ar->source = clvalue(func)->f.l->source->str;
-      ar->linedefined = clvalue(func)->f.l->lineDefined;
-      ar->what = "Lua";
+      infoLproto(ar, clvalue(func)->f.l);
       break;
     case TAG_LMARK:
-      ar->source = infovalue(func)->func->f.l->source->str;
-      ar->linedefined = infovalue(func)->func->f.l->lineDefined;
-      ar->what = "Lua";
+      infoLproto(ar, infovalue(func)->func->f.l);
       break;
     case TAG_CCLOSURE:  case TAG_CMARK:
       ar->source = "(C)";
@@ -192,6 +195,7 @@ static void lua_funcinfo (lua_Debug *ar, StkId func) {
     default:
       LUA_INTERNALERROR("invalid `func' value");
   }
+  luaO_chunkid(ar->source_id, ar->source, sizeof(ar->source_id));
   if (ar->linedefined == 0)
     ar->what = "main";
 }
@@ -431,10 +435,10 @@ void luaG_typeerror (lua_State *L, StkId o, const char *op) {
   const char *kind = getobjname(L, o, &name);
   const char *t = luaO_typename(o);
   if (kind)
-    luaL_verror(L, "attempt to %.30s %.20s `%.40s' (a %.10s value)",
+    luaO_verror(L, "attempt to %.30s %.20s `%.40s' (a %.10s value)",
                 op, kind, name, t);
   else
-    luaL_verror(L, "attempt to %.30s a %.10s value", op, t);
+    luaO_verror(L, "attempt to %.30s a %.10s value", op, t);
 }
 
 
@@ -449,8 +453,8 @@ void luaG_ordererror (lua_State *L, StkId top) {
   const char *t1 = luaO_typename(top-2);
   const char *t2 = luaO_typename(top-1);
   if (t1[2] == t2[2])
-    luaL_verror(L, "attempt to compare two %.10s values", t1);
+    luaO_verror(L, "attempt to compare two %.10s values", t1);
   else
-    luaL_verror(L, "attempt to compare %.10s with %.10s", t1, t2);
+    luaO_verror(L, "attempt to compare %.10s with %.10s", t1, t2);
 }
 

+ 1 - 2
ldo.c

@@ -1,5 +1,5 @@
 /*
-** $Id: ldo.c,v 1.93 2000/09/04 18:52:51 roberto Exp roberto $
+** $Id: ldo.c,v 1.94 2000/09/11 17:38:42 roberto Exp roberto $
 ** Stack and Call structure of Lua
 ** See Copyright Notice in lua.h
 */
@@ -12,7 +12,6 @@
 
 #include "lua.h"
 
-#include "lauxlib.h"
 #include "ldebug.h"
 #include "ldo.h"
 #include "lgc.h"

+ 8 - 10
liolib.c

@@ -1,5 +1,5 @@
 /*
-** $Id: liolib.c,v 1.77 2000/09/05 19:33:32 roberto Exp $
+** $Id: liolib.c,v 1.78 2000/09/11 17:38:42 roberto Exp roberto $
 ** Standard I/O (and system) library
 ** See Copyright Notice in lua.h
 */
@@ -393,8 +393,8 @@ static int io_read (lua_State *L) {
     firstarg = lastarg = 1;  /* correct indices */
     lua_pushstring(L, "*l");  /* push default argument */
   }
-  else
-    luaL_checkstack(L, lastarg-firstarg+1, "too many arguments");
+  else  /* ensure stack space for all results and for auxlib's buffer */
+    luaL_checkstack(L, lastarg-firstarg+1+LUA_MINSTACK, "too many arguments");
   for (n = firstarg; n<=lastarg; n++) {
     int success;
     if (lua_isnumber(L, n))
@@ -598,7 +598,6 @@ static int errorfb (lua_State *L) {
   lua_concat(L, 3);
   while (lua_getstack(L, level++, &ar)) {
     char buff[120];  /* enough to fit following `sprintf's */
-    char buffchunk[60];
     int toconcat = 1;  /* number of strings in the stack to concat */
     if (level > LEVELS1 && firstpart) {
       /* no more than `LEVELS2' more levels? */
@@ -607,7 +606,7 @@ static int errorfb (lua_State *L) {
       else {
         lua_pushstring(L, "       ...\n");  /* too many levels */
         lua_concat(L, 2);
-        while (lua_getstack(L, level+LEVELS2, &ar))  /* get last levels */
+        while (lua_getstack(L, level+LEVELS2, &ar))  /* find last levels */
         level++;
       }
       firstpart = 0;
@@ -616,7 +615,6 @@ static int errorfb (lua_State *L) {
     sprintf(buff, "%4d:  ", level-1);
     lua_pushstring(L, buff); toconcat++;
     lua_getinfo(L, "Snl", &ar);
-    luaL_chunkid(buffchunk, ar.source, sizeof(buffchunk));
     switch (*ar.namewhat) {
       case 'g':  case 'l':  /* global, local */
         sprintf(buff, "function `%.50s'", ar.name);
@@ -629,11 +627,11 @@ static int errorfb (lua_State *L) {
         break;
       default: {
         if (*ar.what == 'm')  /* main? */
-          sprintf(buff, "main of %.70s", buffchunk);
+          sprintf(buff, "main of %.70s", ar.source_id);
         else if (*ar.what == 'C')  /* C function? */
-          sprintf(buff, "%.70s", buffchunk);
+          sprintf(buff, "%.70s", ar.source_id);
         else
-          sprintf(buff, "function <%d:%.70s>", ar.linedefined, buffchunk);
+          sprintf(buff, "function <%d:%.70s>", ar.linedefined, ar.source_id);
         ar.source = NULL;
       }
     }
@@ -643,7 +641,7 @@ static int errorfb (lua_State *L) {
       lua_pushstring(L, buff); toconcat++;
     }
     if (ar.source) {
-      sprintf(buff, " [%.70s]", buffchunk);
+      sprintf(buff, " [%.70s]", ar.source_id);
       lua_pushstring(L, buff); toconcat++;
     }
     lua_pushstring(L, "\n"); toconcat++;

+ 3 - 4
llex.c

@@ -1,5 +1,5 @@
 /*
-** $Id: llex.c,v 1.68 2000/08/22 20:07:56 roberto Exp $
+** $Id: llex.c,v 1.69 2000/09/11 17:38:42 roberto Exp roberto $
 ** Lexical Analyzer
 ** See Copyright Notice in lua.h
 */
@@ -11,7 +11,6 @@
 
 #include "lua.h"
 
-#include "lauxlib.h"
 #include "llex.h"
 #include "lmem.h"
 #include "lobject.h"
@@ -58,8 +57,8 @@ void luaX_checklimit (LexState *ls, int val, int limit, const char *msg) {
 
 void luaX_syntaxerror (LexState *ls, const char *s, const char *token) {
   char buff[MAXSRC];
-  luaL_chunkid(buff, ls->source->str, sizeof(buff));
-  luaL_verror(ls->L, "%.100s;\n  last token read: `%.50s' at line %d in %.80s",
+  luaO_chunkid(buff, ls->source->str, sizeof(buff));
+  luaO_verror(ls->L, "%.100s;\n  last token read: `%.50s' at line %d in %.80s",
               s, token, ls->linenumber, buff);
 }
 

+ 35 - 1
lobject.c

@@ -1,11 +1,14 @@
 /*
-** $Id: lobject.c,v 1.45 2000/08/11 16:17:28 roberto Exp roberto $
+** $Id: lobject.c,v 1.46 2000/09/11 17:38:42 roberto Exp roberto $
 ** Some generic functions over Lua objects
 ** See Copyright Notice in lua.h
 */
 
 #include <ctype.h>
+#include <stdarg.h>
+#include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
 
 #include "lua.h"
 
@@ -123,3 +126,34 @@ int luaO_str2d (const char *s, Number *result) {  /* LUA_NUMBER */
   return 1;
 }
 
+
+void luaO_verror (lua_State *L, const char *fmt, ...) {
+  char buff[500];
+  va_list argp;
+  va_start(argp, fmt);
+  vsprintf(buff, fmt, argp);
+  va_end(argp);
+  lua_error(L, buff);
+}
+
+
+#define EXTRALEN	sizeof("string \"...\"0")
+
+void luaO_chunkid (char *out, const char *source, int len) {
+  if (*source == '(') {
+    strncpy(out, source+1, len-1);  /* remove first char */
+    out[len-1] = '\0';  /* make sure `out' has an end */
+    out[strlen(out)-1] = '\0';  /* remove last char */
+  }
+  else {
+    len -= EXTRALEN;
+    if (*source == '@')
+      sprintf(out, "file `%.*s'", len, source+1);
+    else {
+      const char *b = strchr(source , '\n');  /* stop at first new line */
+      int lim = (b && (b-source)<len) ? b-source : len;
+      sprintf(out, "string \"%.*s\"", lim, source);
+      strcpy(out+lim+(EXTRALEN-sizeof("...\"0")), "...\"");
+    }
+  }
+}

+ 4 - 1
lobject.h

@@ -1,5 +1,5 @@
 /*
-** $Id: lobject.h,v 1.74 2000/08/22 17:44:17 roberto Exp roberto $
+** $Id: lobject.h,v 1.75 2000/09/11 17:38:42 roberto Exp roberto $
 ** Type definitions for Lua objects
 ** See Copyright Notice in lua.h
 */
@@ -198,5 +198,8 @@ char *luaO_openspace (lua_State *L, size_t n);
 int luaO_equalObj (const TObject *t1, const TObject *t2);
 int luaO_str2d (const char *s, Number *result);
 
+void luaO_verror (lua_State *L, const char *fmt, ...);
+void luaO_chunkid (char *out, const char *source, int len);
+
 
 #endif

+ 1 - 2
ltable.c

@@ -1,5 +1,5 @@
 /*
-** $Id: ltable.c,v 1.53 2000/08/09 19:16:57 roberto Exp roberto $
+** $Id: ltable.c,v 1.54 2000/08/31 14:08:27 roberto Exp roberto $
 ** Lua tables (hash)
 ** See Copyright Notice in lua.h
 */
@@ -20,7 +20,6 @@
 
 #include "lua.h"
 
-#include "lauxlib.h"
 #include "lmem.h"
 #include "lobject.h"
 #include "lstate.h"

+ 17 - 9
ltm.c

@@ -1,5 +1,5 @@
 /*
-** $Id: ltm.c,v 1.47 2000/09/05 19:33:32 roberto Exp roberto $
+** $Id: ltm.c,v 1.48 2000/09/11 19:45:27 roberto Exp roberto $
 ** Tag methods
 ** See Copyright Notice in lua.h
 */
@@ -10,7 +10,6 @@
 
 #include "lua.h"
 
-#include "lauxlib.h"
 #include "ldo.h"
 #include "lmem.h"
 #include "lobject.h"
@@ -26,14 +25,23 @@ const char *const luaT_eventname[] = {  /* ORDER IM */
 };
 
 
+static int findevent (const char *name) {
+  int i;
+  for (i=0; luaT_eventname[i]; i++)
+    if (strcmp(luaT_eventname[i], name) == 0)
+      return i;
+  return -1;  /* name not found */
+}
+
+
 static int luaI_checkevent (lua_State *L, const char *name, int t) {
-  int e = luaL_findstring(name, luaT_eventname);
+  int e = findevent(name);
   if (e >= IM_N)
-    luaL_verror(L, "event `%.50s' is deprecated", name);
+    luaO_verror(L, "event `%.50s' is deprecated", name);
   if (e == IM_GC && t == TAG_TABLE)
-    luaL_verror(L, "event `gc' for tables is deprecated");
+    luaO_verror(L, "event `gc' for tables is deprecated");
   if (e < 0)
-    luaL_verror(L, "`%.50s' is not a valid event name", name);
+    luaO_verror(L, "`%.50s' is not a valid event name", name);
   return e;
 }
 
@@ -86,12 +94,12 @@ int lua_newtag (lua_State *L) {
 
 static void checktag (lua_State *L, int tag) {
   if (!(0 <= tag && tag <= L->last_tag))
-    luaL_verror(L, "%d is not a valid tag", tag);
+    luaO_verror(L, "%d is not a valid tag", tag);
 }
 
 void luaT_realtag (lua_State *L, int tag) {
   if (!(NUM_TAGS <= tag && tag <= L->last_tag))
-    luaL_verror(L, "tag %d was not created by `newtag'", tag);
+    luaO_verror(L, "tag %d was not created by `newtag'", tag);
 }
 
 
@@ -140,7 +148,7 @@ void lua_settagmethod (lua_State *L, int t, const char *event) {
   e = luaI_checkevent(L, event, t);
   checktag(L, t);
   if (!luaT_validevent(t, e))
-    luaL_verror(L, "cannot change `%.20s' tag method for type `%.20s'%.20s",
+    luaO_verror(L, "cannot change `%.20s' tag method for type `%.20s'%.20s",
                 luaT_eventname[e], luaO_typenames[t],
                 (t == TAG_TABLE || t == TAG_USERDATA) ? " with default tag"
                                                           : "");

+ 6 - 4
luadebug.h

@@ -1,5 +1,5 @@
 /*
-** $Id: luadebug.h,v 1.12 2000/08/11 16:17:28 roberto Exp roberto $
+** $Id: luadebug.h,v 1.13 2000/08/28 17:57:04 roberto Exp roberto $
 ** Debugging API
 ** See Copyright Notice in lua.h
 */
@@ -26,16 +26,18 @@ lua_Hook lua_setcallhook (lua_State *L, lua_Hook func);
 lua_Hook lua_setlinehook (lua_State *L, lua_Hook func);
 
 
+#define LUA_IDSIZE	60
 
 struct lua_Debug {
   const char *event;     /* `call', `return' */
-  const char *source;    /* (S) */
-  int linedefined;       /* (S) */
-  const char *what;      /* (S) `Lua' function, `C' function, Lua `main' */
   int currentline;       /* (l) */
   const char *name;      /* (n) */
   const char *namewhat;  /* (n) `global', `tag method', `local', `field' */
   int nups;              /* (u) number of upvalues */
+  int linedefined;       /* (S) */
+  const char *what;      /* (S) `Lua' function, `C' function, Lua `main' */
+  const char *source;    /* (S) */
+  char source_id[LUA_IDSIZE]; /* (S) */
   /* private part */
   struct lua_TObject *_func;  /* active function */
 };

+ 9 - 10
lundump.c

@@ -1,5 +1,5 @@
 /*
-** $Id: lundump.c,v 1.27 2000/09/04 18:53:41 roberto Exp roberto $
+** $Id: lundump.c,v 1.28 2000/09/11 17:38:42 roberto Exp roberto $
 ** load bytecodes from files
 ** See Copyright Notice in lua.h
 */
@@ -7,7 +7,6 @@
 #include <stdio.h>
 #include <string.h>
 
-#include "lauxlib.h"
 #include "lfunc.h"
 #include "lmem.h"
 #include "lopcodes.h"
@@ -26,7 +25,7 @@ static const char* ZNAME(ZIO* Z)
 
 static void unexpectedEOZ (lua_State* L, ZIO* Z)
 {
- luaL_verror(L,"unexpected end of file in `%.255s'",ZNAME(Z));
+ luaO_verror(L,"unexpected end of file in `%.255s'",ZNAME(Z));
 }
 
 static int ezgetc (lua_State* L, ZIO* Z)
@@ -100,7 +99,7 @@ static void LoadCode (lua_State* L, Proto* tf, ZIO* Z, int swap)
 #if 0
  if (swap) SwapBytes(tf->code,sizeof(*tf->code),size);
 #endif
- if (tf->code[size-1]!=OP_END) luaL_verror(L,"bad code in `%.255s'",ZNAME(Z));
+ if (tf->code[size-1]!=OP_END) luaO_verror(L,"bad code in `%.255s'",ZNAME(Z));
 }
 
 static void LoadLocals (lua_State* L, Proto* tf, ZIO* Z, int swap)
@@ -167,14 +166,14 @@ static void LoadSignature (lua_State* L, ZIO* Z)
  const char* s=SIGNATURE;
  while (*s!=0 && ezgetc(L,Z)==*s)
   ++s;
- if (*s!=0) luaL_verror(L,"bad signature in `%.255s'",ZNAME(Z));
+ if (*s!=0) luaO_verror(L,"bad signature in `%.255s'",ZNAME(Z));
 }
 
 static void TestSize (lua_State* L, int s, const char* what, ZIO* Z)
 {
  int r=ezgetc(L,Z);
  if (r!=s)
-  luaL_verror(L,"virtual machine mismatch in `%.255s':\n"
+  luaO_verror(L,"virtual machine mismatch in `%.255s':\n"
 	"  %s is %d but read %d",ZNAME(Z),what,r,s);
 }
 
@@ -188,11 +187,11 @@ static int LoadHeader (lua_State* L, ZIO* Z)
  LoadSignature(L,Z);
  version=ezgetc(L,Z);
  if (version>VERSION)
-  luaL_verror(L,"`%.255s' too new:\n"
+  luaO_verror(L,"`%.255s' too new:\n"
 	"  read version %d.%d; expected at most %d.%d",
 	ZNAME(Z),V(version),V(VERSION));
  if (version<VERSION0)			/* check last major change */
-  luaL_verror(L,"`%.255s' too old:\n"
+  luaO_verror(L,"`%.255s' too old:\n"
 	"  read version %d.%d; expected at least %d.%d",
 	ZNAME(Z),V(version),V(VERSION));
  swap=(luaU_endianess()!=ezgetc(L,Z));	/* need to swap bytes? */
@@ -205,7 +204,7 @@ static int LoadHeader (lua_State* L, ZIO* Z)
  TESTSIZE(sizeof(Number));
  f=LoadNumber(L,Z,swap);
  if ((long)f!=(long)tf)		/* disregard errors in last bit of fraction */
-  luaL_verror(L,"unknown number format in `%.255s':\n"
+  luaO_verror(L,"unknown number format in `%.255s':\n"
       "  read " NUMBER_FMT "; expected " NUMBER_FMT,
       ZNAME(Z),f,tf);
  return swap;
@@ -226,7 +225,7 @@ Proto* luaU_undump (lua_State* L, ZIO* Z)
  if (c==ID_CHUNK)
   return LoadChunk(L,Z);
  else if (c!=EOZ)
-  luaL_verror(L,"`%.255s' is not a precompiled Lua chunk",ZNAME(Z));
+  luaO_verror(L,"`%.255s' is not a precompiled Lua chunk",ZNAME(Z));
  return NULL;
 }
 

+ 29 - 38
makefile

@@ -1,5 +1,5 @@
 #
-## $Id: makefile,v 1.25 2000/04/24 21:05:11 roberto Exp roberto $
+## $Id: makefile,v 1.26 2000/08/09 19:16:57 roberto Exp roberto $
 ## Makefile
 ## See Copyright Notice in lua.h
 #
@@ -25,13 +25,13 @@
 # are passed as arguments 
 # define LUA_DEPRECATETFUNCS to include obsolete functions
 
-CONFIG = -DPOPEN -D_POSIX_SOURCE -DDEBUG
+CONFIG = -DPOPEN -D_POSIX_SOURCE
 #CONFIG = -DOLD_ANSI -DDEBUG -DLUA_COMPAT_READPATTERN -DLUA_COMPAT_ARGRET
 # -DLUA_DEPRECATETFUNCS
 
 
 # Compilation parameters
-CC = g++
+CC = gcc
 CWARNS = -Wall -W -pedantic \
 	-Waggregate-return \
 	-Wcast-align \
@@ -57,10 +57,7 @@ ARFLAGS	= rvl
 # Aplication modules
 LUAOBJS = \
 	lstate.o \
-	lref.o \
 	lapi.o \
-	lauxlib.o \
-	lbuiltin.o \
 	lmem.o \
 	lstring.o \
 	ltable.o \
@@ -68,7 +65,6 @@ LUAOBJS = \
 	lvm.o \
 	ldo.o \
 	lobject.o \
-	lbuffer.o \
 	lfunc.o \
 	lgc.o \
 	lcode.o \
@@ -80,6 +76,8 @@ LUAOBJS = \
 	ltests.o
 
 LIBOBJS = 	\
+	lauxlib.o \
+	lbaselib.o \
 	liolib.o \
 	lmathlib.o \
 	lstrlib.o \
@@ -113,57 +111,50 @@ clear	:
 	co $(CO_OPTIONS) $@
 
 
-lapi.o: lapi.c lua.h lapi.h lobject.h llimits.h lauxlib.h ldo.h \
- lstate.h luadebug.h lfunc.h lgc.h lmem.h lref.h lstring.h ltable.h \
- ltm.h lvm.h
+lapi.o: lapi.c lua.h lapi.h lobject.h llimits.h ldo.h lstate.h \
+ luadebug.h lfunc.h lgc.h lmem.h lstring.h ltable.h ltm.h lvm.h
 lauxlib.o: lauxlib.c lua.h lauxlib.h luadebug.h
-lbuffer.o: lbuffer.c lua.h lauxlib.h lmem.h llimits.h lstate.h \
- lobject.h luadebug.h
-lbuiltin.o: lbuiltin.c lua.h lapi.h lobject.h llimits.h lauxlib.h \
- lbuiltin.h ldo.h lstate.h luadebug.h lfunc.h lmem.h lstring.h \
- ltable.h ltm.h lundump.h lzio.h lvm.h
+lbaselib.o: lbaselib.c lua.h lauxlib.h lualib.h
 lcode.o: lcode.c /usr/include/stdlib.h lua.h lcode.h llex.h lobject.h \
  llimits.h lzio.h lopcodes.h lparser.h ldo.h lstate.h luadebug.h \
  lmem.h
 ldblib.o: ldblib.c lua.h lauxlib.h luadebug.h lualib.h
-ldebug.o: ldebug.c lua.h lapi.h lobject.h llimits.h lauxlib.h lcode.h \
- llex.h lzio.h lopcodes.h lparser.h ldebug.h lstate.h luadebug.h ldo.h \
- lfunc.h ltable.h ltm.h
-ldo.o: ldo.c lua.h lauxlib.h ldebug.h lstate.h lobject.h llimits.h \
- luadebug.h ldo.h lgc.h lmem.h lparser.h lzio.h lstring.h ltable.h \
- ltm.h lundump.h lvm.h
+ldebug.o: ldebug.c lua.h lapi.h lobject.h llimits.h lcode.h llex.h \
+ lzio.h lopcodes.h lparser.h ldebug.h lstate.h luadebug.h ldo.h \
+ lfunc.h lstring.h ltable.h ltm.h
+ldo.o: ldo.c lua.h ldebug.h lstate.h lobject.h llimits.h luadebug.h \
+ ldo.h lgc.h lmem.h lparser.h lzio.h lstring.h ltable.h ltm.h \
+ lundump.h lvm.h
 lfunc.o: lfunc.c lua.h lfunc.h lobject.h llimits.h lmem.h lstate.h \
  luadebug.h
 lgc.o: lgc.c lua.h ldo.h lobject.h llimits.h lstate.h luadebug.h \
- lfunc.h lgc.h lmem.h lref.h lstring.h ltable.h ltm.h
+ lfunc.h lgc.h lmem.h lstring.h ltable.h ltm.h
 liolib.o: liolib.c lua.h lauxlib.h luadebug.h lualib.h
-llex.o: llex.c lua.h lauxlib.h llex.h lobject.h llimits.h lzio.h \
- lmem.h lparser.h lstate.h luadebug.h lstring.h ltable.h
+llex.o: llex.c lua.h llex.h lobject.h llimits.h lzio.h lmem.h \
+ lparser.h lstate.h luadebug.h lstring.h ltable.h
 lmathlib.o: lmathlib.c lua.h lauxlib.h lualib.h
 lmem.o: lmem.c lua.h ldo.h lobject.h llimits.h lstate.h luadebug.h \
  lmem.h
-lobject.o: lobject.c lua.h lobject.h llimits.h
+lobject.o: lobject.c lua.h lmem.h llimits.h lobject.h lstate.h \
+ luadebug.h
 lparser.o: lparser.c lua.h lcode.h llex.h lobject.h llimits.h lzio.h \
  lopcodes.h lparser.h lfunc.h lmem.h lstate.h luadebug.h lstring.h
-lref.o: lref.c lua.h lapi.h lobject.h llimits.h lmem.h lref.h lstate.h \
- luadebug.h
-lstate.o: lstate.c lua.h lauxlib.h lbuiltin.h ldo.h lobject.h \
- llimits.h lstate.h luadebug.h lgc.h llex.h lzio.h lmem.h lref.h \
- lstring.h ltable.h ltm.h
+lstate.o: lstate.c lua.h ldo.h lobject.h llimits.h lstate.h luadebug.h \
+ lgc.h llex.h lzio.h lmem.h lstring.h ltable.h ltm.h
 lstring.o: lstring.c lua.h lmem.h llimits.h lobject.h lstate.h \
  luadebug.h lstring.h
 lstrlib.o: lstrlib.c lua.h lauxlib.h lualib.h
-ltable.o: ltable.c lua.h lauxlib.h lmem.h llimits.h lobject.h lstate.h \
+ltable.o: ltable.c lua.h lmem.h llimits.h lobject.h lstate.h \
  luadebug.h lstring.h ltable.h
 ltests.o: ltests.c lua.h lapi.h lobject.h llimits.h lauxlib.h lcode.h \
  llex.h lzio.h lopcodes.h lparser.h ldebug.h lstate.h luadebug.h ldo.h \
  lfunc.h lmem.h lstring.h ltable.h
-ltm.o: ltm.c lua.h lauxlib.h lmem.h llimits.h lobject.h lstate.h \
- luadebug.h ltm.h
+ltm.o: ltm.c lua.h ldo.h lobject.h llimits.h lstate.h luadebug.h \
+ lmem.h ltm.h
 lua.o: lua.c lua.h luadebug.h lualib.h
-lundump.o: lundump.c lua.h lauxlib.h lfunc.h lobject.h llimits.h \
- lmem.h lopcodes.h lstring.h lstate.h luadebug.h lundump.h lzio.h
-lvm.o: lvm.c lua.h lapi.h lobject.h llimits.h lauxlib.h ldebug.h \
- lstate.h luadebug.h ldo.h lfunc.h lgc.h lopcodes.h lstring.h ltable.h \
- ltm.h lvm.h
+lundump.o: lundump.c lfunc.h lobject.h llimits.h lua.h lmem.h \
+ lopcodes.h lstring.h lstate.h luadebug.h lundump.h lzio.h
+lvm.o: lvm.c lua.h lapi.h lobject.h llimits.h ldebug.h lstate.h \
+ luadebug.h ldo.h lfunc.h lgc.h lopcodes.h lstring.h ltable.h ltm.h \
+ lvm.h
 lzio.o: lzio.c lua.h lzio.h