From: Ihor Radchenko <yantar92@gmail.com>
To: Max Nikulin <manikulin@gmail.com>
Cc: emacs-orgmode@gnu.org
Subject: [PATCH v2] Re: [BUG] org-attach-id-ts-folder-format fails on customized IDs [9.6 (9.6-??-2e9999783)]
Date: Wed, 10 Aug 2022 19:43:37 +0800 [thread overview]
Message-ID: <87a68ce32u.fsf@localhost> (raw)
In-Reply-To: <871qtxhsm6.fsf@localhost>
[-- Attachment #1: Type: text/plain, Size: 873 bytes --]
Ihor Radchenko <yantar92@gmail.com> writes:
>> Ihor, I am afraid of collisions due to short input to md5. Long hash
>> value gives false impression of high entropy but actually there are not
>> so many variants for 1 or 2 characters strings. Either there is no point
>> in making long name from short id or random string of appropriate length
>> should be used instead.
>
> Random is not an option. If we use random string, how will we get the
> right attachment path on a second call? This function must return the
> same value given the same input.
>
> Having said that, I do agree (taking into account the other comment)
> that md5 may not be a very good idea. Maybe simply something like
> "__/id". Ideally, we should be able to recover the original id from the
> path to attachment.
I have updated the patch to use "__/id" when id is too short.
Any objections?
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: v2-0001-org-attach-dir-from-id-Do-not-rely-on-ID-being-ov.patch --]
[-- Type: text/x-patch, Size: 2310 bytes --]
From 7ca5fe66c53a1399943a2e2d4a1675ca8cd14194 Mon Sep 17 00:00:00 2001
Message-Id: <7ca5fe66c53a1399943a2e2d4a1675ca8cd14194.1660131747.git.yantar92@gmail.com>
From: Ihor Radchenko <yantar92@gmail.com>
Date: Sat, 23 Jul 2022 13:13:24 +0800
Subject: [PATCH v2] org-attach-dir-from-id: Do not rely on ID being over 6
chars long
* lisp/org-attach.el (org-attach-id-uuid-folder-format): Fall back to
"--/ID" when the ID contains 2 chars or less and cannot be split into
the "xy/z...." path.
(org-attach-id-ts-folder-format): Fall back to "unknown/ID" path
format when the ID contains less than 7 chars and cannot be split into
the "YYYYMM/rest" path.
Fixes https://orgmode.org/list/KC8PcypJapBpJQtJxM0kX5N7Z0THL2Lq6EQjBMzpw1-vgQf72egZ2JOIlTbPYiqAVD4MdSBhrhBZr2Ykf5DN1mocm1ANvvuKKZShlkgzKYM=@pm.me
---
lisp/org-attach.el | 25 +++++++++++++++++--------
1 file changed, 17 insertions(+), 8 deletions(-)
diff --git a/lisp/org-attach.el b/lisp/org-attach.el
index fe49af6f3..bb7c787f7 100644
--- a/lisp/org-attach.el
+++ b/lisp/org-attach.el
@@ -159,19 +159,28 @@ (defcustom org-attach-archive-delete nil
(defun org-attach-id-uuid-folder-format (id)
"Translate an UUID ID into a folder-path.
Default format for how Org translates ID properties to a path for
-attachments. Useful if ID is generated with UUID."
- (format "%s/%s"
- (substring id 0 2)
- (substring id 2)))
+attachments. Useful if ID is generated with UUID.
+
+When ID is too short (less than 3 chars), use its md5 hash to create
+the path."
+ (if (< (length id) 3)
+ (format "--/%s" id)
+ (format "%s/%s"
+ (substring id 0 2)
+ (substring id 2))))
(defun org-attach-id-ts-folder-format (id)
"Translate an ID based on a timestamp to a folder-path.
Useful way of translation if ID is generated based on ISO8601
timestamp. Splits the attachment folder hierarchy into
-year-month, the rest."
- (format "%s/%s"
- (substring id 0 6)
- (substring id 6)))
+year-month, the rest.
+
+When ID is too short (less than 7 chars), return \"unknown/ID\"."
+ (if (< (length id) 7)
+ (format "unknown/%s" id)
+ (format "%s/%s"
+ (substring id 0 6)
+ (substring id 6))))
(defcustom org-attach-id-to-path-function-list '(org-attach-id-uuid-folder-format
org-attach-id-ts-folder-format)
--
2.35.1
[-- Attachment #3: Type: text/plain, Size: 207 bytes --]
--
Ihor Radchenko,
Org mode contributor,
Learn more about Org mode at https://orgmode.org/.
Support Org development at https://liberapay.com/org-mode,
or support my work at https://liberapay.com/yantar92
next prev parent reply other threads:[~2022-08-10 11:44 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-20 19:12 [BUG] org-attach-id-ts-folder-format fails on customized IDs [9.6 (9.6-??-2e9999783)] Janek F
2022-07-23 5:22 ` [PATCH] " Ihor Radchenko
2022-08-02 22:26 ` Janek F
2022-08-03 16:03 ` Max Nikulin
2022-08-03 22:25 ` Ihor Radchenko
2022-08-10 11:43 ` Ihor Radchenko [this message]
2022-08-10 12:17 ` [PATCH v2] " Max Nikulin
2022-08-10 13:23 ` [PATCH v3] " Ihor Radchenko
2022-08-10 15:18 ` Max Nikulin
2022-08-11 4:19 ` Ihor Radchenko
2022-08-11 14:43 ` Max Nikulin
2022-08-13 5:29 ` Ihor Radchenko
2022-08-13 16:25 ` Max Nikulin
2022-08-14 4:00 ` Ihor Radchenko
2022-10-02 9:14 ` [PATCH v4] " Ihor Radchenko
2022-10-04 15:27 ` Max Nikulin
2022-10-05 5:44 ` Ihor Radchenko
2022-11-06 7:43 ` Ihor Radchenko
2022-11-07 17:05 ` [PATCH] org-attach.el: ID to path functions may return nil Max Nikulin
2022-11-08 5:08 ` Ihor Radchenko
2022-11-09 16:53 ` [PATCH v2] " Max Nikulin
2022-11-10 7:19 ` Ihor Radchenko
2022-11-13 16:26 ` Max Nikulin
2022-11-14 3:29 ` Ihor Radchenko
2022-11-14 16:59 ` Max Nikulin
2022-11-15 2:41 ` Ihor Radchenko
2022-11-15 16:41 ` Max Nikulin
2022-11-16 1:54 ` Ihor Radchenko
2022-08-12 15:35 ` [BUG] org-attach-id-ts-folder-format fails on customized IDs [9.6 (9.6-??-2e9999783)] Max Nikulin
2022-08-12 16:08 ` Janek F
2022-08-13 5:17 ` Ihor Radchenko
2022-08-13 15:59 ` Max Nikulin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.orgmode.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87a68ce32u.fsf@localhost \
--to=yantar92@gmail.com \
--cc=emacs-orgmode@gnu.org \
--cc=manikulin@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).