return fs.read(fd, buffer, 0, buffer.length, pos, function(err, bytes) { if (err) { if (!callback) { stream.emit('error', err); } else { callback(err); } stream.destroy(); return; } if (!bytes) { if (buff) { if (options.start == null || row > options.start) { if (!callback) { stream.emit('line', buff); } else { callback(null, buff); } } row++; buff = ''; } return setTimeout(read, 1000); } var data = decode.write(buffer.slice(0, bytes)); if (!callback) { stream.emit('data', data); } var data = (buff + data).split(/\n+/) , l = data.length - 1 , i = 0; for (; i < l; i++) { if (options.start == null || row > options.start) { if (!callback) { stream.emit('line', data[i]); } else { callback(null, data[i]); } } row++; } buff = data[l]; pos += bytes; return read(); });
function _end () { stream.writable = false end.call(stream) if(!stream.readable) stream.destroy() }
process.nextTick(function () { stream.destroy() })