diff options
| author | Diego Nehab <diego@tecgraf.puc-rio.br> | 2004-03-18 07:01:14 +0000 |
|---|---|---|
| committer | Diego Nehab <diego@tecgraf.puc-rio.br> | 2004-03-18 07:01:14 +0000 |
| commit | 2c160627e51650f98d6ef01ae36bb86d6e91045f (patch) | |
| tree | e67051e051b0a315aebc0a511d242905272aecfb /src/ltn12.lua | |
| parent | bcc0c2a9f0be2ca796ef5206a78e283fe15e6186 (diff) | |
| download | luasocket-2c160627e51650f98d6ef01ae36bb86d6e91045f.tar.gz luasocket-2c160627e51650f98d6ef01ae36bb86d6e91045f.tar.bz2 luasocket-2c160627e51650f98d6ef01ae36bb86d6e91045f.zip | |
Message source in smtp.lua is a work of art.
Diffstat (limited to 'src/ltn12.lua')
| -rw-r--r-- | src/ltn12.lua | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/src/ltn12.lua b/src/ltn12.lua index de7103d..f43e975 100644 --- a/src/ltn12.lua +++ b/src/ltn12.lua | |||
| @@ -46,7 +46,16 @@ function filter.chain(...) | |||
| 46 | end | 46 | end |
| 47 | 47 | ||
| 48 | -- create an empty source | 48 | -- create an empty source |
| 49 | function source.empty(err) | 49 | local function empty() |
| 50 | return nil | ||
| 51 | end | ||
| 52 | |||
| 53 | function source.empty() | ||
| 54 | return empty | ||
| 55 | end | ||
| 56 | |||
| 57 | -- returns a source that just outputs an error | ||
| 58 | function source.error(err) | ||
| 50 | return function() | 59 | return function() |
| 51 | return nil, err | 60 | return nil, err |
| 52 | end | 61 | end |
| @@ -60,7 +69,7 @@ function source.file(handle, io_err) | |||
| 60 | if not chunk then handle:close() end | 69 | if not chunk then handle:close() end |
| 61 | return chunk | 70 | return chunk |
| 62 | end | 71 | end |
| 63 | else source.empty(io_err or "unable to open file") end | 72 | else source.error(io_err or "unable to open file") end |
| 64 | end | 73 | end |
| 65 | 74 | ||
| 66 | -- turns a fancy source into a simple source | 75 | -- turns a fancy source into a simple source |
| @@ -83,7 +92,7 @@ function source.string(s) | |||
| 83 | if chunk ~= "" then return chunk | 92 | if chunk ~= "" then return chunk |
| 84 | else return nil end | 93 | else return nil end |
| 85 | end | 94 | end |
| 86 | else source.empty() end | 95 | else return source.empty() end |
| 87 | end | 96 | end |
| 88 | 97 | ||
| 89 | -- creates rewindable source | 98 | -- creates rewindable source |
| @@ -166,7 +175,7 @@ function sink.file(handle, io_err) | |||
| 166 | end | 175 | end |
| 167 | return handle:write(chunk) | 176 | return handle:write(chunk) |
| 168 | end | 177 | end |
| 169 | else sink.null() end | 178 | else return sink.error(io_err or "unable to open file") end |
| 170 | end | 179 | end |
| 171 | 180 | ||
| 172 | -- creates a sink that discards data | 181 | -- creates a sink that discards data |
| @@ -178,6 +187,13 @@ function sink.null() | |||
| 178 | return null | 187 | return null |
| 179 | end | 188 | end |
| 180 | 189 | ||
| 190 | -- creates a sink that just returns an error | ||
| 191 | function sink.error(err) | ||
| 192 | return function() | ||
| 193 | return nil, err | ||
| 194 | end | ||
| 195 | end | ||
| 196 | |||
| 181 | -- chains a sink with a filter | 197 | -- chains a sink with a filter |
| 182 | function sink.chain(f, snk) | 198 | function sink.chain(f, snk) |
| 183 | return function(chunk, err) | 199 | return function(chunk, err) |
