// file.read() // file.read() read all byte in file LUAL_BUFFERSIZE(512) max // file.read(10) will read 10 byte from file, or EOF is reached. // file.read('q') will read until 'q' or EOF is reached. static int file_read( lua_State* L ) { unsigned need_len = LUAL_BUFFERSIZE; int16_t end_char = EOF; size_t el; if( lua_type( L, 1 ) == LUA_TNUMBER ) { need_len = ( unsigned )luaL_checkinteger( L, 1 ); if( need_len > LUAL_BUFFERSIZE ){ need_len = LUAL_BUFFERSIZE; } } else if(lua_isstring(L, 1)) { const char *end = luaL_checklstring( L, 1, &el ); if(el!=1){ return luaL_error( L, "wrong arg range" ); } end_char = (int16_t)end[0]; } return file_g_read(L, need_len, end_char); }
// file.readline() static int file_readline( lua_State* L ) { return file_g_read(L, LUAL_BUFFERSIZE, '\n'); }