mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-23 06:00:41 -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
|
(This will not work correctly if your filesystem truncates the
|
||||||
resulting name.)
|
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.
|
All the transforms in the list are tried, in the order they are listed.
|
||||||
When one transform applies, its result is final;
|
When one transform applies, its result is final;
|
||||||
no further transforms are tried.
|
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
|
whenever the protected form terminates without error, with the
|
||||||
specified variable bound to the the value of the protected form.
|
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
|
* 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
|
concatenated with the buffer file name with all directory separators
|
||||||
changed to `!' to prevent clashes. This will not work
|
changed to `!' to prevent clashes. This will not work
|
||||||
correctly if your filesystem truncates the resulting name.
|
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.
|
All the transforms in the list are tried, in the order they are listed.
|
||||||
When one transform applies, its result is final;
|
When one transform applies, its result is final;
|
||||||
|
|
@ -6647,14 +6651,20 @@ See also `auto-save-file-name-p'."
|
||||||
uniq (car (cddr (car list)))))
|
uniq (car (cddr (car list)))))
|
||||||
(setq list (cdr list)))
|
(setq list (cdr list)))
|
||||||
(if result
|
(if result
|
||||||
(if uniq
|
(setq filename
|
||||||
(setq filename (concat
|
(cond
|
||||||
|
((memq uniq (secure-hash-algorithms))
|
||||||
|
(concat
|
||||||
|
(file-name-directory result)
|
||||||
|
(secure-hash uniq filename)))
|
||||||
|
(uniq
|
||||||
|
(concat
|
||||||
(file-name-directory result)
|
(file-name-directory result)
|
||||||
(subst-char-in-string
|
(subst-char-in-string
|
||||||
?/ ?!
|
?/ ?!
|
||||||
(replace-regexp-in-string "!" "!!"
|
(replace-regexp-in-string
|
||||||
filename))))
|
"!" "!!" filename))))
|
||||||
(setq filename result)))
|
(t result))))
|
||||||
(setq result
|
(setq result
|
||||||
(if (and (eq system-type 'ms-dos)
|
(if (and (eq system-type 'ms-dos)
|
||||||
(not (msdos-long-file-names)))
|
(not (msdos-long-file-names)))
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue