GNU bug report logs - #37922
26.3; move-file-to-trash puts wrong trash file name at name collision

Previous Next

Package: emacs;

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

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Shingo Tanaka <shingo.fg8 <at> gmail.com>
Subject: bug#37922: closed (Re: bug#37922: 26.3; move-file-to-trash puts
 wrong trash file name at name collision)
Date: Sat, 16 Nov 2019 12:57:02 +0000
[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: Eli Zaretskii <eliz <at> gnu.org>
To: Shingo Tanaka <shingo.fg8 <at> gmail.com>
Cc: 37922-done <at> debbugs.gnu.org
Subject: Re: bug#37922: 26.3;
 move-file-to-trash puts wrong trash file name at name collision
Date: Sat, 16 Nov 2019 14:56:37 +0200
> 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)]
From: Shingo Tanaka <shingo.fg8 <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 26.3; move-file-to-trash puts wrong trash file name at name collision
Date: Fri, 25 Oct 2019 22:59:28 +0900
[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.