LCOV - code coverage report
Current view: directory - src - lzio.c Found Hit Coverage
Test: Lua 5.1.4 Lines: 37 25 67.6 %
Date: 2009-09-13
Colors: not hit hit

       1                 : /*
       2                 : ** $Id: lzio.c,v 1.31.1.1 2007/12/27 13:02:25 roberto Exp $
       3                 : ** a generic input stream interface
       4                 : ** See Copyright Notice in lua.h
       5                 : */
       6                 : 
       7                 : 
       8                 : #include <string.h>
       9                 : 
      10                 : #define lzio_c
      11                 : #define LUA_CORE
      12                 : 
      13                 : #include "lua.h"
      14                 : 
      15                 : #include "llimits.h"
      16                 : #include "lmem.h"
      17                 : #include "lstate.h"
      18                 : #include "lzio.h"
      19                 : 
      20                 : 
      21             613 : int luaZ_fill (ZIO *z) {
      22                 :   size_t size;
      23             613 :   lua_State *L = z->L;
      24                 :   const char *buff;
      25                 :   lua_unlock(L);
      26             613 :   buff = z->reader(L, z->data, &size);
      27                 :   lua_lock(L);
      28             613 :   if (buff == NULL || size == 0) return EOZ;
      29             329 :   z->n = size - 1;
      30             329 :   z->p = buff;
      31             329 :   return char2int(*(z->p++));
      32                 : }
      33                 : 
      34                 : 
      35             291 : int luaZ_lookahead (ZIO *z) {
      36             291 :   if (z->n == 0) {
      37             291 :     if (luaZ_fill(z) == EOZ)
      38               0 :       return EOZ;
      39                 :     else {
      40             291 :       z->n++;  /* luaZ_fill removed first byte; put back it */
      41             291 :       z->p--;
      42                 :     }
      43                 :   }
      44             291 :   return char2int(*z->p);
      45                 : }
      46                 : 
      47                 : 
      48             291 : void luaZ_init (lua_State *L, ZIO *z, lua_Reader reader, void *data) {
      49             291 :   z->L = L;
      50             291 :   z->reader = reader;
      51             291 :   z->data = data;
      52             291 :   z->n = 0;
      53             291 :   z->p = NULL;
      54             291 : }
      55                 : 
      56                 : 
      57                 : /* --------------------------------------------------------------- read --- */
      58               0 : size_t luaZ_read (ZIO *z, void *b, size_t n) {
      59               0 :   while (n) {
      60                 :     size_t m;
      61               0 :     if (luaZ_lookahead(z) == EOZ)
      62               0 :       return n;  /* return number of missing bytes */
      63               0 :     m = (n <= z->n) ? n : z->n;  /* min. between n and z->n */
      64               0 :     memcpy(b, z->p, m);
      65               0 :     z->n -= m;
      66               0 :     z->p += m;
      67               0 :     b = (char *)b + m;
      68               0 :     n -= m;
      69                 :   }
      70               0 :   return 0;
      71                 : }
      72                 : 
      73                 : /* ------------------------------------------------------------------------ */
      74            7388 : char *luaZ_openspace (lua_State *L, Mbuffer *buff, size_t n) {
      75            7388 :   if (n > buff->buffsize) {
      76             258 :     if (n < LUA_MINBUFFER) n = LUA_MINBUFFER;
      77             258 :     luaZ_resizebuffer(L, buff, n);
      78                 :   }
      79            7388 :   return buff->buffer;
      80                 : }
      81                 : 
      82                 : 

Generated by: LCOV version 1.7