unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#25735: 26.0.50; url-retrieve errors are peculiar
@ 2017-02-14 21:21 Richard Copley
  2019-05-15  6:04 ` Lars Ingebrigtsen
  0 siblings, 1 reply; 10+ messages in thread
From: Richard Copley @ 2017-02-14 21:21 UTC (permalink / raw)
  To: 25735

Within the docstring for url-retrieve, it says: "[...] The
error can be signaled with (signal ERROR-SYMBOL DATA) [...]",
but in current master (grep for ":error" in "lisp/url/*.el") the actual
usage is that ERROR-SYMBOL is `error' and DATA is a list that starts
with a symbol, for example (connection-failed "failed with code 10061"
:host "localhost" :service 80). The docstring hints at something
like this:

  (url-retrieve (format "http://localhost/non-existent-resource")
                (lambda (status &rest args)
                  (let ((error-info (plist-get status :error)))
                    (when error-info
                      (signal (car error-info) (cdr error-info))))
                  ;;...
                  ))

which ends up calling this:

  (signal 'error
          '(connection-failed "failed with code 10061"
            :host "localhost"
            :service 80))

which ends up printing these two lines (including the newline
embedded in a string) to the echo area:

error in process sentinel: peculiar error: "failed with code 10061
", :host, "localhost", :service, 80

Unfortunately the error code itself, `connection-failed', is dropped.
(See print_error_message in "print.c"; if ERROR-SYMBOL is `error' then
the car of DATA, say ERRMSG, is printed if it is a string; if ERRMSG
is not a string then "peculiar error" is printed instead of ERRMSG.)

Please also consider augmenting the docstring with an example of using
the error data. It's a drag for the user to have to work that out
before they are in a position to call url-retrieve!

(There's a tiny example above, but of course it assumes
that DATA has been changed to conform to the docstring.)





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

* bug#25735: 26.0.50; url-retrieve errors are peculiar
  2017-02-14 21:21 bug#25735: 26.0.50; url-retrieve errors are peculiar Richard Copley
@ 2019-05-15  6:04 ` Lars Ingebrigtsen
  2019-05-15  7:01   ` Richard Copley
  0 siblings, 1 reply; 10+ messages in thread
From: Lars Ingebrigtsen @ 2019-05-15  6:04 UTC (permalink / raw)
  To: Richard Copley; +Cc: 25735

Richard Copley <rcopley@gmail.com> writes:

> Within the docstring for url-retrieve, it says: "[...] The
> error can be signaled with (signal ERROR-SYMBOL DATA) [...]",
> but in current master (grep for ":error" in "lisp/url/*.el") the actual
> usage is that ERROR-SYMBOL is `error' and DATA is a list that starts
> with a symbol, for example (connection-failed "failed with code 10061"
> :host "localhost" :service 80). The docstring hints at something
> like this:
>
>   (url-retrieve (format "http://localhost/non-existent-resource")
>                 (lambda (status &rest args)
>                   (let ((error-info (plist-get status :error)))
>                     (when error-info
>                       (signal (car error-info) (cdr error-info))))
>                   ;;...
>                   ))

I tried finding that doc string, but it doesn't seem to exist any more?
Was that in the `url-retrieve' doc string?

---
grep --color -nH --null -e "car error-info" `find . -type f`

Grep finished with no matches found at Wed May 15 08:01:26
---


> which ends up calling this:
>
>   (signal 'error
>           '(connection-failed "failed with code 10061"
>             :host "localhost"
>             :service 80))
>
> which ends up printing these two lines (including the newline
> embedded in a string) to the echo area:
>
> error in process sentinel: peculiar error: "failed with code 10061
> ", :host, "localhost", :service, 80

Yeah, that's not the right way to call `error'...

> Unfortunately the error code itself, `connection-failed', is dropped.
> (See print_error_message in "print.c"; if ERROR-SYMBOL is `error' then
> the car of DATA, say ERRMSG, is printed if it is a string; if ERRMSG
> is not a string then "peculiar error" is printed instead of ERRMSG.)
>
> Please also consider augmenting the docstring with an example of using
> the error data. It's a drag for the user to have to work that out
> before they are in a position to call url-retrieve!

Yup.  But I don't know why that example is gone -- perhaps somebody else
remembers?

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





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

* bug#25735: 26.0.50; url-retrieve errors are peculiar
  2019-05-15  6:04 ` Lars Ingebrigtsen
@ 2019-05-15  7:01   ` Richard Copley
  2019-05-15  7:16     ` Lars Ingebrigtsen
                       ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Richard Copley @ 2019-05-15  7:01 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 25735

[-- Attachment #1: Type: text/plain, Size: 2506 bytes --]

On Wed, 15 May 2019 at 07:04, Lars Ingebrigtsen <larsi@gnus.org> wrote:

> Richard Copley <rcopley@gmail.com> writes:
>
> > Within the docstring for url-retrieve, it says: "[...] The
> > error can be signaled with (signal ERROR-SYMBOL DATA) [...]",
> > but in current master (grep for ":error" in "lisp/url/*.el") the actual
> > usage is that ERROR-SYMBOL is `error' and DATA is a list that starts
> > with a symbol, for example (connection-failed "failed with code 10061"
> > :host "localhost" :service 80). The docstring hints at something
> > like this:
> >
> >   (url-retrieve (format "http://localhost/non-existent-resource")
> >                 (lambda (status &rest args)
> >                   (let ((error-info (plist-get status :error)))
> >                     (when error-info
> >                       (signal (car error-info) (cdr error-info))))
> >                   ;;...
> >                   ))
>
> I tried finding that doc string, but it doesn't seem to exist any more?
> Was that in the `url-retrieve' doc string?
>

No, it's the best I could come up with given the "hint":
  "The error can be signaled with (signal ERROR-SYMBOL DATA)"
in the url-retrieve docstring.


> ---
> grep --color -nH --null -e "car error-info" `find . -type f`
>
> Grep finished with no matches found at Wed May 15 08:01:26
> ---
>
>
> > which ends up calling this:
> >
> >   (signal 'error
> >           '(connection-failed "failed with code 10061"
> >             :host "localhost"
> >             :service 80))
> >
> > which ends up printing these two lines (including the newline
> > embedded in a string) to the echo area:
> >
> > error in process sentinel: peculiar error: "failed with code 10061
> > ", :host, "localhost", :service, 80
>
> Yeah, that's not the right way to call `error'...
>

Yeah.


> > Unfortunately the error code itself, `connection-failed', is dropped.
> > (See print_error_message in "print.c"; if ERROR-SYMBOL is `error' then
> > the car of DATA, say ERRMSG, is printed if it is a string; if ERRMSG
> > is not a string then "peculiar error" is printed instead of ERRMSG.)
> >
> > Please also consider augmenting the docstring with an example of using
> > the error data. It's a drag for the user to have to work that out
> > before they are in a position to call url-retrieve!
>
> Yup.  But I don't know why that example is gone -- perhaps somebody else
> remembers?
>
> --
> (domestic pets only, the antidote for overdose, milk.)
>    bloggy blog: http://lars.ingebrigtsen.no
>

[-- Attachment #2: Type: text/html, Size: 4027 bytes --]

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

* bug#25735: 26.0.50; url-retrieve errors are peculiar
  2019-05-15  7:01   ` Richard Copley
@ 2019-05-15  7:16     ` Lars Ingebrigtsen
  2019-05-15  7:46       ` Lars Ingebrigtsen
  2019-05-15  7:17     ` Lars Ingebrigtsen
  2019-05-15  7:19     ` Lars Ingebrigtsen
  2 siblings, 1 reply; 10+ messages in thread
From: Lars Ingebrigtsen @ 2019-05-15  7:16 UTC (permalink / raw)
  To: Richard Copley; +Cc: 25735

Richard Copley <rcopley@gmail.com> writes:

> No, it's the best I could come up with given the "hint":
>   "The error can be signaled with (signal ERROR-SYMBOL DATA)"
> in the url-retrieve docstring.

Oh, I misread what you wrote.

----
(:redirect REDIRECTED-TO) - the request was redirected to this URL
(:error (ERROR-SYMBOL . DATA)) - an error occurred.  The error can be
signaled with (signal ERROR-SYMBOL DATA).
----

So, yeah, that's wrong.  It should be more like

(signal ERROR-SYMBOL (format "%S" data))

I guess?  But, as you say, that's not very useful, either.  Describing
DATA would be nicer.

Here's the actual uses in url.el:

url-http.el734:		     (nconc (list :error (list 'error 'http-redirect-limit
url-http.el865:	       (nconc (list :error (list 'error 'http url-http-response-status))
url-http.el920:	       (nconc (list :error (list 'error 'http url-http-response-status))
url-http.el1446:	      (nconc (list :error (list 'error 'connection-failed why
url-queue.el127:  (when (and (eq (car status) :error)
url-queue.el190:	   (cons (list :error (list 'error 'url-queue-timeout

As we can see, the only ERROR-SYMBOL in use is `error', which makes this
even less useful, and the DATA depends on what the real error type is...

I guess we could just describe these in the doc string instead stop
talking about `signal'?

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





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

* bug#25735: 26.0.50; url-retrieve errors are peculiar
  2019-05-15  7:01   ` Richard Copley
  2019-05-15  7:16     ` Lars Ingebrigtsen
@ 2019-05-15  7:17     ` Lars Ingebrigtsen
  2019-05-15  7:19     ` Lars Ingebrigtsen
  2 siblings, 0 replies; 10+ messages in thread
From: Lars Ingebrigtsen @ 2019-05-15  7:17 UTC (permalink / raw)
  To: Richard Copley; +Cc: 25735

Richard Copley <rcopley@gmail.com> writes:

> No, it's the best I could come up with given the "hint":
>   "The error can be signaled with (signal ERROR-SYMBOL DATA)"
> in the url-retrieve docstring.

Oh, I misread what you wrote.

----
(:redirect REDIRECTED-TO) - the request was redirected to this URL
(:error (ERROR-SYMBOL . DATA)) - an error occurred.  The error can be
signaled with (signal ERROR-SYMBOL DATA).
----

So, yeah, that's wrong.  It should be more like

(signal ERROR-SYMBOL (format "%S" data))

I guess?  But, as you say, that's not very useful, either.  Describing
DATA would be nicer.

Here's the actual uses in url.el:

url-http.el 734:		     (nconc (list :error (list 'error 'http-redirect-limit
url-http.el 865:	       (nconc (list :error (list 'error 'http url-http-response-status))
url-http.el 920:	       (nconc (list :error (list 'error 'http url-http-response-status))
url-http.el 1446:	      (nconc (list :error (list 'error 'connection-failed why
url-queue.el 127:  (when (and (eq (car status) :error)
url-queue.el 190:	   (cons (list :error (list 'error 'url-queue-timeout

As we can see, the only ERROR-SYMBOL in use is `error', which makes this
even less useful, and the DATA depends on what the real error type is...

I guess we could just describe these in the doc string instead stop
talking about `signal'?

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





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

* bug#25735: 26.0.50; url-retrieve errors are peculiar
  2019-05-15  7:01   ` Richard Copley
  2019-05-15  7:16     ` Lars Ingebrigtsen
  2019-05-15  7:17     ` Lars Ingebrigtsen
@ 2019-05-15  7:19     ` Lars Ingebrigtsen
  2 siblings, 0 replies; 10+ messages in thread
From: Lars Ingebrigtsen @ 2019-05-15  7:19 UTC (permalink / raw)
  To: Richard Copley; +Cc: 25735

Richard Copley <rcopley@gmail.com> writes:

> No, it's the best I could come up with given the "hint":
>   "The error can be signaled with (signal ERROR-SYMBOL DATA)"
> in the url-retrieve docstring.

Oh, I misread what you wrote.

----
(:redirect REDIRECTED-TO) - the request was redirected to this URL
(:error (ERROR-SYMBOL . DATA)) - an error occurred.  The error can be
signaled with (signal ERROR-SYMBOL DATA).
----

So, yeah, that's wrong.  It should be more like

(signal ERROR-SYMBOL (format "%S" data))

I guess?  But, as you say, that's not very useful, either.  Describing
DATA would be nicer.

Here's the actual uses in url.el:

url-http.el 734:		     (nconc (list :error (list 'error 'http-redirect-limit
url-http.el 865:	       (nconc (list :error (list 'error 'http url-http-response-status))
url-http.el 920:	       (nconc (list :error (list 'error 'http url-http-response-status))
url-http.el 1446:	      (nconc (list :error (list 'error 'connection-failed why
url-queue.el 127:  (when (and (eq (car status) :error)
url-queue.el 190:	   (cons (list :error (list 'error 'url-queue-timeout

As we can see, the only ERROR-SYMBOL in use is `error', which makes this
even less useful, and the DATA depends on what the real error type is...

I guess we could just describe these in the doc string instead stop
talking about `signal'?

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





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

* bug#25735: 26.0.50; url-retrieve errors are peculiar
  2019-05-15  7:16     ` Lars Ingebrigtsen
@ 2019-05-15  7:46       ` Lars Ingebrigtsen
  2019-05-15 20:59         ` Richard Copley
  0 siblings, 1 reply; 10+ messages in thread
From: Lars Ingebrigtsen @ 2019-05-15  7:46 UTC (permalink / raw)
  To: Richard Copley; +Cc: 25735

(Sorry for sending the previous email several times; I had some problems
with the MTA...)

I've now changed the doc string to

---

\(:redirect REDIRECTED-TO) - the request was redirected to this URL.

\(:error (error type . DATA)) - an error occurred.  TYPE is a
symbol that says something about where the error occurred, and
DATA is a list (possibly nil) that describes the error further.


-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no






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

* bug#25735: 26.0.50; url-retrieve errors are peculiar
  2019-05-15  7:46       ` Lars Ingebrigtsen
@ 2019-05-15 20:59         ` Richard Copley
  2019-05-16  3:59           ` Lars Ingebrigtsen
  0 siblings, 1 reply; 10+ messages in thread
From: Richard Copley @ 2019-05-15 20:59 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 25735

[-- Attachment #1: Type: text/plain, Size: 1191 bytes --]

On Wed, 15 May 2019 at 08:46, Lars Ingebrigtsen <larsi@gnus.org> wrote:

> (Sorry for sending the previous email several times; I had some problems
> with the MTA...)
>
> I've now changed the doc string to
>
> ---
>
> \(:redirect REDIRECTED-TO) - the request was redirected to this URL.
>
> \(:error (error type . DATA)) - an error occurred.  TYPE is a
> symbol that says something about where the error occurred, and
> DATA is a list (possibly nil) that describes the error further.


If there's a way to use that data to format an error message,
it would be good to provide an example, or a "see info node X",
if it's a common idiom.

I think usually if you're looking at a docstring it's because you
want to know how to use the function (as well as what it is for
and what exactly it does, which I think are covered in this case).

This is what I ended up with, after I reported the bug.
Sadly I didn't make a note of where if anywhere I cribbed it from.

(url-retrieve URL
              (lambda (status cbargs)
                (cl-loop for (key value) on status by 'cddr
                         do (when (eq key :error) (error "%s: %s" (car
value) (cdr value))))
                BODY))

[-- Attachment #2: Type: text/html, Size: 2057 bytes --]

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

* bug#25735: 26.0.50; url-retrieve errors are peculiar
  2019-05-15 20:59         ` Richard Copley
@ 2019-05-16  3:59           ` Lars Ingebrigtsen
  2019-05-16  8:11             ` Richard Copley
  0 siblings, 1 reply; 10+ messages in thread
From: Lars Ingebrigtsen @ 2019-05-16  3:59 UTC (permalink / raw)
  To: Richard Copley; +Cc: 25735

Richard Copley <rcopley@gmail.com> writes:

> If there's a way to use that data to format an error message,
> it would be good to provide an example, or a "see info node X",
> if it's a common idiom.
>
> I think usually if you're looking at a docstring it's because you
> want to know how to use the function (as well as what it is for
> and what exactly it does, which I think are covered in this case).

Well, I think we should assume that people know what arguments `error'
takes, and the structure of the error data is now documented correctly.
So I think that should be sufficient.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





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

* bug#25735: 26.0.50; url-retrieve errors are peculiar
  2019-05-16  3:59           ` Lars Ingebrigtsen
@ 2019-05-16  8:11             ` Richard Copley
  0 siblings, 0 replies; 10+ messages in thread
From: Richard Copley @ 2019-05-16  8:11 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 25735

[-- Attachment #1: Type: text/plain, Size: 735 bytes --]

On Thu, 16 May 2019 at 04:59, Lars Ingebrigtsen <larsi@gnus.org> wrote:

> Richard Copley <rcopley@gmail.com> writes:
>
> > If there's a way to use that data to format an error message,
> > it would be good to provide an example, or a "see info node X",
> > if it's a common idiom.
> >
> > I think usually if you're looking at a docstring it's because you
> > want to know how to use the function (as well as what it is for
> > and what exactly it does, which I think are covered in this case).
>
> Well, I think we should assume that people know what arguments `error'
> takes, and the structure of the error data is now documented correctly.
> So I think that should be sufficient.
>

OK. It's (error STRING &rest ARGS), by the way.

[-- Attachment #2: Type: text/html, Size: 1309 bytes --]

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

end of thread, other threads:[~2019-05-16  8:11 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-02-14 21:21 bug#25735: 26.0.50; url-retrieve errors are peculiar Richard Copley
2019-05-15  6:04 ` Lars Ingebrigtsen
2019-05-15  7:01   ` Richard Copley
2019-05-15  7:16     ` Lars Ingebrigtsen
2019-05-15  7:46       ` Lars Ingebrigtsen
2019-05-15 20:59         ` Richard Copley
2019-05-16  3:59           ` Lars Ingebrigtsen
2019-05-16  8:11             ` Richard Copley
2019-05-15  7:17     ` Lars Ingebrigtsen
2019-05-15  7:19     ` Lars Ingebrigtsen

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).