mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-22 21:50:45 -08:00
Extend meaning of UNIQUIFY `auto-save-file-name-transforms'. (Bug#47493)
* doc/lispref/backups.texi (Auto-Saving): Explain UNIQUIFY being a secure hash in auto-save-file-name-transforms. * etc/NEWS: Mention change in `auto-save-file-name-transforms'. * lisp/files.el (auto-save-file-name-transforms): Adapt docstring. (make-auto-save-file-name): Care, if UNIQ is a secure hash symbol.
This commit is contained in:
parent
fafe912bd3
commit
02c80307f1
3 changed files with 31 additions and 8 deletions
|
|
@ -481,6 +481,12 @@ all directory separators were changed to @samp{!} to prevent clashes.
|
|||
(This will not work correctly if your filesystem truncates the
|
||||
resulting name.)
|
||||
|
||||
If @var{uniquify} is one of the members of
|
||||
@code{secure-hash-algorithms}, Emacs constructs the nondirectory part
|
||||
of the auto-save file name by applying that @code{secure-hash} to the
|
||||
buffer file name. This avoids any risk of excessively long file
|
||||
names.
|
||||
|
||||
All the transforms in the list are tried, in the order they are listed.
|
||||
When one transform applies, its result is final;
|
||||
no further transforms are tried.
|
||||
|
|
|
|||
7
etc/NEWS
7
etc/NEWS
|
|
@ -3083,6 +3083,13 @@ It is written as '(:success BODY...)' where BODY is executed
|
|||
whenever the protected form terminates without error, with the
|
||||
specified variable bound to the the value of the protected form.
|
||||
|
||||
+++
|
||||
** 'The 'uniquify' argument in 'auto-save-file-name-transforms' can be a symbol.
|
||||
If this symbol is one of the members of 'secure-hash-algorithms',
|
||||
Emacs constructs the nondirectory part of the auto-save file name by
|
||||
applying that 'secure-hash' to the buffer file name. This avoids any
|
||||
risk of excessively long file names.
|
||||
|
||||
|
||||
* Changes in Emacs 28.1 on Non-Free Operating Systems
|
||||
|
||||
|
|
|
|||
|
|
@ -391,6 +391,10 @@ constructed by taking the directory part of the replaced file-name,
|
|||
concatenated with the buffer file name with all directory separators
|
||||
changed to `!' to prevent clashes. This will not work
|
||||
correctly if your filesystem truncates the resulting name.
|
||||
If UNIQUIFY is one of the members of `secure-hash-algorithms',
|
||||
Emacs constructs the nondirectory part of the auto-save file name
|
||||
by applying that `secure-hash' to the buffer file name. This
|
||||
avoids any risk of excessively long file names.
|
||||
|
||||
All the transforms in the list are tried, in the order they are listed.
|
||||
When one transform applies, its result is final;
|
||||
|
|
@ -6647,14 +6651,20 @@ See also `auto-save-file-name-p'."
|
|||
uniq (car (cddr (car list)))))
|
||||
(setq list (cdr list)))
|
||||
(if result
|
||||
(if uniq
|
||||
(setq filename (concat
|
||||
(setq filename
|
||||
(cond
|
||||
((memq uniq (secure-hash-algorithms))
|
||||
(concat
|
||||
(file-name-directory result)
|
||||
(secure-hash uniq filename)))
|
||||
(uniq
|
||||
(concat
|
||||
(file-name-directory result)
|
||||
(subst-char-in-string
|
||||
?/ ?!
|
||||
(replace-regexp-in-string "!" "!!"
|
||||
filename))))
|
||||
(setq filename result)))
|
||||
(replace-regexp-in-string
|
||||
"!" "!!" filename))))
|
||||
(t result))))
|
||||
(setq result
|
||||
(if (and (eq system-type 'ms-dos)
|
||||
(not (msdos-long-file-names)))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue