GNU bug report logs - #70322
30.0.50; format-seconds with %z doesn't handle zero input correctly

Previous Next

Package: emacs;

Reported by: Herman, Géza <geza.herman <at> gmail.com>

Date: Wed, 10 Apr 2024 10:01:02 UTC

Severity: normal

Found in version 30.0.50

Done: Eli Zaretskii <eliz <at> gnu.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 70322 in the body.
You can then email your comments to 70322 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#70322; Package emacs. (Wed, 10 Apr 2024 10:01:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Herman, Géza <geza.herman <at> gmail.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Wed, 10 Apr 2024 10:01:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Herman, Géza <geza.herman <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 30.0.50; format-seconds with %z doesn't handle zero input correctly
Date: Wed, 10 Apr 2024 11:59:42 +0200
When the input seconds is 0, format-seconds emits the full string. For
example,

(format-seconds "%Y, %D, %H, %M, %z%S" 0)

returns "0 years, 0 days, 0 hours, 0 minutes, 0 seconds"

instead of "0 seconds".

(format-seconds "%Y, %D, %H, %M, %z%S" 1) correctly returns "1 second".



In GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, cairo version
 1.18.0) of 2024-03-23 built on okoska
Repository revision: c552cb98ad4ffbec91db52cde71cf3e0fa76e0dc
Repository branch: my-modifications
Windowing system distributor 'The X.Org Foundation', version 11.0.12101008
System Description: Debian GNU/Linux trixie/sid

Configured using:
 'configure --with-native-compilation --without-compress-install
 --without-gconf --without-gsettings --without-dbus --with-small-ja-dic
 --with-json --with-xinput2 --with-x-toolkit=no --with-tree-sitter
 --with-cairo --with-cairo-xcb --disable-silent-rules
 'CFLAGS=-mtune=native -march=native -g3 -O3''

Configured features:
ACL CAIRO FREETYPE GIF GLIB GMP GNUTLS HARFBUZZ JPEG JSON LCMS2 LIBOTF
LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NATIVE_COMP NOTIFY
INOTIFY OLDXMENU PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF
TREE_SITTER WEBP X11 XDBE XIM XINPUT2 XPM ZLIB

Important settings:
  value of $LC_ALL: C.UTF-8
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=none
  locale-coding-system: utf-8-unix

Major mode: Fundamental

Minor modes in effect:
  vertico-multiform-mode: t
  recentf-mode: t
  which-key-mode: t
  global-auto-revert-mode: t
  savehist-mode: t
  ws-butler-global-mode: t
  ws-butler-mode: t
  diff-hl-flydiff-mode: t
  global-diff-hl-mode: t
  clean-aindent-mode: t
  global-whitespace-mode: t
  marginalia-mode: t
  vertico-mode: t
  global-anzu-mode: t
  anzu-mode: t
  global-evil-matchit-mode: t
  evil-matchit-mode: t
  evil-snipe-override-mode: t
  evil-snipe-mode: t
  evil-snipe-override-local-mode: t
  evil-snipe-local-mode: t
  global-evil-surround-mode: t
  evil-surround-mode: t
  global-evil-visualstar-mode: t
  evil-visualstar-mode: t
  better-jumper-mode: t
  better-jumper-local-mode: t
  evil-leader-mode: t
  global-evil-leader-mode: t
  global-hl-todo-mode: t
  winum-mode: t
  hes-mode: t
  gcmh-mode: t
  global-page-break-lines-mode: t
  evil-mode: t
  evil-local-mode: t
  save-place-mode: t
  override-global-mode: t
  minibuffer-depth-indicate-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tab-bar-history-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  minibuffer-regexp-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  abbrev-mode: t

Load-path shadows:
/home/geza/.emacs.d/elpa/transient-20240226.2332/transient hides /usr/local/share/emacs/30.0.50/lisp/transient
~/.emacs.d/lisp/emacs-gdb/gdb-mi hides /usr/local/share/emacs/30.0.50/lisp/progmodes/gdb-mi

Features:
(shadow sort project mail-extr emacsbug message mailcap yank-media puny
evil-collection-dired dired-git-info peep-dired dired-narrow delsel
dired-filter f s dired-aux dired-x dired-subtree dired-hacks-utils
evil-collection-wdired wdired ls-lisp dired dired-loaddefs rfc822 mml
mml-sec password-cache epa derived epg rfc6068 epg-config gnus-util
time-date mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev
gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util
mail-prsvr mail-utils mule-util cursor-sensor evil-collection-consult
consult-dir vertico-multiform consult-compile compile
evil-collection-comint comint ansi-osc ansi-color recentf tree-widget
wid-edit shut-up consult bookmark text-property-search pp face-remap
drag-stuff which-key autorevert filenotify savehist bm
evil-collection-info info ws-butler diff-hl-flydiff diff diff-hl
log-view pcvs-util vc-dir ewoc vc vc-dispatcher diff-mode
clean-aindent-mode column-enforce-mode whitespace orderless marginalia
vertico anzu evil-matchit evil-matchit-evil-setup evil-matchit-sdk
semantic/lex semantic/fw eieio eieio-core mode-local find-func
evil-exchange evil-args evil-indent-plus evil-textobj-line
evil-textobj-entire evil-textobj-column evil-textobj-anyblock evil-snipe
evil-surround evil-mc evil-mc-command-execute evil-mc-command-record
evil-mc-cursor-make evil-mc-region evil-mc-cursor-state evil-mc-undo
evil-mc-vars evil-mc-known-commands evil-mc-common avy evil-visualstar
evil-collection-simple evil-collection-replace evil-collection annalist
better-jumper pcase cl-macs evil-leader hl-todo compat hl-line
transpose-frame winum dash ov highlight-escape-sequences gcmh
page-break-lines evil evil-integration evil-maps evil-commands reveal
evil-jumps evil-command-window evil-types evil-search evil-ex
evil-macros evil-repeat evil-states evil-core evil-common thingatpt rect
evil-vars ring edmacro kmacro byte-opt saveplace bind-key easy-mmode
advice mb-depth comp cl-seq comp-cstr cl-extra help-mode warnings icons
subr-x gv cl-loaddefs cl-lib comp-run bytecomp byte-compile comp-common
rx rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook
vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win
term/common-win x-dnd touch-screen tool-bar dnd fontset image regexp-opt
fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode
register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select
scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors
frame minibuffer nadvice seq simple cl-generic indonesian philippine
cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese composite emoji-zwj charscript
charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure
cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp
files window text-properties overlay sha1 md5 base64 format env
code-pages mule custom widget keymap hashtable-print-readable backquote
threads inotify lcms2 dynamic-setting font-render-setting cairo xinput2
x multi-tty move-toolbar make-network-process native-compile emacs)

Memory information:
((conses 16 267620 317533) (symbols 48 22835 189) (strings 32 73149 28252) (string-bytes 1 3065253) (vectors 16 36191)
 (vector-slots 8 422531 144718) (floats 8 230 208) (intervals 56 1888 275) (buffers 984 12))




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#70322; Package emacs. (Wed, 10 Apr 2024 11:24:02 GMT) Full text and rfc822 format available.

Message #8 received at 70322 <at> debbugs.gnu.org (full text, mbox):

From: Stephen Berman <stephen.berman <at> gmx.net>
To: Herman <at> debbugs.gnu.org
Cc: Géza <geza.herman <at> gmail.com>, 70322 <at> debbugs.gnu.org
Subject: Re: bug#70322: 30.0.50; format-seconds with %z doesn't handle zero
 input correctly
Date: Wed, 10 Apr 2024 13:23:00 +0200
[Message part 1 (text/plain, inline)]
On Wed, 10 Apr 2024 11:59:42 +0200 Herman <at> debbugs.gnu.org, Géza <geza.herman <at> gmail.com> wrote:

> When the input seconds is 0, format-seconds emits the full string. For
> example,
>
> (format-seconds "%Y, %D, %H, %M, %z%S" 0)
>
> returns "0 years, 0 days, 0 hours, 0 minutes, 0 seconds"
>
> instead of "0 seconds".
>
> (format-seconds "%Y, %D, %H, %M, %z%S" 1) correctly returns "1 second".

The attached patch seems to fix this.

Steve Berman

[Message part 2 (text/x-patch, attachment)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#70322; Package emacs. (Wed, 10 Apr 2024 12:00:04 GMT) Full text and rfc822 format available.

Message #11 received at 70322 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Herman Géza <geza.herman <at> gmail.com>
Cc: 70322 <at> debbugs.gnu.org
Subject: Re: bug#70322: 30.0.50;
 format-seconds with %z doesn't handle zero input correctly
Date: Wed, 10 Apr 2024 14:58:53 +0300
> From: Herman <at> debbugs.gnu.org, Géza <geza.herman <at> gmail.com>
> Date: Wed, 10 Apr 2024 11:59:42 +0200
> 
> 
> When the input seconds is 0, format-seconds emits the full string. For
> example,
> 
> (format-seconds "%Y, %D, %H, %M, %z%S" 0)
> 
> returns "0 years, 0 days, 0 hours, 0 minutes, 0 seconds"
> 
> instead of "0 seconds".
> 
> (format-seconds "%Y, %D, %H, %M, %z%S" 1) correctly returns "1 second".

Does the patch below give good results?

diff --git a/lisp/calendar/time-date.el b/lisp/calendar/time-date.el
index e96e2e7..b75f17c 100644
--- a/lisp/calendar/time-date.el
+++ b/lisp/calendar/time-date.el
@@ -344,8 +344,11 @@ format-seconds
              string)
         (cond
          ((string-equal spec "z")
-          (setq chop-leading (and leading-zeropos
-                                  (min leading-zeropos (match-beginning 0)))))
+          (setq chop-leading
+                (if leading-zeropos
+                    (min leading-zeropos (match-beginning 0))
+                  ;; The entire speci is zero, get past "%z" to last 0.
+                  (+ 2 (match-beginning 0)))))
          ((string-equal spec "x")
           (setq chop-trailing t))
          (t




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#70322; Package emacs. (Wed, 10 Apr 2024 12:47:02 GMT) Full text and rfc822 format available.

Message #14 received at 70322 <at> debbugs.gnu.org (full text, mbox):

From: Herman, Géza <geza.herman <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: Herman Géza <geza.herman <at> gmail.com>, 70322 <at> debbugs.gnu.org
Subject: Re: bug#70322: 30.0.50; format-seconds with %z doesn't handle zero
 input correctly
Date: Wed, 10 Apr 2024 14:44:52 +0200
Eli Zaretskii <eliz <at> gnu.org> writes:

> Does the patch below give good results?

Yes, both yours and Stephen's patch fix the problem




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#70322; Package emacs. (Wed, 10 Apr 2024 13:02:08 GMT) Full text and rfc822 format available.

Message #17 received at 70322 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Géza Herman <geza.herman <at> gmail.com>,
 Stephen Berman <stephen.berman <at> gmx.net>
Cc: 70322 <at> debbugs.gnu.org
Subject: Re: bug#70322: 30.0.50; format-seconds with %z doesn't handle zero
 input correctly
Date: Wed, 10 Apr 2024 16:00:30 +0300
> From: Herman, Géza <geza.herman <at> gmail.com>
> Cc: Herman Géza <geza.herman <at> gmail.com>,
>  70322 <at> debbugs.gnu.org
> Date: Wed, 10 Apr 2024 14:44:52 +0200
> 
> 
> Eli Zaretskii <eliz <at> gnu.org> writes:
> 
> > Does the patch below give good results?
> 
> Yes, both yours and Stephen's patch fix the problem

Thanks.

Stephen, any argumentation for which one is better?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#70322; Package emacs. (Wed, 10 Apr 2024 13:23:08 GMT) Full text and rfc822 format available.

Message #20 received at 70322 <at> debbugs.gnu.org (full text, mbox):

From: Stephen Berman <stephen.berman <at> gmx.net>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: Géza Herman <geza.herman <at> gmail.com>, 70322 <at> debbugs.gnu.org
Subject: Re: bug#70322: 30.0.50; format-seconds with %z doesn't handle zero
 input correctly
Date: Wed, 10 Apr 2024 15:21:59 +0200
On Wed, 10 Apr 2024 16:00:30 +0300 Eli Zaretskii <eliz <at> gnu.org> wrote:

>> From: Herman, Géza <geza.herman <at> gmail.com>
>> Cc: Herman Géza <geza.herman <at> gmail.com>,
>>  70322 <at> debbugs.gnu.org
>> Date: Wed, 10 Apr 2024 14:44:52 +0200
>> 
>> 
>> Eli Zaretskii <eliz <at> gnu.org> writes:
>> 
>> > Does the patch below give good results?
>> 
>> Yes, both yours and Stephen's patch fix the problem
>
> Thanks.
>
> Stephen, any argumentation for which one is better?

AFAICT both give the same results, but since yours specifically targets
the case where %z is used, which directly addresses the bug report, it
is conceptually the better fix.

Steve Berman




Reply sent to Eli Zaretskii <eliz <at> gnu.org>:
You have taken responsibility. (Wed, 10 Apr 2024 14:03:04 GMT) Full text and rfc822 format available.

Notification sent to Herman, Géza <geza.herman <at> gmail.com>:
bug acknowledged by developer. (Wed, 10 Apr 2024 14:03:04 GMT) Full text and rfc822 format available.

Message #25 received at 70322-done <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Stephen Berman <stephen.berman <at> gmx.net>
Cc: 70322-done <at> debbugs.gnu.org, geza.herman <at> gmail.com
Subject: Re: bug#70322: 30.0.50; format-seconds with %z doesn't handle zero
 input correctly
Date: Wed, 10 Apr 2024 17:01:56 +0300
> From: Stephen Berman <stephen.berman <at> gmx.net>
> Cc: Géza Herman <geza.herman <at> gmail.com>,
>   70322 <at> debbugs.gnu.org
> Date: Wed, 10 Apr 2024 15:21:59 +0200
> 
> On Wed, 10 Apr 2024 16:00:30 +0300 Eli Zaretskii <eliz <at> gnu.org> wrote:
> 
> >> From: Herman, Géza <geza.herman <at> gmail.com>
> >> Cc: Herman Géza <geza.herman <at> gmail.com>,
> >>  70322 <at> debbugs.gnu.org
> >> Date: Wed, 10 Apr 2024 14:44:52 +0200
> >> 
> >> 
> >> Eli Zaretskii <eliz <at> gnu.org> writes:
> >> 
> >> > Does the patch below give good results?
> >> 
> >> Yes, both yours and Stephen's patch fix the problem
> >
> > Thanks.
> >
> > Stephen, any argumentation for which one is better?
> 
> AFAICT both give the same results, but since yours specifically targets
> the case where %z is used, which directly addresses the bug report, it
> is conceptually the better fix.

Thanks, so I've now installed my change, and I'm closing this bug.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Thu, 09 May 2024 11:24:06 GMT) Full text and rfc822 format available.

This bug report was last modified 7 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.