Gnus development mailing list
 help / color / mirror / Atom feed
* mailcap-viewer-lessp is just plain wrong
@ 1999-11-01 19:42 Mark Buda
  1999-11-01 21:24 ` Shenghuo ZHU
  0 siblings, 1 reply; 6+ messages in thread
From: Mark Buda @ 1999-11-01 19:42 UTC (permalink / raw)


In pgnus-0.97/lisp/mailcap.el, this seems to be just wrong:

(defun mailcap-viewer-lessp (x y)
  ;; Return t iff viewer X is more desirable than viewer Y
  (let ((x-wild (string-match "[*?]" (or (cdr-safe (assq 'type x)) "")))
	(y-wild (string-match "[*?]" (or (cdr-safe (assq 'type y)) "")))
	(x-lisp (not (stringp (or (cdr-safe (assq 'viewer x)) ""))))
	(y-lisp (not (stringp (or (cdr-safe (assq 'viewer y)) "")))))
    (cond
     ((and x-lisp (not y-lisp))
      t)
     ((and (not y-lisp) x-wild (not y-wild))
      t)
     ((and (not x-wild) y-wild)
      t)
     (t nil))))

Shouldn't it be more like:

; blah blah blah
    (cond
     ((and x-lisp (not y-wild))
      t)
     ((and y-wild (not x-wild))
      t)
     ((and y-wild (not y-lisp))
      t)
     (t nil))))
?

Even if mine isn't right, the existing function is just wrong. How can
X be better if only one is wild, regardless of which one is wild?
-- 
I get my monkeys for nothing and my chimps for free.
http://www.clark.net/pub/hermit/


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

* Re: mailcap-viewer-lessp is just plain wrong
  1999-11-01 19:42 mailcap-viewer-lessp is just plain wrong Mark Buda
@ 1999-11-01 21:24 ` Shenghuo ZHU
  1999-11-02 13:55   ` Mark Buda
  0 siblings, 1 reply; 6+ messages in thread
From: Shenghuo ZHU @ 1999-11-01 21:24 UTC (permalink / raw)


>>>>> "Mark" == Mark Buda <hermit@clark.net> writes:

Mark> In pgnus-0.97/lisp/mailcap.el, this seems to be just wrong:
Mark> (defun mailcap-viewer-lessp (x y)
Mark>   ;; Return t iff viewer X is more desirable than viewer Y
Mark>   (let ((x-wild (string-match "[*?]" (or (cdr-safe (assq 'type x)) "")))
Mark> 	(y-wild (string-match "[*?]" (or (cdr-safe (assq 'type y)) "")))
Mark> 	(x-lisp (not (stringp (or (cdr-safe (assq 'viewer x)) ""))))
Mark> 	(y-lisp (not (stringp (or (cdr-safe (assq 'viewer y)) "")))))
Mark>     (cond
Mark>      ((and x-lisp (not y-lisp))
Mark>       t)
Mark>      ((and (not y-lisp) x-wild (not y-wild))
Mark>       t)
Mark>      ((and (not x-wild) y-wild)
Mark>       t)
Mark>      (t nil))))

Mark> Shouldn't it be more like:

Mark> ; blah blah blah
Mark>     (cond
Mark>      ((and x-lisp (not y-wild))
Mark>       t)
Mark>      ((and y-wild (not x-wild))
Mark>       t)
Mark>      ((and y-wild (not y-lisp))
Mark>       t)
Mark>      (t nil))))
Mark> ?

Mark> Even if mine isn't right, the existing function is just wrong. How can
Mark> X be better if only one is wild, regardless of which one is wild?

Your argument is right, but I don't think yours function is right. In
the case that both X and Y are lisp, X is wild, while Y is not wild,
your function returns 't. How can X be better than Y?

Another problem is, in the case that X is wild and list, Y is neither
wild nor list, both evaluations of (mailcap-viewer-lessp x y) and
(mailcap-viewer-lessp y x) return 't for both the functions.

-- 
Shenghuo ZHU


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

* Re: mailcap-viewer-lessp is just plain wrong
  1999-11-01 21:24 ` Shenghuo ZHU
@ 1999-11-02 13:55   ` Mark Buda
  1999-11-03 20:33     ` Shenghuo ZHU
  0 siblings, 1 reply; 6+ messages in thread
From: Mark Buda @ 1999-11-02 13:55 UTC (permalink / raw)
  Cc: ding

>>>>> "ZSH" == Shenghuo ZHU <zsh@cs.rochester.edu> writes:

    Mark> Even if mine isn't right, the existing function is just
    Mark> wrong. How can X be better if only one is wild, regardless
    Mark> of which one is wild?

    ZSH> Your argument is right, but I don't think yours function is right. In
    ZSH> the case that both X and Y are lisp, X is wild, while Y is not wild,
    ZSH> your function returns 't. How can X be better than Y?

    ZSH> Another problem is, in the case that X is wild and list, Y is neither
    ZSH> wild nor list, both evaluations of (mailcap-viewer-lessp x y) and
    ZSH> (mailcap-viewer-lessp y x) return 't for both the functions.

Well, by better I meant that mine produced the correct value in the
case I was concerned about :-) Perhaps I miscopied something from my
sheet of paper (which I threw out, so I'll never know). This should be
right, though. Better, anyway.

(cond
 ; if only one is wild, the other one is better
 ((and x-wild (not y-wild))
  nil)
 ((and (not x-wild) y-wild)
  t)
 ; otherwise, if only one is lisp, it is better
 ((and x-lisp (not y-lisp))
  t)
 ((and (not x-lisp) y-lisp)
  nil)
 ; otherwise, compare them some other arbitrary way
 (t
  (blah blah blah)))
-- 
I get my monkeys for nothing and my chimps for free.
http://www.clark.net/pub/hermit/


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

* Re: mailcap-viewer-lessp is just plain wrong
  1999-11-02 13:55   ` Mark Buda
@ 1999-11-03 20:33     ` Shenghuo ZHU
  1999-11-04 11:17       ` Toby Speight
  0 siblings, 1 reply; 6+ messages in thread
From: Shenghuo ZHU @ 1999-11-03 20:33 UTC (permalink / raw)


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

>>>>> "Mark" == Mark Buda <hermit@clark.net> writes:

[...]


Mark> (cond
Mark>  ; if only one is wild, the other one is better
Mark>  ((and x-wild (not y-wild))
Mark>   nil)
Mark>  ((and (not x-wild) y-wild)
Mark>   t)
Mark>  ; otherwise, if only one is lisp, it is better
Mark>  ((and x-lisp (not y-lisp))
Mark>   t)
Mark>  ((and (not x-lisp) y-lisp)
Mark>   nil)

This condition is not necessary.

Mark>  ; otherwise, compare them some other arbitrary way
Mark>  (t
Mark>   (blah blah blah)))

Done. Committed to CVS.

-- 
Shenghuo ZHU

1999-11-03 15:27:38  Shenghuo ZHU  <zsh@cs.rochester.edu>

	* mailcap.el (mailcap-viewer-lessp): Fix bug.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 97-121.diff --]
[-- Type: text/x-patch, Size: 673 bytes --]

Index: mailcap.el
===================================================================
RCS file: /usr/local/cvsroot/gnus/lisp/mailcap.el,v
retrieving revision 5.23
diff -u -r5.23 mailcap.el
--- mailcap.el	1999/07/09 19:28:56	5.23
+++ mailcap.el	1999/11/03 20:29:40
@@ -623,11 +623,11 @@
 	(x-lisp (not (stringp (or (cdr-safe (assq 'viewer x)) ""))))
 	(y-lisp (not (stringp (or (cdr-safe (assq 'viewer y)) "")))))
     (cond
-     ((and x-lisp (not y-lisp))
-      t)
-     ((and (not y-lisp) x-wild (not y-wild))
-      t)
+     ((and x-wild (not y-wild))
+      nil)
      ((and (not x-wild) y-wild)
+      t)
+     ((and (not y-lisp) x-lisp)
       t)
      (t nil))))
 

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

* Re: mailcap-viewer-lessp is just plain wrong
  1999-11-03 20:33     ` Shenghuo ZHU
@ 1999-11-04 11:17       ` Toby Speight
  1999-11-04 15:49         ` Shenghuo ZHU
  0 siblings, 1 reply; 6+ messages in thread
From: Toby Speight @ 1999-11-04 11:17 UTC (permalink / raw)


Mark> Mark Buda <URL:mailto:hermit@clark.net>
ZSH> Shenghuo ZHU <URL:mailto:zsh@cs.rochester.edu>


0> In article <871za9ov5p.fsf@pazuzu.eudaemonia.org>, Mark wrote:

Mark> (cond
Mark>   ; if only one is wild, the other one is better
Mark>   ((and x-wild (not y-wild))
Mark>    nil)
Mark>   ((and (not x-wild) y-wild)
Mark>    t)
Mark>   ; otherwise, if only one is lisp, it is better
Mark>   ((and x-lisp (not y-lisp))
Mark>    t)
Mark>
Mark>   ((and (not x-lisp) y-lisp)
Mark>    nil)



0> In article <5bbt9bfh7k.fsf@brain.cs.rochester.edu>, ZSH wrote:

ZSH> This condition is not necessary.


I think it is useful if we finish the final test (i.e. the "(blah blah
blah)" below - perhaps using Q values, as in HTTP), because without it
we can fall through and choose X instead of Y even if Y is lisp and X
is external.


Mark>   ; otherwise, compare them some other arbitrary way
Mark>   (t
Mark>    (blah blah blah)))



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

* Re: mailcap-viewer-lessp is just plain wrong
  1999-11-04 11:17       ` Toby Speight
@ 1999-11-04 15:49         ` Shenghuo ZHU
  0 siblings, 0 replies; 6+ messages in thread
From: Shenghuo ZHU @ 1999-11-04 15:49 UTC (permalink / raw)


>>>>> "Toby" == Toby Speight <Toby.Speight@streapadair.freeserve.co.uk> writes:

[...]

Toby> I think it is useful if we finish the final test (i.e. the "(blah blah
Toby> blah)" below - perhaps using Q values, as in HTTP), because without it
Toby> we can fall through and choose X instead of Y even if Y is lisp and X
Toby> is external.

[...]

The final test is (t nil). 

What I did is building those tests according to a Venn diagram.

-- 
Shenghuo ZHU


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

end of thread, other threads:[~1999-11-04 15:49 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1999-11-01 19:42 mailcap-viewer-lessp is just plain wrong Mark Buda
1999-11-01 21:24 ` Shenghuo ZHU
1999-11-02 13:55   ` Mark Buda
1999-11-03 20:33     ` Shenghuo ZHU
1999-11-04 11:17       ` Toby Speight
1999-11-04 15:49         ` Shenghuo ZHU

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 NNTP newsgroup(s).