ofs | hex dump | ascii |
---|
0000 | 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 00 00 02 00 00 00 02 00 08 03 00 00 00 c3 a6 24 | .PNG........IHDR...............$ |
0020 | c8 00 00 02 8b 50 4c 54 45 00 00 00 ff 00 00 ff ff ff ff ff ff ff ff ff ff aa aa ff ff ff ff ff | .....PLTE....................... |
0040 | ff ff ff ff ff db db ff ff ff ff ff ff ff e6 e6 ff ff ff ff e8 e8 ff ff ff ff ea ea ff ff ff ff | ................................ |
0060 | ff ff ff ed ed ff ff ff ff ff ff ff f1 f1 ff f2 f2 ff ff ff ff ff ff ff f4 f4 ff ff ff ff f5 f5 | ................................ |
0080 | ff f5 f5 ff ff ff ff f6 f6 ff f6 f6 ff ff ff ff f7 f7 ff ff ff ff f7 f7 ff ff ff ff f9 f9 ff ff | ................................ |
00a0 | ff ff f0 f0 ff f5 f5 ff ff ff ff f1 f1 ff f5 f5 ff f1 f1 ff f6 f6 ff f2 f2 ff ee ee ff ff ff ff | ................................ |
00c0 | e3 e3 ff e5 e5 ff e1 e1 ff e5 e5 ff f4 f4 ff e2 e2 ff f8 f8 ff e6 e6 ff e0 e0 ff e3 e3 ff e7 e7 | ................................ |
00e0 | ff ea ea ff e0 e0 ff f5 f5 ff dd dd ff e7 e7 ff ff ff ff ea ea ff f3 f3 ff f0 f0 ff e4 e4 ff f6 | ................................ |
0100 | f6 ff f0 f0 ff e5 e5 ff e8 e8 ff fa fa ff e5 e5 ff e8 e8 ff e6 e6 ff e8 e8 ff ff ff ff e1 e1 ff | ................................ |
0120 | e6 e6 ff df df ff e1 e1 ff ee ee ff e2 e2 ff ed ed ff da da ff dd dd ff d2 d2 ff fc fc ff d8 d8 | ................................ |
0140 | ff d6 d6 ff d3 d3 ff d8 d8 ff d2 d2 ff d4 d4 ff d7 d7 ff d2 d2 ff d3 d3 ff d4 d4 ff de de ff d3 | /*
** $Id: lzio.c,v 1.31.1.1 2007/12/27 13:02:25 roberto Exp $
** a generic input stream interface
** See Copyright Notice in lua.h
*/
#include <string.h>
#define lzio_c
#define LUA_CORE
#include "lua.h"
#include "llimits.h"
#include "lmem.h"
#include "lstate.h"
#include "lzio.h"
int luaZ_fill (ZIO *z) {
size_t size;
lua_State *L = z->L;
const char *buff;
lua_unlock(L);
buff = z->reader(L, z->data, &size);
lua_lock(L);
if (buff == NULL || size == 0) return EOZ;
z->n = size - 1;
z->p = buff;
return char2int(*(z->p++));
}
int luaZ_lookahead (ZIO *z) {
if (z->n == 0) {
if (luaZ_fill(z) == EOZ)
return EOZ;
else {
z->n++; /* luaZ_fill removed first byte; put back it */
z->p--;
}
}
return char2int(*z->p);
}
void luaZ_init (lua_State *L, ZIO *z, lua_Reader reader, void *data) {
z->L = L;
z->reader = reader;
z->data = data;
z->n = 0;
z->p = NULL;
}
/* --------------------------------------------------------------- read --- */
size_t luaZ_read (ZIO *z, void *b, size_t n) {
while (n) {
size_t m;
if (luaZ_lookahead(z) == EOZ)
return n; /* return number of missing bytes */
m = (n <= z->n) ? n : z->n; /* min. between n and z->n */
memcpy(b, z->p, m);
z->n -= m;
z->p += m;
b = (char *)b + m;
n -= m;
}
return 0;
}
/* ------------------------------------------------------------------------ */
char *luaZ_openspace (lua_State *L, Mbuffer *buff, size_t n) {
if (n > buff->buffsize) {
if (n < LUA_MINBUFFER) n = LUA_MINBUFFER;
luaZ_resizebuffer(L, buff, n);
}
return buff->buffer;
}
|