LCOV - code coverage report
Current view: top level - src - lzio.c Coverage Total Hit
Test: Lua 5.2.4 Lines: 100.0 % 34 34
Test Date: 2024-04-28 10:23:12
Legend: Lines: hit not hit

            Line data    Source code
       1              : /*
       2              : ** $Id: lzio.c,v 1.35.1.1 2013/04/12 18:48:47 roberto Exp $
       3              : ** Buffered streams
       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         1182 : int luaZ_fill (ZIO *z) {
      22              :   size_t size;
      23         1182 :   lua_State *L = z->L;
      24              :   const char *buff;
      25              :   lua_unlock(L);
      26         1182 :   buff = z->reader(L, z->data, &size);
      27              :   lua_lock(L);
      28         1181 :   if (buff == NULL || size == 0)
      29          475 :     return EOZ;
      30          706 :   z->n = size - 1;  /* discount char being returned */
      31          706 :   z->p = buff;
      32          706 :   return cast_uchar(*(z->p++));
      33              : }
      34              : 
      35              : 
      36          513 : void luaZ_init (lua_State *L, ZIO *z, lua_Reader reader, void *data) {
      37          513 :   z->L = L;
      38          513 :   z->reader = reader;
      39          513 :   z->data = data;
      40          513 :   z->n = 0;
      41          513 :   z->p = NULL;
      42          513 : }
      43              : 
      44              : 
      45              : /* --------------------------------------------------------------- read --- */
      46          436 : size_t luaZ_read (ZIO *z, void *b, size_t n) {
      47          868 :   while (n) {
      48              :     size_t m;
      49          433 :     if (z->n == 0) {  /* no bytes in buffer? */
      50           14 :       if (luaZ_fill(z) == EOZ)  /* try to read more */
      51            1 :         return n;  /* no more input; return number of missing bytes */
      52              :       else {
      53           13 :         z->n++;  /* luaZ_fill consumed first byte; put it back */
      54           13 :         z->p--;
      55              :       }
      56              :     }
      57          432 :     m = (n <= z->n) ? n : z->n;  /* min. between n and z->n */
      58          432 :     memcpy(b, z->p, m);
      59          432 :     z->n -= m;
      60          432 :     z->p += m;
      61          432 :     b = (char *)b + m;
      62          432 :     n -= m;
      63              :   }
      64          435 :   return 0;
      65              : }
      66              : 
      67              : /* ------------------------------------------------------------------------ */
      68         9758 : char *luaZ_openspace (lua_State *L, Mbuffer *buff, size_t n) {
      69         9758 :   if (n > buff->buffsize) {
      70          515 :     if (n < LUA_MINBUFFER) n = LUA_MINBUFFER;
      71          515 :     luaZ_resizebuffer(L, buff, n);
      72              :   }
      73         9758 :   return buff->buffer;
      74              : }
      75              : 
      76              : 
        

Generated by: LCOV version 2.0-1