GNU bug report logs -
#37922
26.3; move-file-to-trash puts wrong trash file name at name collision
Previous Next
Reported by: Shingo Tanaka <shingo.fg8 <at> gmail.com>
Date: Fri, 25 Oct 2019 14:41:02 UTC
Severity: normal
Tags: easy
Found in version 26.3
Done: Eli Zaretskii <eliz <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
[Message part 1 (text/plain, inline)]
Your bug report
#37922: 26.3; move-file-to-trash puts wrong trash file name at name collision
which was filed against the emacs package, has been closed.
The explanation is attached below, along with your original report.
If you require more details, please reply to 37922 <at> debbugs.gnu.org.
--
37922: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=37922
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
> From: Shingo Tanaka <shingo.fg8 <at> gmail.com>
> Date: Fri, 25 Oct 2019 22:59:28 +0900
>
> When delete-by-moving-to-trash is t and system-move-file-to-trash is not
> defined, move-file-to-trash moves the deleted file to system trash can
> following freedesktop.org trash can specification.
>
> In this condition, when a file is deleted and it has the same name as the
> one of an already deleted file in trash can, move-file-to-trash generates
> another file name by using make-temp-file to avoid the name collision.
> Unfortunately, it does put a wrong name with suffix ".trashinfo".
>
> For example, when 2 "hoge.txt" are deleted, expected files are like:
>
> /home/myusername/.local/share/Trash/files:
> -rw-rw-rw- 1 myusername 10 2019-10-25 20:00 hoge.txt
> -rw-rw-rw- 1 myusername 10 2019-10-25 20:00 hoge.txtwmWP0h
>
> /home/myusername/.local/share/Trash/info:
> -rw-rw-rw- 1 myusername 75 2019-10-25 20:00 hoge.txt.trashinfo
> -rw------- 1 myusername 75 2019-10-25 20:00 hoge.txtwmWP0h.trashinfo
>
> However, the reality is the 2nd trash file in files directory is named
> wrongly with ".trashinfo" suffix like:
>
> /home/myusername/.local/share/Trash/files:
> -rw-rw-rw- 1 myusername 10 2019-10-25 20:00 hoge.txt
> -rw-rw-rw- 1 myusername 10 2019-10-25 20:00 hoge.txtwmWP0h.trashinfo
> ^^^^^^^^^
> /home/myusername/.local/share/Trash/info:
> -rw-rw-rw- 1 myusername 75 2019-10-25 20:00 hoge.txt.trashinfo
> -rw------- 1 myusername 75 2019-10-25 20:00 hoge.txtwmWP0h.trashinfo
>
> Here is a potential patch.
Thanks, I installed this.
[Message part 3 (message/rfc822, inline)]
[Message part 4 (text/plain, inline)]
Hi,
When delete-by-moving-to-trash is t and system-move-file-to-trash is not
defined, move-file-to-trash moves the deleted file to system trash can
following freedesktop.org trash can specification.
In this condition, when a file is deleted and it has the same name as the
one of an already deleted file in trash can, move-file-to-trash generates
another file name by using make-temp-file to avoid the name collision.
Unfortunately, it does put a wrong name with suffix ".trashinfo".
For example, when 2 "hoge.txt" are deleted, expected files are like:
/home/myusername/.local/share/Trash/files:
-rw-rw-rw- 1 myusername 10 2019-10-25 20:00 hoge.txt
-rw-rw-rw- 1 myusername 10 2019-10-25 20:00 hoge.txtwmWP0h
/home/myusername/.local/share/Trash/info:
-rw-rw-rw- 1 myusername 75 2019-10-25 20:00 hoge.txt.trashinfo
-rw------- 1 myusername 75 2019-10-25 20:00 hoge.txtwmWP0h.trashinfo
However, the reality is the 2nd trash file in files directory is named
wrongly with ".trashinfo" suffix like:
/home/myusername/.local/share/Trash/files:
-rw-rw-rw- 1 myusername 10 2019-10-25 20:00 hoge.txt
-rw-rw-rw- 1 myusername 10 2019-10-25 20:00 hoge.txtwmWP0h.trashinfo
^^^^^^^^^
/home/myusername/.local/share/Trash/info:
-rw-rw-rw- 1 myusername 75 2019-10-25 20:00 hoge.txt.trashinfo
-rw------- 1 myusername 75 2019-10-25 20:00 hoge.txtwmWP0h.trashinfo
Here is a potential patch.
--- files.el.original 2019-09-17 05:14:45.000000000 +0900
+++ files.el 2019-10-25 20:52:13.899138800 +0900
@@ -7408,7 +7408,8 @@
(setq info-fn (make-temp-file
(expand-file-name files-base trash-info-dir)
nil ".trashinfo"))
- (setq files-base (file-name-nondirectory info-fn))
+ (setq files-base (substring (file-name-nondirectory info-fn)
+ 0 (- (length ".trashinfo"))))
(write-region nil nil info-fn nil 'quiet info-fn)))
;; Finally, try to move the file to the trashcan.
(let ((delete-by-moving-to-trash nil)
---
Shingo Tanaka
[Message part 5 (text/html, inline)]
This bug report was last modified 5 years and 248 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.