texlive[43456] Build/source/texk/web2c/luatexdir/lua: luatexdir:

commits+kakuto at tug.org commits+kakuto at tug.org
Sat Mar 11 07:43:46 CET 2017


Revision: 43456
          http://tug.org/svn/texlive?view=revision&revision=43456
Author:   kakuto
Date:     2017-03-11 07:43:46 +0100 (Sat, 11 Mar 2017)
Log Message:
-----------
luatexdir: Remove lstrlibextjit.c and luajitstuff.w

Removed Paths:
-------------
    trunk/Build/source/texk/web2c/luatexdir/lua/lstrlibextjit.c
    trunk/Build/source/texk/web2c/luatexdir/lua/luajitstuff.w

Deleted: trunk/Build/source/texk/web2c/luatexdir/lua/lstrlibextjit.c
===================================================================
--- trunk/Build/source/texk/web2c/luatexdir/lua/lstrlibextjit.c	2017-03-11 01:02:44 UTC (rev 43455)
+++ trunk/Build/source/texk/web2c/luatexdir/lua/lstrlibextjit.c	2017-03-11 06:43:46 UTC (rev 43456)
@@ -1,395 +0,0 @@
-/* lstrlibext.c for luajitex
-
-   Copyright 2013 Luigi Scarso
-
-   Code from lstrlibext.c for LuaTeX 
-   Original version copyright 2012 Taco Hoekwater <taco at luatex.org>
-
-   This file is part of LuajitTeX.
-
-   LuajitTeX is free software; you can redistribute it and/or modify it under
-   the terms of the GNU General Public License as published by the Free
-   Software Foundation; either version 2 of the License, or (at your
-   option) any later version.
-
-   LuajitTeX is distributed in the hope that it will be useful, but WITHOUT
-   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
-   License for more details.
-
-   You should have received a copy of the GNU General Public License along
-   with LuaTeX; if not, see <http://www.gnu.org/licenses/>. 
-*/
-
-#include "ptexlib.h"
-#include <stdio.h>
-
-#define LUA_CORE
-
-#include "lua.h"
-#include "lauxlib.h"
-#include "lualib.h"
-
-
-
-
-/*#include "lua51/lj_obj.h"*/
-/*#include "lua51/lj_gc.h"*/
-/*#include "lua51/lj_err.h"*/
-/*#include "lua51/lj_str.h"*/
-/*#include "lua51/lj_tab.h"*/
-/*#include "lua51/lj_meta.h"*/
-/*#include "lua51/lj_state.h"*/
-/*#include "lua51/lj_ff.h" */
-/*#include "lua51/lj_bcdump.h"*/
-/*#include "lua51/lj_char.h"*/
-/*#include "lua51/lj_lib.h"*/
-
-
-
-static int bytepairs_aux (lua_State *L) {
-  size_t ls;
-  unsigned char i;
-  const char *s = lua_tolstring(L, lua_upvalueindex(1), &ls);
-  int ind       = lua_tointeger(L, lua_upvalueindex(2));
-  if (ind<(int)ls) {
-	if (ind+1<(int)ls) {
-	  lua_pushinteger(L, (ind+2));  /* iterator */
-	} else {
-	  lua_pushinteger(L, (ind+1));  /* iterator */
-	}
-	lua_replace(L, lua_upvalueindex(2));
-	i = (unsigned char)*(s+ind);
-	lua_pushinteger(L, i);     /* byte one */
-	if (ind+1<(int)ls) {
-	  i = (unsigned char)*(s+ind+1);
-	  lua_pushinteger(L, i);     /* byte two */
-	} else {
-	  lua_pushnil(L);     /* odd string length */
-	}
-	return 2;
-  }
-  return 0;  /* string ended */
-}
-
-
-static int str_bytepairs (lua_State *L) {
-  luaL_checkstring(L, 1);
-  lua_settop(L, 1);
-  lua_pushinteger(L, 0);
-  lua_pushcclosure(L, bytepairs_aux, 2);
-  return 1;
-}
-
-
-static int bytes_aux (lua_State *L) {
-  size_t ls;
-  unsigned char i;
-  const char *s = lua_tolstring(L, lua_upvalueindex(1), &ls);
-  int ind       = lua_tointeger(L, lua_upvalueindex(2));
-  if (ind<(int)ls) {
-    lua_pushinteger(L, (ind+1));  /* iterator */
-	lua_replace(L, lua_upvalueindex(2));
-	i = (unsigned char)*(s+ind);
-	lua_pushinteger(L, i);     /* byte */
-	return 1;
-  }
-  return 0;  /* string ended */
-}
-
-
-static int str_bytes (lua_State *L) {
-  luaL_checkstring(L, 1);
-  lua_settop(L, 1);
-  lua_pushinteger(L, 0);
-  lua_pushcclosure(L, bytes_aux, 2);
-  return 1;
-}
-
-
-static int utf_failed(lua_State *L, int new_ind) {
-  static char fffd [3] = {0xEF,0xBF,0xBD};
-  lua_pushinteger(L, new_ind);  /* iterator */
-  lua_replace(L, lua_upvalueindex(2));
-  lua_pushlstring(L, fffd, 3);
-  return 1;
-}
-
-
-static int utfcharacters_aux (lua_State *L) {
-  static const unsigned char mask[4] = {0x80,0xE0,0xF0,0xF8};
-  static const unsigned char mequ[4] = {0x00,0xC0,0xE0,0xF0};
-  size_t ls;
-  unsigned char c;
-  int j;
-  const char *s = lua_tolstring(L, lua_upvalueindex(1), &ls);
-  int       ind = lua_tointeger(L, lua_upvalueindex(2));
-  if (ind>=(int)ls) return 0; /* end of string */
-  c = (unsigned) s[ind];
-  for (j=0;j<4;j++) {
-    if ((c&mask[j])==mequ[j]) {
-      int k;
-      if (ind+1+j>(int)ls) return utf_failed(L,ls); /* will not fit */
-      for (k=1; k<=j; k++) {
-        c = (unsigned) s[ind+k];
-        if ((c&0xC0)!=0x80) return utf_failed(L,ind+k); /* bad follow */
-      }
-      lua_pushinteger(L, ind+1+j);  /* iterator */
-      lua_replace(L, lua_upvalueindex(2));
-      lua_pushlstring(L, s+ind, 1+j);
-      return 1;
-    }
-  }
-  return utf_failed(L,ind+1); /* we found a follow byte! */
-} 
-
-
-static int str_utfcharacters (lua_State *L) {
-  luaL_checkstring(L, 1);
-  lua_settop(L, 1);
-  lua_pushinteger(L, 0);
-  lua_pushcclosure(L, utfcharacters_aux, 2);
-  return 1;
-}
-
-
-
-static int utfvalues_aux (lua_State *L) {
-  size_t ls;
-  unsigned char i = 0;
-  unsigned char j = 0;
-  unsigned char k = 0;
-  unsigned char l = 0;
-  unsigned int  v = 0xFFFD;
-  int numbytes = 1;
-  const char *s = lua_tolstring(L, lua_upvalueindex(1), &ls);
-  int ind       = lua_tointeger(L, lua_upvalueindex(2));
-
-  if (ind<(int)ls) {
-	i = *(s+ind);
-	if (i<0x80) {
-	  v = i;
-	} else if (i>=0xF0) {
-	  if ((ind+3)<(int)ls && ((unsigned)*(s+ind+1))>=0x80 
-		  && ((unsigned)*(s+ind+2))>=0x80 && ((unsigned)*(s+ind+3))>=0x80) {
-		numbytes  = 4;
-		j = ((unsigned)*(s+ind+1))-128;
-		k = ((unsigned)*(s+ind+2))-128;
-		l = ((unsigned)*(s+ind+3))-128;
-		v = (((((i-0xF0)*64) + j)*64) + k)*64 + l;
-	  }
-	} else if (i>=0xE0) {
-	  if ((ind+2)<(int)ls && ((unsigned)*(s+ind+1))>=0x80 && ((unsigned)*(s+ind+2))>=0x80) {
-		numbytes  = 3;
-		j = ((unsigned)*(s+ind+1))-128;
-		k = ((unsigned)*(s+ind+2))-128;
-		v = (((i-0xE0)*64) + j)*64 + k;
-	  }
-
-	} else if (i>=0xC0) {
-	  if ((ind+1)<(int)ls && ((unsigned)*(s+ind+1))>=0x80) {
-		numbytes  = 2;
-		j = ((unsigned)*(s+ind+1))-128;
-		v = ((i-0xC0)*64) + j;
-	  }
-	}
-	lua_pushinteger(L, (ind+numbytes));  /* iterator */
-	lua_replace(L, lua_upvalueindex(2));
-	lua_pushinteger(L, v);
-	return 1;
-  }
-  return 0;  /* string ended */
-}
-
-
-static int str_utfvalues (lua_State *L) {
-  luaL_checkstring(L, 1);
-  lua_settop(L, 1);
-  lua_pushinteger(L, 0);
-  lua_pushcclosure(L, utfvalues_aux, 2);
-  return 1;
-}
-
-
-static int characterpairs_aux (lua_State *L) {
-  size_t ls;
-  char b[2];
-  const char *s = lua_tolstring(L, lua_upvalueindex(1), &ls);
-  int ind       = lua_tointeger(L, lua_upvalueindex(2));
-  if (ind<(int)ls) {
-	if (ind+1<(int)ls) {
-	  lua_pushinteger(L, (ind+2));  /* iterator */
-	} else {
-	  lua_pushinteger(L, (ind+1));  /* iterator */
-	}
-	lua_replace(L, lua_upvalueindex(2));
-	b[0] = *(s+ind); b[1] = 0;
-	lua_pushlstring(L, b, 1);
-	if (ind+1<(int)ls) {
-	  b[0] = *(s+ind+1); 
-	  lua_pushlstring(L, b, 1);
-	} else {
-	  lua_pushlstring(L, b+1, 0);
-	}
-	return 2;
-  }
-  return 0;  /* string ended */
-}
-
-
-static int str_characterpairs (lua_State *L) {
-  luaL_checkstring(L, 1);
-  lua_settop(L, 1);
-  lua_pushinteger(L, 0);
-  lua_pushcclosure(L, characterpairs_aux, 2);
-  return 1;
-}
-
-
-static int characters_aux (lua_State *L) {
-  size_t ls;
-  char b[2];
-  const char *s = lua_tolstring(L, lua_upvalueindex(1), &ls);
-  int ind  = lua_tointeger(L, lua_upvalueindex(2));
-  if (ind<(int)ls) {
-    lua_pushinteger(L, (ind+1));  /* iterator */
-	lua_replace(L, lua_upvalueindex(2));
-	b[0] = *(s+ind); b[1] = 0;
-	lua_pushlstring(L, b, 1);
-	return 1;
-  }
-  return 0;  /* string ended */
-}
-
-
-static int str_characters (lua_State *L) {
-  luaL_checkstring(L, 1);
-  lua_settop(L, 1);
-  lua_pushinteger(L, 0);
-  lua_pushcclosure(L, characters_aux, 2);
-  return 1;
-}
-
-static int str_split (lua_State *L) {
-  size_t l;
-  size_t i;
-  int n;
-  char *q, *p, *orig;
-  int mult = 0;
-  const char *s = luaL_checklstring(L, 1, &l);
-  const char *joiner = luaL_optstring(L, 2, " +");
-  lua_newtable(L);
-  if (l == 0) {
-	lua_pushvalue(L,1);
-	lua_rawseti(L,-2,1);
-	return 1;
-  }
-  orig = p = malloc(l+1);
-  if (p==NULL) {
-	fprintf(stderr, "fatal: memory exhausted (malloc of %u bytes).\n",(int)(l+1));
-	exit(EXIT_FAILURE);
-  }
-  strcpy(p,s);
-  n = 1;
-  q = p;
-
-  if (*joiner == 0) {
-	for (i=0;i<l;i++) {
-	  lua_pushlstring(L,q,1); q++;
-	  lua_rawseti(L,-2,n); n++;
-	}
-	free(orig);
-	return 1;
-  }
-  if (*(joiner+1) == '+') {
-	mult = 1;
-	while(*p==*joiner) {
-	  p++;
-	  l--;
-	}
-	q = p;
-  }
-  for (i=0;i<l;i++) {
-	if (*(p+i)==*joiner) {
-	  *(p+i) = 0;
-	  lua_pushlstring(L,q,((p+i)-q));
-	  lua_rawseti(L,-2,n); n++;
-	  if (mult) {
-		while(*(p+i+1)==*joiner) {
-		  i++;
-		}
-	  }
-	  q = p+i+1;
-	}
-  }
-  if (mult && q==(p+l)) {
-	free(orig);
-	return 1;
-  }
-  if(q<=(p+l)) {
-	lua_pushlstring(L,q,strlen(q));
-	lua_rawseti(L,-2,n);
-  }
-  free(orig);
-  return 1;
-} 
-
-
-static const luaL_Reg strlibext[] = {
-  {"utfvalues", str_utfvalues}, 
-  {"utfcharacters", str_utfcharacters},
-  {"characters", str_characters},
-  {"characterpairs", str_characterpairs},
-  {"bytes", str_bytes},
-  {"bytepairs", str_bytepairs},
-  {"explode", str_split},
-  /* {"dump", str_dump} already in luajit */
-  {NULL, NULL}
-};
-
-
-
-
-/* ------------------------------------------------------------------------ */
-
-/* lj_libdef.h is generated by buildvm, it's not available on source */
-/* #include "lua51/lj_libdef.h" */
-
-/* LUALIB_API int luaopen_string(lua_State *L) */
-/* { */
-/*   GCtab *mt; */
-/*   global_State *g; */
-/*   LJ_LIB_REG(L, LUA_STRLIBNAME, string); */
-/*   luaL_register(L, LUA_STRLIBNAME, strlib); */
-/*   //LJ_LIB_REG(L, LUA_STRLIBNAME, strlib); */
-/* #if defined(LUA_COMPAT_GFIND) && !LJ_52 */
-/*   lua_getfield(L, -1, "gmatch"); */
-/*   lua_setfield(L, -2, "gfind"); */
-/* #endif */
-/*   mt = lj_tab_new(L, 0, 1); */
-/*   /\* NOBARRIER: basemt is a GC root. *\/ */
-/*   g = G(L); */
-/*   setgcref(basemt_it(g, LJ_TSTR), obj2gco(mt)); */
-/*   settabV(L, lj_tab_setstr(L, mt, mmname_str(g, MM_index)), tabV(L->top-1)); */
-/*   mt->nomm = (uint8_t)(~(1u<<MM_index)); */
-/*   return 1; */
-/* } */
-
-/* void open_strlibext(lua_State *L) */
-/* { */
-/*   int v; */
-/*   v = luaopen_string(L); */
-/* } */
-
-
-void open_strlibext(lua_State * L)
-{
-    const luaL_Reg *lib;
-    lua_getglobal(L, "string");
-    for (lib=strlibext;lib->name;lib++) {
-        lua_pushcfunction(L, lib->func);
-        lua_setfield(L, -2, lib->name);
-    }
-    lua_pop(L,1);
-}
-

Deleted: trunk/Build/source/texk/web2c/luatexdir/lua/luajitstuff.w
===================================================================
--- trunk/Build/source/texk/web2c/luatexdir/lua/luajitstuff.w	2017-03-11 01:02:44 UTC (rev 43455)
+++ trunk/Build/source/texk/web2c/luatexdir/lua/luajitstuff.w	2017-03-11 06:43:46 UTC (rev 43456)
@@ -1,679 +0,0 @@
-% luastuff.w
-%
-% Copyright 2006-2013 Taco Hoekwater <taco@@luatex.org>
-%
-% This file is part of LuaTeX.
-%
-% LuaTeX is free software; you can redistribute it and/or modify it under
-% the terms of the GNU General Public License as published by the Free
-% Software Foundation; either version 2 of the License, or (at your
-% option) any later version.
-%
-% LuaTeX is distributed in the hope that it will be useful, but WITHOUT
-% ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-% FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
-% License for more details.
-%
-% You should have received a copy of the GNU General Public License along
-% with LuaTeX; if not, see <http://www.gnu.org/licenses/>.
-
-@ @c
-#include "ptexlib.h"
-#include "lua/luatex-api.h"
-#include "lua/lauxlib_bridge.h"
-
-
-@ @c
-lua_State *Luas = NULL;
-
-int luastate_bytes = 0;
-int lua_active = 0;
-
-@ @c
-void make_table(lua_State * L, const char *tab, const char *mttab, const char *getfunc,
-                const char *setfunc)
-{
-    /* make the table *//* |[{<tex>}]| */
-    lua_pushstring(L, tab);     /* |[{<tex>},"dimen"]| */
-    lua_newtable(L);            /* |[{<tex>},"dimen",{}]| */
-    lua_settable(L, -3);        /* |[{<tex>}]| */
-    /* fetch it back */
-    lua_pushstring(L, tab);     /* |[{<tex>},"dimen"]| */
-    lua_gettable(L, -2);        /* |[{<tex>},{<dimen>}]| */
-    /* make the meta entries */
-    luaL_newmetatable(L, mttab);  /* |[{<tex>},{<dimen>},{<dimen_m>}]| */
-    lua_pushstring(L, "__index");       /* |[{<tex>},{<dimen>},{<dimen_m>},"__index"]| */
-    lua_pushstring(L, getfunc); /* |[{<tex>},{<dimen>},{<dimen_m>},"__index","getdimen"]| */
-    lua_gettable(L, -5);        /* |[{<tex>},{<dimen>},{<dimen_m>},"__index",<tex.getdimen>]| */
-    lua_settable(L, -3);        /* |[{<tex>},{<dimen>},{<dimen_m>}]|  */
-    lua_pushstring(L, "__newindex");    /* |[{<tex>},{<dimen>},{<dimen_m>},"__newindex"]| */
-    lua_pushstring(L, setfunc); /* |[{<tex>},{<dimen>},{<dimen_m>},"__newindex","setdimen"]| */
-    lua_gettable(L, -5);        /* |[{<tex>},{<dimen>},{<dimen_m>},"__newindex",<tex.setdimen>]| */
-    lua_settable(L, -3);        /* |[{<tex>},{<dimen>},{<dimen_m>}]| */
-    lua_setmetatable(L, -2);    /* |[{<tex>},{<dimen>}]| : assign the metatable */
-    lua_pop(L, 1);              /* |[{<tex>}]| : clean the stack */
-}
-
-@ @c
-static const char *getS(lua_State * L, void *ud, size_t * size)
-{
-    LoadS *ls = (LoadS *) ud;
-    (void) L;
-    if (ls->size == 0)
-        return NULL;
-    *size = ls->size;
-    ls->size = 0;
-    return ls->s;
-}
-
-@ @c
-#if 0 /* currently unused */
-static void *my_luaalloc(void *ud, void *ptr, size_t osize, size_t nsize)
-{
-    void *ret = NULL;
-    (void) ud;                  /* for -Wunused */
-    if (nsize == 0)
-        free(ptr);
-    else
-        ret = realloc(ptr, nsize);
-    luastate_bytes += (int) (nsize - osize);
-    return ret;
-}
-#endif
-
-@ @c
-static int my_luapanic(lua_State * L)
-{
-    (void) L;                   /* to avoid warnings */
-    fprintf(stderr, "PANIC: unprotected error in call to Lua API (%s)\n",
-            lua_tostring(L, -1));
-    return 0;
-}
-
-@ @c
-void luafunctioncall(int slot)
-{
-    int i ;
-    int stacktop = lua_gettop(Luas);
-    lua_active++;
-    lua_rawgeti(Luas, LUA_REGISTRYINDEX, lua_key_index(lua_functions));
-    lua_gettable(Luas, LUA_REGISTRYINDEX);
-    lua_rawgeti(Luas, -1,slot);
-    if (lua_isfunction(Luas,-1)) {
-        int base = lua_gettop(Luas); /* function index */
-        lua_pushinteger(Luas, slot);
-        lua_pushcfunction(Luas, lua_traceback); /* push traceback function */
-        lua_insert(Luas, base); /* put it under chunk  */
-        i = lua_pcall(Luas, 1, 0, base);
-        lua_remove(Luas, base); /* remove traceback function */
-        if (i != 0) {
-            lua_gc(Luas, LUA_GCCOLLECT, 0);
-            Luas = luatex_error(Luas, (i == LUA_ERRRUN ? 0 : 1));
-        }
-    }
-    lua_settop(Luas,stacktop);
-    lua_active--;
-}
-
-@ @c
-static const luaL_Reg lualibs[] = {
-    {"", luaopen_base},
-    {"package", luaopen_package},
-    /*{"coroutine", luaopen_coroutine},*/
-    {"table", luaopen_table},
-    {"io", open_iolibext},
-    {"os", luaopen_os},
-    {"string", luaopen_string},
-    {"math", luaopen_math},
-    {"debug", luaopen_debug},
-    {"unicode", luaopen_unicode},
-    {"zip", luaopen_zip},
-    {"bit32", luaopen_bit32},
-    {"md5", luaopen_md5},
-    {"lfs", luaopen_lfs},
-    {"profiler", luaopen_profiler},
-    {"jit", luaopen_jit},
-    {"ffi", luaopen_ffi},
-    {"bit",	luaopen_bit },
-    {NULL, NULL}
-};
-
-static const luaL_Reg lualibs_nofenv[] = {
-    {"lpeg", luaopen_lpeg},
-    {NULL, NULL}
-};
-
-@ @c
-static void do_openlibs(lua_State * L)
-{
-    const luaL_Reg *lib = lualibs;
-    for (; lib->func; lib++) {
-        lua_pushcfunction(L, lib->func);
-        lua_pushstring(L, lib->name);
-        lua_call(L, 1, 0);
-    }
-    lib = lualibs_nofenv;
-    for (; lib->func; lib++) {
-        lua_pushcfunction(L, lib->func);
-        lua_newtable(L);
-        lua_setfenv(L,-2);
-        lua_pushstring(L, lib->name);
-        lua_call(L, 1, 0);
-    }
-}
-
-
-@ @c
-static int luatex_loadfile (lua_State *L) {
-  int status = 0;
-  const char *fname = luaL_optstring(L, 1, NULL);
-  const char *mode = luaL_optstring(L, 2, NULL);
-  /*int env = !lua_isnone(L, 3);*/  /* 'env' parameter? */
-  if (!lua_only && !fname && interaction == batch_mode) {
-     lua_pushnil(L);
-     lua_pushstring(L, "reading from stdin is disabled in batch mode");
-     return 2;  /* return nil plus error message */
-  }
-  status = luaL_loadfilex(L, fname, mode);
-  if (status == LUA_OK) {
-    recorder_record_input(fname);
-    /* if (env) {  *//* 'env' parameter? */
-    /*  lua_pushvalue(L, 3); */
-    /*  lua_setupvalue(L, -2, 1); *//* set it as 1st upvalue of loaded chunk */
-    /*}                       */
-  }
-  return RESERVED_load_aux_JIT(L, status,3);
-}
-
-@ @c
-static int luatex_dofile (lua_State *L) {
-  const char *fname = luaL_optstring(L, 1, NULL);
-  int n = lua_gettop(L);
-  if (!lua_only && !fname) {
-      if (interaction == batch_mode) {
-	  lua_pushnil(L);
-	  lua_pushstring(L, "reading from stdin is disabled in batch mode");
-	  return 2;  /* return nil plus error message */
-      } else {
-	  tprint_nl("lua> ");
-      }
-  }
-  if (luaL_loadfile(L, fname) != 0) lua_error(L);
-  recorder_record_input(fname);
-  lua_call(L, 0, LUA_MULTRET);
-  return lua_gettop(L) - n;
-}
-
-@ @c
-void luainterpreter(void)
-{
-    lua_State *L;
-
-    if (jithash_hashname==NULL){
-	/* default lua51 */
-	luajittex_choose_hash_function = 0;
-        jithash_hashname = (char *) xmalloc(strlen("lua51")+1);
-        jithash_hashname = strcpy ( jithash_hashname, "lua51");
-    } else {
-      if (strcmp((const char*)jithash_hashname,"lua51")==0){
-	luajittex_choose_hash_function = 0;
-      }else if (strcmp((const char*)jithash_hashname,"luajit20")==0){
-	luajittex_choose_hash_function = 1;
-      } else {
-	/* default lua51 */
-	luajittex_choose_hash_function = 0;
-	jithash_hashname = strcpy ( jithash_hashname, "lua51");
-      }
-    }
-
-    L = luaL_newstate() ;
-    /*L = lua_newstate(my_luaalloc, NULL);*/
-    if (L == NULL) {
-        fprintf(stderr, "Can't create the Lua state.\n");
-        return;
-    }
-    lua_atpanic(L, &my_luapanic);
-
-    do_openlibs(L);             /* does all the 'simple' libraries */
-
-    if (luajiton){
-     luaJIT_setmode(L, 0, LUAJIT_MODE_ENGINE|LUAJIT_MODE_ON);
-    }
-    else {
-       luaJIT_setmode(L, 0, LUAJIT_MODE_ENGINE|LUAJIT_MODE_OFF);
-    }
-
-    lua_pushcfunction(L,luatex_dofile);
-    lua_setglobal(L, "dofile");
-    lua_pushcfunction(L,luatex_loadfile);
-    lua_setglobal(L, "loadfile");
-
-    luatex_md5_lua_open(L);
-
-    open_oslibext(L, safer_option);
-/*
-    open_iolibext(L);
-*/
-    open_strlibext(L);
-    open_lfslibext(L);
-
-    /* luasockets */
-    /* socket and mime are a bit tricky to open because
-     they use a load-time  dependency that has to be
-     worked around for luatex, where the C module is
-     loaded way before the lua module.
-     */
-    if (!nosocket_option) {
-        lua_getglobal(L, "package");
-        lua_getfield(L, -1, "loaded");
-        if (!lua_istable(L, -1)) {
-            lua_newtable(L);
-            lua_setfield(L, -2, "loaded");
-            lua_getfield(L, -1, "loaded");
-        }
-        luaopen_socket_core(L);
-        lua_setfield(L, -2, "socket.core");
-        lua_pushnil(L);
-        lua_setfield(L, -2, "socket");  /* package.loaded.socket = nil */
-
-        luaopen_mime_core(L);
-        lua_setfield(L, -2, "mime.core");
-        lua_pushnil(L);
-        lua_setfield(L, -2, "mime");    /* package.loaded.mime = nil */
-        lua_pop(L, 2);          /* pop the tables */
-
-        luatex_socketlua_open(L);       /* preload the pure lua modules */
-    }
-    /* zlib. slightly odd calling convention */
-    luaopen_zlib(L);
-    lua_setglobal(L, "zlib");
-    luaopen_gzip(L);
-
-    /* our own libraries */
-    luaopen_ff(L);
-    luaopen_tex(L);
-    luaopen_token(L);
-    luaopen_node(L);
-    luaopen_texio(L);
-    luaopen_kpse(L);
-    luaopen_callback(L);
-    luaopen_lua(L, startup_filename);
-    luaopen_stats(L);
-    luaopen_font(L);
-    luaopen_lang(L);
-    luaopen_mplib(L);
-    luaopen_vf(L);
-
-    /* |luaopen_pdf(L);| */
-    /* environment table at |LUA_ENVIRONINDEX| needs to load this way: */
-    lua_pushcfunction(L, luaopen_pdf);
-    lua_pushstring(L, "pdf");
-    lua_call(L, 1, 0);
-
-    if (!lua_only) {
-        /* |luaopen_img(L);| */
-        lua_pushcfunction(L, luaopen_img);
-        lua_pushstring(L, "img");
-        lua_call(L, 1, 0);
-    }
-
-    /* |luaopen_epdf(L);| */
-    lua_pushcfunction(L, luaopen_epdf);
-    lua_pushstring(L, "epdf");
-    lua_call(L, 1, 0);
-
-    /* |luaopen_pdfscanner(L);| */
-    lua_pushcfunction(L, luaopen_pdfscanner);
-    lua_pushstring(L, "pdfscanner");
-    lua_call(L, 1, 0);
-
-    lua_createtable(L, 0, 0);
-    lua_setglobal(L, "texconfig");
-
-    if (safer_option) {
-        /* disable some stuff if --safer */
-        (void) hide_lua_value(L, "os", "execute");
-        (void) hide_lua_value(L, "os", "rename");
-        (void) hide_lua_value(L, "os", "remove");
-        (void) hide_lua_value(L, "io", "popen");
-        /* make io.open only read files */
-        luaL_checkstack(L, 2, "out of stack space");
-        lua_getglobal(L, "io");
-        lua_getfield(L, -1, "open_ro");
-        lua_setfield(L, -2, "open");
-        (void) hide_lua_value(L, "io", "tmpfile");
-        (void) hide_lua_value(L, "io", "output");
-        (void) hide_lua_value(L, "lfs", "chdir");
-        (void) hide_lua_value(L, "lfs", "lock");
-        (void) hide_lua_value(L, "lfs", "touch");
-        (void) hide_lua_value(L, "lfs", "rmdir");
-        (void) hide_lua_value(L, "lfs", "mkdir");
-    }
-    /* fprintf(stdout, "\nLuajitTeX default hash function type:%s\n", */
-    /* 		                                jithash_hashname); */
-    Luas = L;
-}
-
-@ @c
-int hide_lua_table(lua_State * L, const char *name)
-{
-    int r = 0;
-    lua_getglobal(L, name);
-    if (lua_istable(L, -1)) {
-        r = luaL_ref(L, LUA_REGISTRYINDEX);
-        lua_pushnil(L);
-        lua_setglobal(L, name);
-    }
-    return r;
-}
-
-@ @c
-void unhide_lua_table(lua_State * L, const char *name, int r)
-{
-    lua_rawgeti(L, LUA_REGISTRYINDEX, r);
-    lua_setglobal(L, name);
-    luaL_unref(L, LUA_REGISTRYINDEX, r);
-}
-
-@ @c
-int hide_lua_value(lua_State * L, const char *name, const char *item)
-{
-    int r = 0;
-    lua_getglobal(L, name);
-    if (lua_istable(L, -1)) {
-        lua_getfield(L, -1, item);
-        r = luaL_ref(L, LUA_REGISTRYINDEX);
-        lua_pushnil(L);
-        lua_setfield(L, -2, item);
-    }
-    return r;
-}
-
-@ @c
-void unhide_lua_value(lua_State * L, const char *name, const char *item, int r)
-{
-    lua_getglobal(L, name);
-    if (lua_istable(L, -1)) {
-        lua_rawgeti(L, LUA_REGISTRYINDEX, r);
-        lua_setfield(L, -2, item);
-        luaL_unref(L, LUA_REGISTRYINDEX, r);
-    }
-}
-
-@ @c
-int lua_traceback(lua_State * L)
-{
-    lua_getglobal(L, "debug");
-    if (!lua_istable(L, -1)) {
-        lua_pop(L, 1);
-        return 1;
-    }
-    lua_getfield(L, -1, "traceback");
-    if (!lua_isfunction(L, -1)) {
-        lua_pop(L, 2);
-        return 1;
-    }
-    lua_pushvalue(L, 1);        /* pass error message */
-    lua_pushinteger(L, 2);      /* skip this function and traceback */
-    lua_call(L, 2, 1);          /* call debug.traceback */
-    return 1;
-}
-
-@ @c
-static void luacall(int p, int nameptr, boolean is_string) /* hh-ls: optimized lua_id resolving */
-{
-    LoadS ls;
-    int i;
-    size_t ll = 0;
-    char *lua_id;
-    char *s = NULL;
-
-    if (Luas == NULL) {
-        luainterpreter();
-    }
-    lua_active++;
-    if (is_string) {
-        const char *ss = NULL;
-        lua_rawgeti(Luas, LUA_REGISTRYINDEX, p);
-        if (lua_isfunction(Luas,-1)) {
-            int base = lua_gettop(Luas);        /* function index */
-            lua_checkstack(Luas, 1);
-            lua_pushcfunction(Luas, lua_traceback);     /* push traceback function */
-            lua_insert(Luas, base);     /* put it under chunk  */
-            i = lua_pcall(Luas, 0, 0, base);
-            lua_remove(Luas, base);     /* remove traceback function */
-            if (i != 0) {
-                lua_gc(Luas, LUA_GCCOLLECT, 0);
-                Luas = luatex_error(Luas, (i == LUA_ERRRUN ? 0 : 1));
-            }
-            lua_active--;
-            return ;
-        }
-        ss = lua_tolstring(Luas, -1, &ll);
-        s = xmalloc(ll+1);
-        memcpy(s,ss,ll+1);
-        lua_pop(Luas,1);
-    } else {
-        int l = 0;
-        s = tokenlist_to_cstring(p, 1, &l);
-        ll = (size_t)l;
-    }
-    ls.s = s;
-    ls.size = ll;
-    if (ls.size > 0) {
-        if (nameptr > 0) {
-            int l = 0; /* not used */
-            lua_id = tokenlist_to_cstring(nameptr, 1, &l);
-            i = lua_load(Luas, getS, &ls, lua_id);
-	    xfree(lua_id);
-        } else if (nameptr < 0) {
-            lua_id = get_lua_name((nameptr + 65536));
-            if (lua_id != NULL) {
-                i = lua_load(Luas, getS, &ls, lua_id);
-            } else {
-                i = lua_load(Luas, getS, &ls, "=[\\latelua]");
-            }
-        } else {
-            i = lua_load(Luas, getS, &ls, "=[\\latelua]");
-        }
-        if (i != 0) {
-            Luas = luatex_error(Luas, (i == LUA_ERRSYNTAX ? 0 : 1));
-        } else {
-            int base = lua_gettop(Luas);        /* function index */
-            lua_checkstack(Luas, 1);
-            lua_pushcfunction(Luas, lua_traceback);     /* push traceback function */
-            lua_insert(Luas, base);     /* put it under chunk  */
-            i = lua_pcall(Luas, 0, 0, base);
-            lua_remove(Luas, base);     /* remove traceback function */
-            if (i != 0) {
-                lua_gc(Luas, LUA_GCCOLLECT, 0);
-                Luas = luatex_error(Luas, (i == LUA_ERRRUN ? 0 : 1));
-            }
-        }
-        xfree(ls.s);
-    }
-    lua_active--;
-}
-
-@ @c
-void late_lua(PDF pdf, halfword p)
-{
-    (void) pdf;
-    if (late_lua_type(p)==normal) {
-        expand_macros_in_tokenlist(p);      /* sets |def_ref| */
-        luacall(def_ref, late_lua_name(p), false);
-        flush_list(def_ref);
-    } else {
-        luacall(late_lua_data(p), late_lua_name(p), true);
-    }
-}
-
-@ @c
-void luatokencall(int p, int nameptr) /* hh-ls: optimized lua_id resolving */
-{
-    LoadS ls;
-    int i, l;
-    char *s = NULL;
-    char *lua_id;
-    assert(Luas);
-    l = 0;
-    lua_active++;
-    s = tokenlist_to_cstring(p, 1, &l);
-    ls.s = s;
-    ls.size = (size_t) l;
-    if (ls.size > 0) {
-        if (nameptr > 0) {
-            lua_id = tokenlist_to_cstring(nameptr, 1, &l);
-            i = lua_load(Luas, getS, &ls, lua_id);
-	    xfree(lua_id);
-        } else if (nameptr < 0) {
-            lua_id = get_lua_name((nameptr + 65536));
-            if (lua_id != NULL) {
-                i = lua_load(Luas, getS, &ls, lua_id);
-            } else {
-                i = lua_load(Luas, getS, &ls, "=[\\directlua]");
-            }
-        } else {
-            i = lua_load(Luas, getS, &ls, "=[\\directlua]");
-        }
-        xfree(s);
-        if (i != 0) {
-            Luas = luatex_error(Luas, (i == LUA_ERRSYNTAX ? 0 : 1));
-        } else {
-            int base = lua_gettop(Luas);        /* function index */
-            lua_checkstack(Luas, 1);
-            lua_pushcfunction(Luas, lua_traceback);     /* push traceback function */
-            lua_insert(Luas, base);     /* put it under chunk  */
-            i = lua_pcall(Luas, 0, 0, base);
-            lua_remove(Luas, base);     /* remove traceback function */
-            if (i != 0) {
-                lua_gc(Luas, LUA_GCCOLLECT, 0);
-                Luas = luatex_error(Luas, (i == LUA_ERRRUN ? 0 : 1));
-            }
-        }
-    }
-    lua_active--;
-}
-
-@ @c
-lua_State *luatex_error(lua_State * L, int is_fatal)
-{
-
-    const_lstring luaerr;
-    char *err = NULL;
-    if (lua_type(L, -1) == LUA_TSTRING) {
-        luaerr.s = lua_tolstring(L, -1, &luaerr.l);
-        /* free last one ? */
-        err = (char *) xmalloc((unsigned) (luaerr.l + 1));
-        snprintf(err, (luaerr.l + 1), "%s", luaerr.s);
-        last_lua_error = err; /* hm, what if we have several .. not freed */
-    }
-    if (is_fatal > 0) {
-        /* Normally a memory error from lua.
-           The pool may overflow during the |maketexlstring()|, but we
-           are crashing anyway so we may as well abort on the pool size */
-        normal_error("lua",err);
-        /* never reached */
-        lua_close(L);
-        return (lua_State *) NULL;
-    } else {
-        normal_warning("lua",err);
-        return L;
-    }
-}
-
-@ @c
-void preset_environment(lua_State * L, const parm_struct * p, const char *s)
-{
-    int i;
-    assert(L != NULL);
-    /* double call with same s gives assert(0) */
-    lua_pushstring(L, s);       /* s */
-    lua_gettable(L, LUA_REGISTRYINDEX); /* t */
-    assert(lua_isnil(L, -1));
-    lua_pop(L, 1);              /* - */
-    lua_pushstring(L, s);       /* s */
-    lua_newtable(L);            /* t s */
-    for (i = 1, ++p; p->name != NULL; i++, p++) {
-        assert(i == p->idx);
-        lua_pushstring(L, p->name);     /* k t s */
-        lua_pushinteger(L, p->idx);     /* v k t s */
-        lua_settable(L, -3);    /* t s */
-    }
-    lua_settable(L, LUA_REGISTRYINDEX); /* - */
-}
-
-@ @c
-/*
-    int luaL_typerror (void *LL, int narg, const char *tname)
-    {
-      lua_State *L = (lua_State *)LL;
-      const char *msg = lua_pushfstring(L, "%s expected, got %s",
-                                        tname, luaL_typename(L, narg));
-      return luaL_argerror(L, narg, msg);
-    }
-*/
-
-/*
-    Compatibility layer for luatex lua5.2
-*/
-
-@ @c
-LUALIB_API void *luaL_testudata (lua_State *L, int ud, const char *tname) {
-    void *p = lua_touserdata(L, ud);
-    if (p != NULL) {  /* value is a userdata? */
-        if (lua_getmetatable(L, ud)) {  /* does it have a metatable? */
-            luaL_getmetatable(L, tname);  /* get correct metatable */
-        if (!lua_rawequal(L, -1, -2))  /* not the same? */
-            p = NULL;  /* value is a userdata with wrong metatable */
-        lua_pop(L, 2);  /* remove both metatables */
-        return p;
-        }
-    }
-    return NULL;  /* value is not a userdata with a metatable */
-}
-
-@ @c
-
-/* It's not ok. See lua-users.org/wiki/CompatibilityWithLuaFive for another solution */
-
-LUALIB_API void luaL_setfuncs (lua_State *L, const luaL_Reg *l, int nup) {
-    /*luaL_checkversion(L);*/
-    luaL_checkstack(L, nup, "too many upvalues");
-    for (; l->name != NULL; l++) {  /* fill the table with given functions */
-        int i;
-        for (i = 0; i < nup; i++)  /* copy upvalues to the top */
-            lua_pushvalue(L, -nup);
-        lua_pushcclosure(L, l->func, nup);  /* closure with those upvalues */
-        lua_setfield(L, -(nup + 2), l->name);
-    }
-    lua_pop(L, nup);  /* remove upvalues */
-}
-
-@ @c
-LUALIB_API char *luaL_prepbuffsize (luaL_Buffer *B, size_t sz) {
-    lua_State *L = B->L;
-    if (sz > LUAL_BUFFERSIZE )
-        luaL_error(L, "buffer too large");
-    return luaL_prepbuffer(B) ;
-}
-
-@ @c
-LUA_API int lua_compare (lua_State *L, int o1, int o2, int op) {
-    /*StkId o1, o2;*/
-    int i = 0;
-    lua_lock(L);  /* may call tag method */
-    /* o1 = index2addr(L, index1); */
-    /* o2 = index2addr(L, index2); */
-    /*if (isvalid(o1) && isvalid(o2)) {*/
-    switch (op) {
-        case LUA_OPEQ: i = lua_equal(L, o1, o2); break;
-        case LUA_OPLT: i = lua_lessthan(L, o1, o2); break;
-        case LUA_OPLE: i = (lua_lessthan(L, o1, o2) || lua_equal(L, o1, o2)) ; break;
-        default: luaL_error(L, "invalid option");
-    }
-    /*}*/
-    lua_unlock(L);
-    return i;
-}
-



More information about the tex-live-commits mailing list