unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Fwd: parse-time-string error with non ASCII timestamp
       [not found] <1175499420.269736.200740@b75g2000hsg.googlegroups.com>
@ 2007-04-17 10:10 ` Levin Du
  2007-04-17 11:20   ` Kenichi Handa
  0 siblings, 1 reply; 8+ messages in thread
From: Levin Du @ 2007-04-17 10:10 UTC (permalink / raw)
  To: emacs-devel


[-- Attachment #1.1: Type: text/plain, Size: 3240 bytes --]

Hi list,

   I'was dicovering this when inserting timestamp in org-mode.

   My timestamp includes Chinese number, when the following executes:

    (parse-time-string "<2007-04-02 一>")  ; the 12nd char is the
Chinese number.

An error will occur:

Debugger entered--Lisp error: (args-out-of-range [nil nil nil nil nil
nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
nil nil nil nil 1 nil -1 nil nil 48 48 48 48 48 48 48 48 48 48 100 nil
nil nil nil nil nil 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65
65 65 65 65 65 65 65 65 65 nil nil nil nil nil nil 97 97 97 97 97 97
97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 nil nil
nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
nil nil nil nil nil nil nil nil nil nil nil nil] 19968)
  aref([nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
nil nil nil nil nil nil nil nil nil nil nil 1 nil -1 nil nil 48
48 ...] 19968)
  parse-time-string-chars(19968)
  (setq c (parse-time-string-chars (aref string index)))
  (not (setq c (parse-time-string-chars ...)))
  (and (< index end) (not (setq c ...)))
  (while (and (< index end) (not ...)) (incf index))
  (while (< index end) (while (and ... ...) (incf index)) (setq start
index all-digits (eq c 48)) (while (and ... ...) (setq all-
digits ...)) (if (<= index end) (push ... list)))
  (let ((start nil) (end ...) (all-digits nil) (list nil) (index 0) (c
nil)) (while (< index end) (while ... ...) (setq start index all-
digits ...) (while ... ...) (if ... ...)) (nreverse list))
  parse-time-tokenize("<2007-04-02 \x4e00>")
  (let ((time ...) (temp ...)) (while temp (let ... ...)) time)
  parse-time-string("<2007-04-02 \x4e00>")
  eval((parse-time-string "<2007-04-02 \x4e00>"))
  eval-last-sexp-1(nil)
  eval-last-sexp(nil)
  call-interactively(eval-last-sexp)


This is a patch I wrote to solve this problem:
*** /home/zslevin/Cook/emacs/lisp/calendar/parse-time.el.orig
2007-04-02 10:01:27.000000000 +0800
--- /home/zslevin/Cook/emacs/lisp/calendar/parse-time.el        2007-04-02
15:35:07.000000000 +0800
***************
*** 66,72 ****
    (aref parse-time-digits char))

  (defsubst parse-time-string-chars (char)
!   (aref parse-time-syntax char))

  (put 'parse-error 'error-conditions '(parse-error error))
  (put 'parse-error 'error-message "Parsing error")
--- 66,73 ----
    (aref parse-time-digits char))

  (defsubst parse-time-string-chars (char)
!   (and (< char (length parse-time-syntax))
!        (aref parse-time-syntax char)))

  (put 'parse-error 'error-conditions '(parse-error error))
  (put 'parse-error 'error-message "Parsing error")


Hope this is useful and can be merged into emacs.

Thanks!

Levin

[-- Attachment #1.2: Type: text/html, Size: 4078 bytes --]

[-- Attachment #2: Type: text/plain, Size: 142 bytes --]

_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-devel

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Fwd: parse-time-string error with non ASCII timestamp
  2007-04-17 10:10 ` Fwd: parse-time-string error with non ASCII timestamp Levin Du
@ 2007-04-17 11:20   ` Kenichi Handa
  2007-04-17 11:33     ` Andreas Schwab
  2007-04-18  2:02     ` Richard Stallman
  0 siblings, 2 replies; 8+ messages in thread
From: Kenichi Handa @ 2007-04-17 11:20 UTC (permalink / raw)
  To: Levin Du; +Cc: emacs-devel

In article <9649271a0704170310s5c92163bv15f8d6e8eaef37db@mail.gmail.com>, "Levin Du" <zslevin@gmail.com> writes:
[...]
>    My timestamp includes Chinese number, when the following executes:

>     (parse-time-string "<2007-04-02 一>")  ; the 12nd char is the
> Chinese number.

> An error will occur:

> Debugger entered--Lisp error: (args-out-of-range [nil nil nil nil nil
> nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
[...]
> This is a patch I wrote to solve this problem:
> *** /home/zslevin/Cook/emacs/lisp/calendar/parse-time.el.orig
> 2007-04-02 10:01:27.000000000 +0800
> --- /home/zslevin/Cook/emacs/lisp/calendar/parse-time.el        2007-04-02
> 15:35:07.000000000 +0800
> ***************
> *** 66,72 ****
>     (aref parse-time-digits char))

>   (defsubst parse-time-string-chars (char)
> !   (aref parse-time-syntax char))

>   (put 'parse-error 'error-conditions '(parse-error error))
>   (put 'parse-error 'error-message "Parsing error")
> --- 66,73 ----
>     (aref parse-time-digits char))

>   (defsubst parse-time-string-chars (char)
> !   (and (< char (length parse-time-syntax))
> !        (aref parse-time-syntax char)))

It seems that this is the right fix at the moment because
parse-time.el doesn't pay attention to non-ASCII characters
at all.   In the future, we may have to improve it for
non-ASCII characters if necesary.

Shall I install that change?

---
Kenichi Handa
handa@m17n.org

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Fwd: parse-time-string error with non ASCII timestamp
  2007-04-17 11:20   ` Kenichi Handa
@ 2007-04-17 11:33     ` Andreas Schwab
  2007-04-17 11:50       ` Kenichi Handa
  2007-04-18  2:02     ` Richard Stallman
  1 sibling, 1 reply; 8+ messages in thread
From: Andreas Schwab @ 2007-04-17 11:33 UTC (permalink / raw)
  To: Kenichi Handa; +Cc: Levin Du, emacs-devel

Kenichi Handa <handa@m17n.org> writes:

> In article <9649271a0704170310s5c92163bv15f8d6e8eaef37db@mail.gmail.com>, "Levin Du" <zslevin@gmail.com> writes:
> [...]
>>    My timestamp includes Chinese number, when the following executes:
>
>>     (parse-time-string "<2007-04-02 一>")  ; the 12nd char is the
>> Chinese number.
>
>> An error will occur:
>
>> Debugger entered--Lisp error: (args-out-of-range [nil nil nil nil nil
>> nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
> [...]
>> This is a patch I wrote to solve this problem:
>> *** /home/zslevin/Cook/emacs/lisp/calendar/parse-time.el.orig
>> 2007-04-02 10:01:27.000000000 +0800
>> --- /home/zslevin/Cook/emacs/lisp/calendar/parse-time.el        2007-04-02
>> 15:35:07.000000000 +0800
>> ***************
>> *** 66,72 ****
>>     (aref parse-time-digits char))
>
>>   (defsubst parse-time-string-chars (char)
>> !   (aref parse-time-syntax char))
>
>>   (put 'parse-error 'error-conditions '(parse-error error))
>>   (put 'parse-error 'error-message "Parsing error")
>> --- 66,73 ----
>>     (aref parse-time-digits char))
>
>>   (defsubst parse-time-string-chars (char)
>> !   (and (< char (length parse-time-syntax))
>> !        (aref parse-time-syntax char)))
>
> It seems that this is the right fix at the moment because
> parse-time.el doesn't pay attention to non-ASCII characters
> at all.   In the future, we may have to improve it for
> non-ASCII characters if necesary.

I'd guess all that needs to be done is to make parse-time-digits and
parse-time-syntax char tables.

> Shall I install that change?

digit-char-p has the same problem.

Andreas.

-- 
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Fwd: parse-time-string error with non ASCII timestamp
  2007-04-17 11:33     ` Andreas Schwab
@ 2007-04-17 11:50       ` Kenichi Handa
  2007-04-17 14:32         ` Andreas Schwab
  0 siblings, 1 reply; 8+ messages in thread
From: Kenichi Handa @ 2007-04-17 11:50 UTC (permalink / raw)
  To: Andreas Schwab; +Cc: zslevin, emacs-devel

In article <jek5wbxmkc.fsf@sykes.suse.de>, Andreas Schwab <schwab@suse.de> writes:
[...]
>>> (defsubst parse-time-string-chars (char)
>>> !   (and (< char (length parse-time-syntax))
>>> !        (aref parse-time-syntax char)))
> >
> > It seems that this is the right fix at the moment because
> > parse-time.el doesn't pay attention to non-ASCII characters
> > at all.   In the future, we may have to improve it for
> > non-ASCII characters if necesary.

> I'd guess all that needs to be done is to make parse-time-digits and
> parse-time-syntax char tables.

Just making them char-tables has the same effect as above.
If we want to handle a multibyte time-string well, we must
set proper values to those char-tables which, I think, is
beyond what we should do at the moment.

> > Shall I install that change?

> digit-char-p has the same problem.

But, it seems that it is never called with a multibyte
character.

---
Kenichi Handa
handa@m17n.org

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Fwd: parse-time-string error with non ASCII timestamp
  2007-04-17 11:50       ` Kenichi Handa
@ 2007-04-17 14:32         ` Andreas Schwab
  2007-04-17 23:07           ` Kenichi Handa
  0 siblings, 1 reply; 8+ messages in thread
From: Andreas Schwab @ 2007-04-17 14:32 UTC (permalink / raw)
  To: Kenichi Handa; +Cc: zslevin, emacs-devel

Kenichi Handa <handa@m17n.org> writes:

> In article <jek5wbxmkc.fsf@sykes.suse.de>, Andreas Schwab <schwab@suse.de> writes:
> [...]
>>>> (defsubst parse-time-string-chars (char)
>>>> !   (and (< char (length parse-time-syntax))
>>>> !        (aref parse-time-syntax char)))
>> >
>> > It seems that this is the right fix at the moment because
>> > parse-time.el doesn't pay attention to non-ASCII characters
>> > at all.   In the future, we may have to improve it for
>> > non-ASCII characters if necesary.
>
>> I'd guess all that needs to be done is to make parse-time-digits and
>> parse-time-syntax char tables.
>
> Just making them char-tables has the same effect as above.

Right, but is the more clean change, IMHO.

> If we want to handle a multibyte time-string well, we must
> set proper values to those char-tables which, I think, is
> beyond what we should do at the moment.

parse-time-string only handles English dates anyway.

Andreas.

-- 
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Fwd: parse-time-string error with non ASCII timestamp
  2007-04-17 14:32         ` Andreas Schwab
@ 2007-04-17 23:07           ` Kenichi Handa
  0 siblings, 0 replies; 8+ messages in thread
From: Kenichi Handa @ 2007-04-17 23:07 UTC (permalink / raw)
  To: Andreas Schwab; +Cc: zslevin, emacs-devel

In article <jed523xe9d.fsf@sykes.suse.de>, Andreas Schwab <schwab@suse.de> writes:

> > If we want to handle a multibyte time-string well, we must
> > set proper values to those char-tables which, I think, is
> > beyond what we should do at the moment.

> parse-time-string only handles English dates anyway.

If that is the original intention of that function, that
should be mentioned in the docstring clearly.  In addition,
just a vector of 128 (instead of the current 256) should be
enough.  Using char-table here is much less efficient.

But, is it surely called with English dates only?

---
Kenichi Handa
handa@m17n.org

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Fwd: parse-time-string error with non ASCII timestamp
  2007-04-17 11:20   ` Kenichi Handa
  2007-04-17 11:33     ` Andreas Schwab
@ 2007-04-18  2:02     ` Richard Stallman
  2007-04-18  2:46       ` Kenichi Handa
  1 sibling, 1 reply; 8+ messages in thread
From: Richard Stallman @ 2007-04-18  2:02 UTC (permalink / raw)
  To: Kenichi Handa; +Cc: zslevin, emacs-devel

    It seems that this is the right fix at the moment because
    parse-time.el doesn't pay attention to non-ASCII characters
    at all.   In the future, we may have to improve it for
    non-ASCII characters if necesary.

    Shall I install that change?

Please do!

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Fwd: parse-time-string error with non ASCII timestamp
  2007-04-18  2:02     ` Richard Stallman
@ 2007-04-18  2:46       ` Kenichi Handa
  0 siblings, 0 replies; 8+ messages in thread
From: Kenichi Handa @ 2007-04-18  2:46 UTC (permalink / raw)
  To: rms; +Cc: zslevin, emacs-devel

In article <E1HdzVZ-0005zr-2X@fencepost.gnu.org>, Richard Stallman <rms@gnu.org> writes:

>     It seems that this is the right fix at the moment because
>     parse-time.el doesn't pay attention to non-ASCII characters
>     at all.   In the future, we may have to improve it for
>     non-ASCII characters if necesary.

>     Shall I install that change?

> Please do!

Done.

---
Kenichi Handa
handa@m17n.org

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2007-04-18  2:46 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <1175499420.269736.200740@b75g2000hsg.googlegroups.com>
2007-04-17 10:10 ` Fwd: parse-time-string error with non ASCII timestamp Levin Du
2007-04-17 11:20   ` Kenichi Handa
2007-04-17 11:33     ` Andreas Schwab
2007-04-17 11:50       ` Kenichi Handa
2007-04-17 14:32         ` Andreas Schwab
2007-04-17 23:07           ` Kenichi Handa
2007-04-18  2:02     ` Richard Stallman
2007-04-18  2:46       ` Kenichi Handa

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.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).