From: "apatniv (Vivek Ak)" Date: 2022-04-03T20:56:34+00:00 Subject: [ruby-core:108164] [Ruby master Bug#18676] Misleading Documentation/Bug: Incorrect File.position on a file opened with "a" mode Issue #18676 has been reported by apatniv (Vivek Ak). ---------------------------------------- Bug #18676: Misleading Documentation/Bug: Incorrect File.position on a file opened with "a" mode https://bugs.ruby-lang.org/issues/18676 * Author: apatniv (Vivek Ak) * Status: Open * Priority: Normal * ruby -v: ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux-gnu] * Backport: 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN ---------------------------------------- Documentation says that whenever a file is opened in "a" mode, the stream is positioned at the end of stream. However, #tell method returns 0 instead of the size of the file. (https://ruby-doc.org/core-3.1.1/IO.html#class-IO-label-Position) Issue happens with latest version of ruby 3.1.1 as well. How to reproduce: ``` ruby cat code_to_reproduce.txt fp = File.open("sample_data.txt", "a") puts "File size=#{fp.size} position=#{fp.tell}" ``` Output: See the **position value** ``` shell ->ruby -v ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux-gnu] ->wc sample_data.txt 1 2 12 sample_data.txt ->cat sample_data.txt hello world ->ruby code_to_reproduce.txt File size=12 position=0 ->cat code_to_reproduce.txt fp = File.open("sample_data.txt", "a") puts "File size=#{fp.size} position=#{fp.tell}" ``` Further debugging with **`irb`** ``` ruby rb(main):009:0> fp = File.open("sample_data.txt", "a") irb(main):010:0> fp.tell => 0 irb(main):011:0> fp.size => 12 irb(main):012:0> fp.fileno => 7 irb(main):013:0> Process.pid => 22675 ``` Examining the offset in /proc filesytem ``` shell ->cat /proc/22675/fdinfo/7 pos: 0 flags: 02102001 mnt_id: 30 ``` -- https://bugs.ruby-lang.org/ Unsubscribe: