unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
From: Tomi Ollila <tomi.ollila@iki.fi>
To: Jesse Rosenthal <jrosenthal@jhu.edu>, notmuch@notmuchmail.org
Subject: Re: [PATCH] emacs: derive correct timestamp in FCC unique name
Date: Thu, 14 Jun 2012 12:43:37 +0300	[thread overview]
Message-ID: <m2k3zamdo6.fsf@guru.guru-group.fi> (raw)
In-Reply-To: <87d353ezyw.fsf@jhu.edu>

On Wed, Jun 13 2012, Jesse Rosenthal <jrosenthal@jhu.edu> wrote:

> Previously, the timestamp at the beginning of the FCC maildir unique
> maildir name was derived incorrectly, thanks to an integer
> overflow. This changes the derivation of timestamp to float
> arithmetic, and so gets the number correct. (It is still formatted
> with "%d" so it will show up as an integer.)
>
> This change is mostly a question of consistency, since the unique name
> is arbitrary anyway. But since most people use timestamps, and that was
> the original intention here as well, we might as well.
>
> Signed-off-by: Jesse Rosenthal <jrosenthal@jhu.edu>
> ---

Good point -- did some experiments (on 32bit machine, on 64 (* 65536 *65536)
just works OK (4294967296).

(insert (format " %d" (* 8191 65536)))  536805376
(insert (format " %d" (* 8192 65536)))  -536870912

Wraps now (many times already)

(insert (format "  %d" (* 32767 65536.0)))  2147418112
(insert (format "  %d" (* 32768 65536.0)))  -2147483648

Wraps Tue Jan 19 03:14:08 2038 UTC

(insert (format "  %0.f" (* 32768 65536.0)))  2147483648
(insert (format "  %0.f" (* 65536 65536.0)))  4294967296

Does not wrap.

On emacs window you can re-experiment by typing C-x C-e after last 
closing ')' on line.

(float-time '(32767 65536)) -> 2147418112.0 (minibuffer output)
(float-time '(32768 65536)) -> error "Invalid time specification"

On 64-bit machine this latest work ok; i.e 2147483648.0 is returned.

Alternatives:

1) Use current patch, filenames will have extra '-' in 2038 on 32-bit
systems.

2) Drop 'timeid' and replace it with (float-time) in `format` call a few
lines in original source after the patch context below -- No idea
how (float-time) works on 32-bit systems after 2038.

3) Use "%0.f" in format string instead of "%d" (there is no "%ld" or "%u"
sequences for `format`. I wonder what (current-time-string) in current
emacs return in 2038 (maybe I test (sometime(tm)) with (lib)faketime). 

I suggest option #2.

Tomi

>  emacs/notmuch-maildir-fcc.el |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/emacs/notmuch-maildir-fcc.el b/emacs/notmuch-maildir-fcc.el
> index dcfbc4b..6fd8ff9 100644
> --- a/emacs/notmuch-maildir-fcc.el
> +++ b/emacs/notmuch-maildir-fcc.el
> @@ -141,7 +141,7 @@ will NOT be removed or replaced."
>  
>  (defun notmuch-maildir-fcc-make-uniq-maildir-id ()
>     (let* ((ct (current-time))
> -	  (timeid (+ (* (car ct) 65536) (cadr ct)))
> +	  (timeid (+ (* (car ct) 65536.0) (cadr ct)))
>  	  (microseconds (car (cdr (cdr ct))))
>  	  (hostname (notmuch-maildir-fcc-host-fixer system-name)))
>       (setq notmuch-maildir-fcc-count (+ notmuch-maildir-fcc-count 1))
> -- 
> 1.7.9.5

  reply	other threads:[~2012-06-14  9:43 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-13 20:01 [PATCH] emacs: derive correct timestamp in FCC unique name Jesse Rosenthal
2012-06-14  9:43 ` Tomi Ollila [this message]
2012-06-14 16:35   ` Jesse Rosenthal
2012-06-14 17:16 ` [PATCHv2] " Jesse Rosenthal
2012-06-14 19:04   ` Tomi Ollila
2012-06-22 10:45   ` David Bremner

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://notmuchmail.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=m2k3zamdo6.fsf@guru.guru-group.fi \
    --to=tomi.ollila@iki.fi \
    --cc=jrosenthal@jhu.edu \
    --cc=notmuch@notmuchmail.org \
    /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://yhetil.org/notmuch.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).