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