int luaZ_lookahead (ZIO *z) { if (z->n == 0) { int c = luaZ_fill(z); if (c == EOZ) return c; z->n++; z->p--; } 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); }
int luaZ_lookahead_2 (ZIO *z) { union { lua_WChar w; unsigned char b[2]; } s; if (z->n == 0) { int c = luaZ_fill(z); if (c == EOZ) return c; z->n++; z->p--; } s.b[0] = *(z->p); s.b[1] = *(z->p + 1); return s.w; }
/* --------------------------------------------------------------- read --- */ size_t luaZ_read (ZIO *z, void *b, size_t n) { while (n) { size_t m; if (z->n == 0) { /* no bytes in buffer? */ if (luaZ_fill(z) == EOZ) /* try to read more */ return n; /* no more input; return number of missing bytes */ else { z->n++; /* luaZ_fill consumed first byte; put it back */ z->p--; } } 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; }
/* --------------------------------------------------------------- read --- */ size_t luaZ_read (ZIO *z, void *b, size_t n) { while (n) { size_t m; if (z->n == 0) { if (luaZ_fill(z) == EOZ) return n; /* return number of missing bytes */ else { ++z->n; /* filbuf removed first byte; put back it */ --z->p; } } 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; }