aboutsummaryrefslogtreecommitdiff
path: root/src/ltn12.lua
diff options
context:
space:
mode:
authorDiego Nehab <diego@tecgraf.puc-rio.br>2004-03-18 07:01:14 +0000
committerDiego Nehab <diego@tecgraf.puc-rio.br>2004-03-18 07:01:14 +0000
commit2c160627e51650f98d6ef01ae36bb86d6e91045f (patch)
treee67051e051b0a315aebc0a511d242905272aecfb /src/ltn12.lua
parentbcc0c2a9f0be2ca796ef5206a78e283fe15e6186 (diff)
downloadluasocket-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.lua24
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(...)
46end 46end
47 47
48-- create an empty source 48-- create an empty source
49function source.empty(err) 49local function empty()
50 return nil
51end
52
53function source.empty()
54 return empty
55end
56
57-- returns a source that just outputs an error
58function 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
64end 73end
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
87end 96end
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
170end 179end
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
179end 188end
180 189
190-- creates a sink that just returns an error
191function sink.error(err)
192 return function()
193 return nil, err
194 end
195end
196
181-- chains a sink with a filter 197-- chains a sink with a filter
182function sink.chain(f, snk) 198function sink.chain(f, snk)
183 return function(chunk, err) 199 return function(chunk, err)