LCOV - code coverage report
Current view: top level - src - lzio.c Coverage Total Hit
Test: Lua 5.1.5 Lines: 97.3 % 37 36
Test Date: 2024-04-28 10:23:09
Legend: Lines: hit not hit

            Line data    Source code
       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         1008 : int luaZ_fill (ZIO *z) {
      22              :   size_t size;
      23         1008 :   lua_State *L = z->L;
      24              :   const char *buff;
      25              :   lua_unlock(L);
      26         1008 :   buff = z->reader(L, z->data, &size);
      27              :   lua_lock(L);
      28         1007 :   if (buff == NULL || size == 0) return EOZ;
      29          547 :   z->n = size - 1;
      30          547 :   z->p = buff;
      31          547 :   return char2int(*(z->p++));
      32              : }
      33              : 
      34              : 
      35          876 : int luaZ_lookahead (ZIO *z) {
      36          876 :   if (z->n == 0) {
      37          488 :     if (luaZ_fill(z) == EOZ)
      38            2 :       return EOZ;
      39              :     else {
      40          485 :       z->n++;  /* luaZ_fill removed first byte; put back it */
      41          485 :       z->p--;
      42              :     }
      43              :   }
      44          873 :   return char2int(*z->p);
      45              : }
      46              : 
      47              : 
      48          488 : void luaZ_init (lua_State *L, ZIO *z, lua_Reader reader, void *data) {
      49          488 :   z->L = L;
      50          488 :   z->reader = reader;
      51          488 :   z->data = data;
      52          488 :   z->n = 0;
      53          488 :   z->p = NULL;
      54          488 : }
      55              : 
      56              : 
      57              : /* --------------------------------------------------------------- read --- */
      58          392 : size_t luaZ_read (ZIO *z, void *b, size_t n) {
      59          780 :   while (n) {
      60              :     size_t m;
      61          388 :     if (luaZ_lookahead(z) == EOZ)
      62            0 :       return n;  /* return number of missing bytes */
      63          388 :     m = (n <= z->n) ? n : z->n;  /* min. between n and z->n */
      64          388 :     memcpy(b, z->p, m);
      65          388 :     z->n -= m;
      66          388 :     z->p += m;
      67          388 :     b = (char *)b + m;
      68          388 :     n -= m;
      69              :   }
      70          392 :   return 0;
      71              : }
      72              : 
      73              : /* ------------------------------------------------------------------------ */
      74        10951 : char *luaZ_openspace (lua_State *L, Mbuffer *buff, size_t n) {
      75        10951 :   if (n > buff->buffsize) {
      76          546 :     if (n < LUA_MINBUFFER) n = LUA_MINBUFFER;
      77          546 :     luaZ_resizebuffer(L, buff, n);
      78              :   }
      79        10951 :   return buff->buffer;
      80              : }
      81              : 
      82              : 
        

Generated by: LCOV version 2.0-1