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.
|
|
|