From: shugo@... Date: 2014-06-17T07:45:05+00:00 Subject: [ruby-core:63207] [ruby-trunk - Bug #9949] [Closed] Net::FTP#gettextfile truncates last line when missing newline before EOF Issue #9949 has been updated by Shugo Maeda. Status changed from Assigned to Closed % Done changed from 0 to 100 Applied in changeset r46457. ---------- * lib/net/ftp.rb (gets, readline): read lines without LF properly. [ruby-core:63205] [Bug #9949] * test/net/ftp/test_buffered_socket.rb: related test. ---------------------------------------- Bug #9949: Net::FTP#gettextfile truncates last line when missing newline before EOF https://bugs.ruby-lang.org/issues/9949#change-47257 * Author: Andrew Vit * Status: Closed * Priority: Normal * Assignee: Shugo Maeda * Category: lib * Target version: * ruby -v: ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux] * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN ---------------------------------------- Capturing a file from FTP using the default ftp.get (assuming binary is false) causes text files to get truncated before the last occurrence of "\n". This means that files missing a newline before EOF are corrupted. ~~~ Net::FTP.open(host, username, password) do |ftp| puts ftp.gettextfile(filename, nil) end ~~~ Tested with "\n" in different positions to characterize the incorrect behaviour: ~~~ file: "" output: "" file: "\n" output: "" file: "\n" output: "" ~~~ Behaviour looks correct in 1.9.3, returns full file content in all cases. Regression exists in ruby 2.0 and 2.1. Tested with: ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-darwin13.0] ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux] ruby 2.0.0p451 (2014-02-24 revision 45167) [universal.x86_64-darwin13] ruby 1.9.3p545 (2014-02-24 revision 45159) [x86_64-darwin13.1.0] -- https://bugs.ruby-lang.org/