Subject: 25.3; dired gets confused if filename contains linefeed char (\u000a) or (0x0a)
From: Blaubogi <[email-masked]>
To: "[email-masked]" <[email-masked]>
Date: Tue, 29 May 2018 13:11:30 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello,

If a filename contains a linefeed character, dired does not escape it. Instead dired shows it in the buffer which make the remaining characters of the name appear on the beginning of the next line. (using linefeed with code 0x0A or unicode \u000a)

  -rwxrwxrwx 1 root    4 29.05.2018 12:37:14 ffff
  -rwxrwxrwx 1 root    4 29.05.2018 18:42:22 test
test
  -rwxrwxrwx 1 root    4 29.05.2018 12:37:14 vtvt

This causes all kinds of trouble:
- file can't be deleted
- regular expression for file recognition doesn't work any longer:
'no file on this line'
- hide-details mode does not show ANY files in this dir
- probably more

System:
In GNU Emacs 25.3.1 (x86_64-suse-linux-gnu, GTK+ Version 3.20.10)
of 2018-05-25 built on lamb08
Windowing system distributor 'The X.Org Foundation', version 11.0.11803000
System Description: openSUSE Leap 42.3

ext4 filesystem.

To reproduce:
Using ruby I created a file like this:

dir = "/mnt/loop0/test"
fname = "test" + "\u000a" + "test"
File.open(File.join(dir, fname), "w") { |fd| fd.write("test") }

M-x dired /mnt/loop0/test

I didn't test emacs under Microsoft Windows.
I did test using ntfs filesystem instead of ext4 which makes no difference.

Best regards

Sent from [ProtonMail](https://protonmail.com), Swiss-based encrypted email.