core tests whether file is binary

This commit is contained in:
Roberto Ierusalimschy 2002-06-03 17:11:07 -03:00
parent cfff013586
commit 0079e0f57c
5 changed files with 25 additions and 11 deletions

8
lapi.c
View File

@ -1,5 +1,5 @@
/*
** $Id: lapi.c,v 1.193 2002/05/27 20:35:40 roberto Exp roberto $
** $Id: lapi.c,v 1.194 2002/06/03 17:46:34 roberto Exp roberto $
** Lua API
** See Copyright Notice in lua.h
*/
@ -564,13 +564,15 @@ LUA_API int lua_pcall (lua_State *L, int nargs, int nresults, int errf) {
LUA_API int lua_load (lua_State *L, lua_Getblock getblock, void *ud,
int binary, const char *chunkname) {
const char *chunkname) {
ZIO z;
int status;
int c;
lua_lock(L);
if (!chunkname) chunkname = "?";
luaZ_init(&z, getblock, ud, chunkname);
status = luaD_protectedparser(L, &z, binary);
c = luaZ_lookahead(&z);
status = luaD_protectedparser(L, &z, (c == LUA_SIGNATURE[0]));
lua_unlock(L);
return status;
}

7
lua.h
View File

@ -1,5 +1,5 @@
/*
** $Id: lua.h,v 1.134 2002/05/23 20:29:05 roberto Exp roberto $
** $Id: lua.h,v 1.135 2002/06/03 17:46:34 roberto Exp roberto $
** Lua - An Extensible Extension Language
** Tecgraf: Grupo de Tecnologia em Computacao Grafica, PUC-Rio, Brazil
** e-mail: info@lua.org
@ -182,7 +182,7 @@ LUA_API void lua_setmetatable (lua_State *L, int objindex);
LUA_API void lua_rawcall (lua_State *L, int nargs, int nresults);
LUA_API int lua_pcall (lua_State *L, int nargs, int nresults, int errf);
LUA_API int lua_load (lua_State *L, lua_Getblock getblock, void *ud,
int binary, const char *chunkname);
const char *chunkname);
/*
@ -291,9 +291,6 @@ LUA_API int lua_pushupvalues (lua_State *L);
** =======================================================================
*/
/* binary files start with <esc>Lua */
#define LUA_SIGNATURE "\033Lua"
/* formats for Lua numbers */
#ifndef LUA_NUMBER_SCAN
#define LUA_NUMBER_SCAN "%lf"

View File

@ -1,5 +1,5 @@
/*
** $Id: lundump.h,v 1.23 2001/07/12 19:34:03 roberto Exp roberto $
** $Id: lundump.h,v 1.24 2002/06/03 17:46:34 roberto Exp roberto $
** load pre-compiled Lua chunks
** See Copyright Notice in lua.h
*/
@ -24,4 +24,7 @@ int luaU_endianness (void);
/* multiplying by 1E8 gives non-trivial integer values */
#define TEST_NUMBER 3.14159265358979323846E8
/* binary files start with <esc>Lua */
#define LUA_SIGNATURE "\033Lua"
#endif

13
lzio.c
View File

@ -1,5 +1,5 @@
/*
** $Id: lzio.c,v 1.16 2002/04/29 12:37:41 roberto Exp roberto $
** $Id: lzio.c,v 1.17 2002/06/03 17:46:34 roberto Exp roberto $
** a generic input stream interface
** See Copyright Notice in lua.h
*/
@ -24,6 +24,17 @@ int luaZ_fill (ZIO *z) {
}
int luaZ_lookahead (ZIO *z) {
if (z->n == 0) {
int c = luaZ_fill(z);
if (c == EOZ) return c;
z->n++;
z->p--;
}
return *z->p;
}
void luaZ_init (ZIO *z, lua_Getblock getblock, void *ud, const char *name) {
z->getblock = getblock;
z->ud = ud;

3
lzio.h
View File

@ -1,5 +1,5 @@
/*
** $Id: lzio.h,v 1.9 2002/04/29 12:37:41 roberto Exp roberto $
** $Id: lzio.h,v 1.10 2002/06/03 17:46:34 roberto Exp roberto $
** Buffered streams
** See Copyright Notice in lua.h
*/
@ -26,6 +26,7 @@ typedef struct zio ZIO;
void luaZ_init (ZIO *z, lua_Getblock getblock, void *ud, const char *name);
size_t luaZ_zread (ZIO* z, void* b, size_t n); /* read next n bytes */
int luaZ_lookahead (ZIO *z);
/* --------- Private Part ------------------ */