mirror of
				https://github.com/ctruLua/ctruLua.git
				synced 2025-10-27 16:39:29 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			108 lines
		
	
	
	
		
			4.5 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
	
		
			4.5 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| *************************************************************************
 | |
| * Author    : Tiago Dionizio <tiago.dionizio@gmail.com>                 *
 | |
| * Library   : lgzip - a gzip file access binding for Lua 5              *
 | |
| *             based on liolib.c from Lua 5.0 library                    *
 | |
| *                                                                       *
 | |
| * Permission is hereby granted, free of charge, to any person obtaining *
 | |
| * a copy of this software and associated documentation files (the       *
 | |
| * "Software"), to deal in the Software without restriction, including   *
 | |
| * without limitation the rights to use, copy, modify, merge, publish,   *
 | |
| * distribute, sublicense, and/or sell copies of the Software, and to    *
 | |
| * permit persons to whom the Software is furnished to do so, subject to *
 | |
| * the following conditions:                                             *
 | |
| *                                                                       *
 | |
| * The above copyright notice and this permission notice shall be        *
 | |
| * included in all copies or substantial portions of the Software.       *
 | |
| *                                                                       *
 | |
| * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,       *
 | |
| * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF    *
 | |
| * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*
 | |
| * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY  *
 | |
| * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,  *
 | |
| * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE     *
 | |
| * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                *
 | |
| *************************************************************************
 | |
| 
 | |
| To use this library you need zlib library.
 | |
| You can get it from http://www.gzip.org/zlib/
 | |
| 
 | |
| 
 | |
| GZIP file handling on top of the zlib interface.
 | |
| 
 | |
| TODO:
 | |
| 	- detect plain text files
 | |
| 	- proper testing
 | |
| 	- improve implementation?
 | |
| 	- check gzopen flags for consistency (ex: strategy flag)
 | |
| 
 | |
| Loading the library:
 | |
| 
 | |
|     [local] gzip = require 'gzip'
 | |
| 
 | |
| gzip.open(filename [, mode])
 | |
| 
 | |
|     Opens a file name using "gzopen". Behaviour is identical to the description
 | |
|     given in the zlib library. If mode is not given a default mode "r" will be
 | |
|     used. Mode is the same as interpreted by gzopen function, ie, it can
 | |
|     include special modes such as characters 1 to 9 that will be treated as the
 | |
|     compression level when opening a file for writing.
 | |
| 
 | |
|     It returns a new file handle, or, in case of errors, nil plus an error
 | |
|     message
 | |
| 
 | |
| gzip.lines(filename)
 | |
| 
 | |
|     Same behaviour as io.lines in the io standard library provided by lua
 | |
|     with the aditional feature of working with gzip files. If a normal text
 | |
|     file is read it will read it normaly.
 | |
| 
 | |
| gzip.close(file)
 | |
| 
 | |
|     Same as file:close, use file:close instead.
 | |
| 
 | |
| file:flush()
 | |
| 
 | |
|     This function takes no parameters and flushes all output to working file.
 | |
|     The same as calling 'gzflush(file, Z_FINISH)' so writing to the file will
 | |
|     most likely not work as expected. This is subject to change in the future
 | |
|     if there is a strong reason for it to happen.
 | |
| 
 | |
| file:read(format1, ...)
 | |
|     Reads the file file, according to the given formats, which specify what
 | |
|     to read. For each format, the function returns a string with the characters
 | |
|     read, or nil if it cannot read data with the specified format. When called
 | |
|     without formats, it uses a default format that reads the entire next line
 | |
|     (see below).
 | |
| 
 | |
|     The available formats are
 | |
| 
 | |
|         "*a"   reads the whole file, starting at the current position. On end of
 | |
|                file, it returns the empty string.
 | |
|         "*l"   reads the next line (skipping the end of line), returning nil on
 | |
|                end of file. This is the default format.
 | |
|         number reads a string with up to that number of characters, returning
 | |
|                nil on end of file. If number is zero, it reads nothing and
 | |
|                returns an empty string, or nil on end of file.
 | |
| 
 | |
|     Unlike io.read, the "*n" format will not be available.
 | |
| 
 | |
| 
 | |
| file:lines()
 | |
| 
 | |
|     Returns an iterator function that, each time it is called, returns a new
 | |
|     line from the file. Therefore, the construction
 | |
| 
 | |
|        for line in file:lines() do ... end
 | |
| 
 | |
|     will iterate over all lines of the file.
 | |
| 
 | |
| file:write(value1, ...)
 | |
| 
 | |
|     Writes the value of each of its arguments to the filehandle file. The
 | |
|     arguments must be strings or numbers. To write other values, use tostring
 | |
|     or string.format before write
 | |
| 
 | |
| file:close()
 | |
| 
 | |
|     Closes the file.
 | |
| 
 | 
