aboutsummaryrefslogtreecommitdiff
path: root/ldump.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2014-03-11 15:56:27 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2014-03-11 15:56:27 -0300
commit80fe8504f5d7be0a3ddf939981bf4b18266861b6 (patch)
treec3cceb1009cb3dce2344facf30798c10631faf38 /ldump.c
parente9763842134ac807262e3b86d5f40d25a8d69f1b (diff)
downloadlua-80fe8504f5d7be0a3ddf939981bf4b18266861b6.tar.gz
lua-80fe8504f5d7be0a3ddf939981bf4b18266861b6.tar.bz2
lua-80fe8504f5d7be0a3ddf939981bf4b18266861b6.zip
make all dumps/loads go trhough Load/DumpVector (so it is easier
to adapt the code to correct endianess, if needed)
Diffstat (limited to 'ldump.c')
-rw-r--r--ldump.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/ldump.c b/ldump.c
index c86a03c8..5076c430 100644
--- a/ldump.c
+++ b/ldump.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: ldump.c,v 2.25 2014/03/10 17:56:32 roberto Exp roberto $ 2** $Id: ldump.c,v 2.26 2014/03/11 18:05:46 roberto Exp roberto $
3** save precompiled Lua chunks 3** save precompiled Lua chunks
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -25,9 +25,14 @@ typedef struct {
25} DumpState; 25} DumpState;
26 26
27 27
28#define DumpVar(x,D) DumpBlock(&x,sizeof(x),D) 28/*
29** All high-level dumps go through DumpVector; you can change it to
30** change the endianess of the result
31*/
29#define DumpVector(v,n,D) DumpBlock(v,(n)*sizeof((v)[0]),D) 32#define DumpVector(v,n,D) DumpBlock(v,(n)*sizeof((v)[0]),D)
30 33
34#define DumpLiteral(s,D) DumpBlock(s, sizeof(s) - sizeof(char), D)
35
31 36
32static void DumpBlock (const void *b, size_t size, DumpState *D) { 37static void DumpBlock (const void *b, size_t size, DumpState *D) {
33 if (D->status == 0) { 38 if (D->status == 0) {
@@ -38,6 +43,9 @@ static void DumpBlock (const void *b, size_t size, DumpState *D) {
38} 43}
39 44
40 45
46#define DumpVar(x,D) DumpVector(&x,1,D)
47
48
41static void DumpByte (int y, DumpState *D) { 49static void DumpByte (int y, DumpState *D) {
42 lu_byte x = (lu_byte)y; 50 lu_byte x = (lu_byte)y;
43 DumpVar(x, D); 51 DumpVar(x, D);
@@ -160,8 +168,6 @@ static void DumpFunction (const Proto *f, DumpState *D) {
160} 168}
161 169
162 170
163#define DumpLiteral(s,D) DumpBlock(s, sizeof(s) - sizeof(char), D)
164
165static void DumpHeader (DumpState *D) { 171static void DumpHeader (DumpState *D) {
166 DumpLiteral(LUA_SIGNATURE, D); 172 DumpLiteral(LUA_SIGNATURE, D);
167 DumpByte(LUAC_VERSION, D); 173 DumpByte(LUAC_VERSION, D);