all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* bug#11580: 23.3; EUDC can't handle empty last names in BBDB
@ 2012-05-29  5:14         ` Sergio Durigan Junior
       [not found]           ` <handler.11580.B.133834110724596.ack@debbugs.gnu.org>
  2012-10-02  1:46           ` bug#11580: [PATCH] Fix bug #11580 Sergio Durigan Junior
  0 siblings, 2 replies; 23+ messages in thread
From: Sergio Durigan Junior @ 2012-05-29  5:14 UTC (permalink / raw)
  To: 11580

I use EUDC to integrate my local BBDB records with my company's LDAP.
Unfortunately, I am having an annoying problem when I try to complete
the name of local BBDB records which don't have their last names (i.e.,
empty strings as last names).  EUDC is giving me the following error
message:

    Debugger entered--Lisp error: (error "Unexpected attribute value")
      signal(error ("Unexpected attribute value"))
      byte-code("\b	\232\203\f.\n\v\232\204.\305	\v\306#\210\304\f@\fA\"\207" [eudc-server eudc-former-server eudc-protocol eudc-former-protocol signal eudc-set-server t] 4)
      eudc-expand-inline()
      message-expand-name()
      message-tab()
      call-interactively(message-tab nil nil)


This is what I have in my .gnus file:

    (require 'eudc)

    (setq eudc-default-return-attributes nil
          eudc-strict-return-matches nil)

    (setq ldap-ldapsearch-args (quote ("-tt" "-LLL" "-x")))

    (eudc-protocol-set 'eudc-inline-expansion-format '("%s <%s>" CommonName mail)
                       'ldap)
    (eudc-protocol-set 'eudc-inline-query-format '((cn) (cn cn) (cn cn cn)) 'ldap)

    (eudc-protocol-set 'eudc-inline-expansion-format '("%s %s <%s>" firstname name net)
                       'bbdb)
    (eudc-protocol-set 'eudc-inline-query-format '((firstname)
                                                   (lastname)
                                                   (firstname lastname)
                                                   (net))
                       'bbdb)

    (eudc-set-server "localhost" 'bbdb t)
    (setq eudc-server-hotlist '(("localhost" . bbdb)
                                ("ldap.myserver.com" . ldap)))
    (setq eudc-inline-expansion-servers 'hotlist)

    (defun enz-eudc-expand-inline()
      (interactive)
      (if (eq eudc-protocol 'ldap)
          (progn (move-end-of-line 1)
                 (insert "*")
                 (unless (condition-case nil
                             (eudc-expand-inline)
                           (error nil))
                   (backward-delete-char-untabify 1)))
        (eudc-expand-inline)))

    ;; Adds some hooks

    (eval-after-load "message"
      '(define-key message-mode-map (kbd "C-L") 'enz-eudc-expand-inline))


As far as I have tested, the error above happens only when I try to
query BBDB for entries that don't have a last name; whenever I try to
complete a full entry (i.e., one with name + last name), the error does
not manifest.


In GNU Emacs 23.3.1 (x86_64-redhat-linux-gnu, GTK+ Version 2.24.8)
 of 2012-01-13 on x86-04.phx2.fedoraproject.org
configured using `configure  '--build=x86_64-redhat-linux-gnu' '--host=x86_64-redhat-linux-gnu' '--program-prefix=' '--disable-dependency-tracking' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib64' '--libexecdir=/usr/libexec' '--localstatedir=/var' '--sharedstatedir=/var/lib' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--with-dbus' '--with-gif' '--with-jpeg' '--with-png' '--with-rsvg' '--with-tiff' '--with-xft' '--with-xpm' '--with-x-toolkit=gtk' 'build_alias=x86_64-redhat-linux-gnu' 'host_alias=x86_64-redhat-linux-gnu' 'CFLAGS=-DMAIL_USE_LOCKF -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4  -m64 -mtune=gen
 eric' 'LDFLAGS=-Wl,-z,relro ''

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=none
  locale-coding-system: utf-8-unix
  default enable-multibyte-characters: t

Major mode: Emacs-Lisp

Minor modes in effect:
  shell-dirtrack-mode: t
  show-paren-mode: t
  ido-everywhere: t
  tooltip-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent input:
C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p 
C-n C-n C-n C-n C-n C-n C-p C-p C-p C-n C-n C-n C-p 
C-p C-n C-n C-p C-p C-n C-n C-p C-p C-p C-p C-p C-p 
C-n C-n C-n C-p C-p C-p C-x k RET y e s RET C-n C-p 
C-x o q C-x k RET y e s RET ESC x s e i DEL DEL s e 
DEL DEL e r g i o - w i DEL DEL s e DEL w ESC p ESC 
p ESC p ESC p ESC p ESC n RET r i s e u p t RET S A 
r i s e u p RET C-x o C-n C-n C-n C-n C-n C-n C-n C-n 
C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-p C-p 
C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p 
C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p 
C-p C-p C-n C-p C-p C-p C-p C-p C-n C-n C-n C-n C-n 
C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n 
C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n 
C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n 
C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p 
C-p C-p C-p C-n C-n C-p C-p C-p C-p C-p C-p C-p C-p 
C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-n 
C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n 
C-n C-n C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p 
C-p C-p C-p ESC x r e p o r ESC p ESC p RET

Recent messages:
Checking 12 files in /usr/share/emacs/23.3/lisp/cedet...
Checking 30 files in /usr/share/emacs/23.3/lisp/calendar...
Checking 44 files in /usr/share/emacs/23.3/lisp/calc...
Checking 22 files in /usr/share/emacs/23.3/lisp/obsolete...
Checking 1 files in /usr/share/emacs/23.3/leim...
Checking for load-path shadows...done
Auto-saving...done
call-interactively: End of buffer
Mark set
selected Riseup.net IMAP account [2 times]

Load-path shadows:
/home/sergio/emacs-lisp/xcscope hides /usr/share/emacs/site-lisp/xcscope
/usr/share/emacs/site-lisp/goodies/emacs-goodies-loaddefs hides /usr/share/emacs/site-lisp/site-start.d/emacs-goodies-loaddefs
/usr/share/emacs/site-lisp/flim/hex-util hides /usr/share/emacs/23.3/lisp/hex-util
/usr/share/emacs/site-lisp/flim/md4 hides /usr/share/emacs/23.3/lisp/md4
/usr/share/emacs/site-lisp/flim/sha1 hides /usr/share/emacs/23.3/lisp/sha1
/usr/share/emacs/site-lisp/flim/sasl-digest hides /usr/share/emacs/23.3/lisp/net/sasl-digest
/usr/share/emacs/site-lisp/flim/ntlm hides /usr/share/emacs/23.3/lisp/net/ntlm
/usr/share/emacs/site-lisp/flim/sasl-ntlm hides /usr/share/emacs/23.3/lisp/net/sasl-ntlm
/usr/share/emacs/site-lisp/flim/hmac-def hides /usr/share/emacs/23.3/lisp/net/hmac-def
/usr/share/emacs/site-lisp/flim/hmac-md5 hides /usr/share/emacs/23.3/lisp/net/hmac-md5
/usr/share/emacs/site-lisp/flim/sasl hides /usr/share/emacs/23.3/lisp/net/sasl
/usr/share/emacs/site-lisp/flim/sasl-cram hides /usr/share/emacs/23.3/lisp/net/sasl-cram
/usr/share/emacs/site-lisp/gnus-bonus/nnnil hides /usr/share/emacs/23.3/lisp/gnus/nnnil
/usr/share/emacs/site-lisp/gnus-bonus/spam-stat hides /usr/share/emacs/23.3/lisp/gnus/spam-stat
/usr/share/emacs/site-lisp/gnus-bonus/nnir hides /usr/share/emacs/23.3/lisp/gnus/nnir

Features:
(shadow emacsbug newcomment ansi-color gnus-async gnus-bcklg gnus-dup
sort byte-opt bytecomp byte-compile parse-time gnus-ml disp-table
dabbrev eudcb-ldap bbdb-gui pp find-func multi-isearch tramp-imap assoc
tramp-gw tramp-fish tramp-smb tramp-cache tramp-ftp tramp-cmds tramp
shell comint tramp-compat trampver help-mode view debug gnus-cite
gnus-topic nndoc nnfolder utf-7 utf7 nndraft nnmh bbdb-gnus bbdb-snarf
mail-extr auth-source nnimap imap trace gnus-agent gnus-srvr gnus-score
score-mode nnvirtual gnus-msg gnus-art mm-uu mml2015 mm-view smime dig
gnus-cache edmacro kmacro eudcb-bbdb bbdb-com advice help-fns
advice-preload eudc cus-edit cus-start cus-load eudc-vars epg-config
ldap bbdb timezone gnus-demon nntp nnir gnus-sum gnus-group gnus-undo
nnmail mail-source format-spec nnoo cl cl-19 gnus-start gnus-spec
gnus-int gnus-range message sendmail regexp-opt ecomplete rfc822 mml
mml-sec password-cache mm-decode mm-bodies mm-encode mailcap mail-parse
rfc2231 rfc2047 rfc2045 qp ietf-drums mailabbrev gmm-utils mailheader
canlock sha1 sha1-el hex-util hashcash gnus-win gnus gnus-ems nnheader
gnus-util netrc time-date mail-utils mm-util mail-prsvr wid-edit server
avoid paren ido xcscope ring easymenu emacs-goodies-loaddefs easy-mmode
bbdb-autoloads tooltip ediff-hook vc-hooks lisp-float-type mwheel x-win
x-dnd font-setting tool-bar dnd fontset image fringe lisp-mode register
page menu-bar rfn-eshadow timer select scroll-bar mldrag mouse jit-lock
font-lock syntax facemenu font-core frame cham georgian utf-8-lang
misc-lang vietnamese tibetan thai tai-viet lao korean japanese hebrew
greek romanian slovak czech european ethiopic indian cyrillic chinese
case-table epa-hook jka-cmpr-hook help simple abbrev loaddefs button
minibuffer faces cus-face files text-properties overlay md5 base64
format env code-pages mule custom widget hashtable-print-readable
backquote make-network-process dbusbind system-font-setting
font-render-setting gtk x-toolkit x multi-tty emacs)

-- 
Sergio





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

* bug#11580: Acknowledgement (23.3; EUDC can't handle empty last names in BBDB)
       [not found]           ` <handler.11580.B.133834110724596.ack@debbugs.gnu.org>
@ 2012-07-12  2:00             ` Sergio Durigan Junior
  2012-07-12 14:37               ` Stefan Monnier
  0 siblings, 1 reply; 23+ messages in thread
From: Sergio Durigan Junior @ 2012-07-12  2:00 UTC (permalink / raw)
  To: 11580

Ping.

Is this the right place to fill bugs about EUDC?  If not, I will gladly
re-open a bug in an appropriate place.

Thanks,

-- 
Sergio





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

* bug#11580: Acknowledgement (23.3; EUDC can't handle empty last names in BBDB)
  2012-07-12  2:00             ` bug#11580: Acknowledgement (23.3; EUDC can't handle empty last names in BBDB) Sergio Durigan Junior
@ 2012-07-12 14:37               ` Stefan Monnier
  0 siblings, 0 replies; 23+ messages in thread
From: Stefan Monnier @ 2012-07-12 14:37 UTC (permalink / raw)
  To: Sergio Durigan Junior; +Cc: 11580

> Is this the right place to fill bugs about EUDC?

I think so, tho I don't know of any EUDC maintainer, so we're going to
have to handle it ourselves, and I at least know very little about EUDC.


        Stefan





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

* [PATCH] Fix bug #11580
@ 2012-09-22  2:40 Sergio Durigan Junior
  2012-09-26 17:54 ` bug#11580: " Tassilo Horn
  2012-09-26 17:54 ` Tassilo Horn
  0 siblings, 2 replies; 23+ messages in thread
From: Sergio Durigan Junior @ 2012-09-22  2:40 UTC (permalink / raw)
  To: emacs-devel

Hi,

The attached patch fixes the bug listed on $SUBJECT.  Maybe there are
better ways to fix it, but a quick hack did the trick so I am sending it
for review.

It is the first time I contribute to Emacs, so I don't know if should
post this patch elsewhere.  I would be glad to receive feedback about
it.

Thank you,

-- 
Sergio

2012-09-22  Sergio Durigan Junior  <sergiodj@riseup.net>

	* net/eudcb-bbdb.el (eudc-bbdb-format-record-as-result): Do not
	treat empty strings.  (Bug#11580).

=== modified file 'lisp/net/eudcb-bbdb.el'
--- lisp/net/eudcb-bbdb.el	2012-01-19 07:21:25 +0000
+++ lisp/net/eudcb-bbdb.el	2012-09-22 02:15:16 +0000
@@ -167,7 +167,7 @@
 			 'record))))
        (t
 	(setq val "Unknown BBDB attribute")))
-      (if val
+      (if (and val (or (listp val) (not (string= val ""))))
 	(cond
 	 ((memq attr '(phones addresses))
 	  (setq eudc-rec (append val eudc-rec)))




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

* bug#11580: [PATCH] Fix bug #11580
  2012-09-22  2:40 [PATCH] Fix bug #11580 Sergio Durigan Junior
@ 2012-09-26 17:54 ` Tassilo Horn
  2012-09-29 12:04   ` Roland Winkler
  2012-09-29 12:04   ` Roland Winkler
  2012-09-26 17:54 ` Tassilo Horn
  1 sibling, 2 replies; 23+ messages in thread
From: Tassilo Horn @ 2012-09-26 17:54 UTC (permalink / raw)
  To: Sergio Durigan Junior; +Cc: 11580, winkler, emacs-devel

Sergio Durigan Junior <sergiodj@riseup.net> writes:

Hi Sergio,

> The attached patch fixes the bug listed on $SUBJECT.  Maybe there are
> better ways to fix it, but a quick hack did the trick so I am sending
> it for review.

I don't use bbdb, so I've Cc-ed Roland who is the current bbdb
maintainer.  Roland, the complete bug thread is here:

  http://debbugs.gnu.org/cgi/bugreport.cgi?bug=11580

In general, I think the patch isn't wrong, but somehow the whole
function looks awkward to me.  COMMENTs inside:

--8<---------------cut here---------------start------------->8---
(defun eudc-bbdb-format-record-as-result (record)
  "Format the BBDB RECORD as a EUDC query result record.
The record is filtered according to `eudc-bbdb-current-return-attributes'"
  (let ((attrs (or eudc-bbdb-current-return-attributes
		   '(firstname lastname aka company phones addresses net notes)))
	attr
	eudc-rec
	val)
    (while (prog1
	       (setq attr (car attrs))
	     (setq attrs (cdr attrs)))
      (cond
       ((eq attr 'phones)
	(setq val (eudc-bbdb-extract-phones record)))
       ((eq attr 'addresses)
	(setq val (eudc-bbdb-extract-addresses record)))
       ((memq attr '(firstname lastname aka company net notes))
	(setq val (eval
		   (list (intern
			  (concat "bbdb-record-"
				  (symbol-name attr)))
			 'record))))
       (t
        ;; COMMENT1: Shouldn't that be (error "Unknown BBDB attribute")?
        ;; Now, we'll enter the case of COMMENT3 with that val.
	(setq val "Unknown BBDB attribute")))
      ;; COMMENT2: Your change, basically ok.  Before it was just (if val ...
      (if (and val (or (listp val) (not (string= val ""))))
	(cond
	 ((memq attr '(phones addresses))
	  (setq eudc-rec (append val eudc-rec)))
	 ((and (listp val)
	       (= 1 (length val)))
	  (setq eudc-rec (cons (cons attr (car val)) eudc-rec)))
         ;; COMMENT3: Don't we need to distinguish between a list of
         ;; length > 0 and a string of length > 0? Or can't that happen?
	 ((> (length val) 0)
	  (setq eudc-rec (cons (cons attr val) eudc-rec)))
	 (t
	  (error "Unexpected attribute value")))))
    (nreverse eudc-rec)))
--8<---------------cut here---------------end--------------->8---

Bye,
Tassilo





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

* Re: [PATCH] Fix bug #11580
  2012-09-22  2:40 [PATCH] Fix bug #11580 Sergio Durigan Junior
  2012-09-26 17:54 ` bug#11580: " Tassilo Horn
@ 2012-09-26 17:54 ` Tassilo Horn
  2012-09-26 18:18   ` Sergio Durigan Junior
  2012-09-26 18:18   ` Sergio Durigan Junior
  1 sibling, 2 replies; 23+ messages in thread
From: Tassilo Horn @ 2012-09-26 17:54 UTC (permalink / raw)
  To: Sergio Durigan Junior; +Cc: 11580, winkler, emacs-devel

Sergio Durigan Junior <sergiodj@riseup.net> writes:

Hi Sergio,

> The attached patch fixes the bug listed on $SUBJECT.  Maybe there are
> better ways to fix it, but a quick hack did the trick so I am sending
> it for review.

I don't use bbdb, so I've Cc-ed Roland who is the current bbdb
maintainer.  Roland, the complete bug thread is here:

  http://debbugs.gnu.org/cgi/bugreport.cgi?bug=11580

In general, I think the patch isn't wrong, but somehow the whole
function looks awkward to me.  COMMENTs inside:

--8<---------------cut here---------------start------------->8---
(defun eudc-bbdb-format-record-as-result (record)
  "Format the BBDB RECORD as a EUDC query result record.
The record is filtered according to `eudc-bbdb-current-return-attributes'"
  (let ((attrs (or eudc-bbdb-current-return-attributes
		   '(firstname lastname aka company phones addresses net notes)))
	attr
	eudc-rec
	val)
    (while (prog1
	       (setq attr (car attrs))
	     (setq attrs (cdr attrs)))
      (cond
       ((eq attr 'phones)
	(setq val (eudc-bbdb-extract-phones record)))
       ((eq attr 'addresses)
	(setq val (eudc-bbdb-extract-addresses record)))
       ((memq attr '(firstname lastname aka company net notes))
	(setq val (eval
		   (list (intern
			  (concat "bbdb-record-"
				  (symbol-name attr)))
			 'record))))
       (t
        ;; COMMENT1: Shouldn't that be (error "Unknown BBDB attribute")?
        ;; Now, we'll enter the case of COMMENT3 with that val.
	(setq val "Unknown BBDB attribute")))
      ;; COMMENT2: Your change, basically ok.  Before it was just (if val ...
      (if (and val (or (listp val) (not (string= val ""))))
	(cond
	 ((memq attr '(phones addresses))
	  (setq eudc-rec (append val eudc-rec)))
	 ((and (listp val)
	       (= 1 (length val)))
	  (setq eudc-rec (cons (cons attr (car val)) eudc-rec)))
         ;; COMMENT3: Don't we need to distinguish between a list of
         ;; length > 0 and a string of length > 0? Or can't that happen?
	 ((> (length val) 0)
	  (setq eudc-rec (cons (cons attr val) eudc-rec)))
	 (t
	  (error "Unexpected attribute value")))))
    (nreverse eudc-rec)))
--8<---------------cut here---------------end--------------->8---

Bye,
Tassilo



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

* bug#11580: [PATCH] Fix bug #11580
  2012-09-26 17:54 ` Tassilo Horn
  2012-09-26 18:18   ` Sergio Durigan Junior
@ 2012-09-26 18:18   ` Sergio Durigan Junior
  1 sibling, 0 replies; 23+ messages in thread
From: Sergio Durigan Junior @ 2012-09-26 18:18 UTC (permalink / raw)
  To: Tassilo Horn; +Cc: 11580, winkler, emacs-devel

Hello Tassilo,

On Wednesday, September 26 2012, Tassilo Horn wrote:

> Sergio Durigan Junior <sergiodj@riseup.net> writes:
>
>> The attached patch fixes the bug listed on $SUBJECT.  Maybe there are
>> better ways to fix it, but a quick hack did the trick so I am sending
>> it for review.
>
> I don't use bbdb, so I've Cc-ed Roland who is the current bbdb
> maintainer.  Roland, the complete bug thread is here:
>
>   http://debbugs.gnu.org/cgi/bugreport.cgi?bug=11580
>
> In general, I think the patch isn't wrong, but somehow the whole
> function looks awkward to me.  COMMENTs inside:

Thanks for the review.

> --8<---------------cut here---------------start------------->8---
> (defun eudc-bbdb-format-record-as-result (record)
>   "Format the BBDB RECORD as a EUDC query result record.
> The record is filtered according to `eudc-bbdb-current-return-attributes'"
>   (let ((attrs (or eudc-bbdb-current-return-attributes
> 		   '(firstname lastname aka company phones addresses net notes)))
> 	attr
> 	eudc-rec
> 	val)
>     (while (prog1
> 	       (setq attr (car attrs))
> 	     (setq attrs (cdr attrs)))
>       (cond
>        ((eq attr 'phones)
> 	(setq val (eudc-bbdb-extract-phones record)))
>        ((eq attr 'addresses)
> 	(setq val (eudc-bbdb-extract-addresses record)))
>        ((memq attr '(firstname lastname aka company net notes))
> 	(setq val (eval
> 		   (list (intern
> 			  (concat "bbdb-record-"
> 				  (symbol-name attr)))
> 			 'record))))
>        (t
>         ;; COMMENT1: Shouldn't that be (error "Unknown BBDB attribute")?
>         ;; Now, we'll enter the case of COMMENT3 with that val.

Agreed.  There is no point in entering (cond) with such wrong value.

> 	(setq val "Unknown BBDB attribute")))
>       ;; COMMENT2: Your change, basically ok.  Before it was just (if val ...

Ok, thanks.  While waiting for the review, I thought a little more about
it and maybe it is worth to put that extra check inside (cond), instead
of inside the (if).

Anyway, I am sending a new version of the patch to fix this (and also
address your comments).

>       (if (and val (or (listp val) (not (string= val ""))))
> 	(cond
> 	 ((memq attr '(phones addresses))
> 	  (setq eudc-rec (append val eudc-rec)))
> 	 ((and (listp val)
> 	       (= 1 (length val)))
> 	  (setq eudc-rec (cons (cons attr (car val)) eudc-rec)))
>          ;; COMMENT3: Don't we need to distinguish between a list of
>          ;; length > 0 and a string of length > 0? Or can't that happen?

I don't know the answer to this one.  In either case, I am checking to
see if `val' is not a list.

WDYT of the new patch below?

Thanks,

-- 
Sergio

=== modified file 'lisp/net/eudcb-bbdb.el'
--- lisp/net/eudcb-bbdb.el	2012-01-19 07:21:25 +0000
+++ lisp/net/eudcb-bbdb.el	2012-09-26 18:14:52 +0000
@@ -166,7 +166,7 @@
 				  (symbol-name attr)))
 			 'record))))
        (t
-	(setq val "Unknown BBDB attribute")))
+	(error "Unknown BBDB attribute")))
       (if val
 	(cond
 	 ((memq attr '(phones addresses))
@@ -176,6 +176,8 @@
 	  (setq eudc-rec (cons (cons attr (car val)) eudc-rec)))
 	 ((> (length val) 0)
 	  (setq eudc-rec (cons (cons attr val) eudc-rec)))
+	 ((and (not (listp val)) (string= val ""))
+	  nil) ; Do nothing
 	 (t
 	  (error "Unexpected attribute value")))))
     (nreverse eudc-rec)))






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

* Re: [PATCH] Fix bug #11580
  2012-09-26 17:54 ` Tassilo Horn
@ 2012-09-26 18:18   ` Sergio Durigan Junior
  2012-09-26 18:56     ` bug#11580: " Tassilo Horn
  2012-09-26 18:18   ` Sergio Durigan Junior
  1 sibling, 1 reply; 23+ messages in thread
From: Sergio Durigan Junior @ 2012-09-26 18:18 UTC (permalink / raw)
  To: Tassilo Horn; +Cc: 11580, winkler, emacs-devel

Hello Tassilo,

On Wednesday, September 26 2012, Tassilo Horn wrote:

> Sergio Durigan Junior <sergiodj@riseup.net> writes:
>
>> The attached patch fixes the bug listed on $SUBJECT.  Maybe there are
>> better ways to fix it, but a quick hack did the trick so I am sending
>> it for review.
>
> I don't use bbdb, so I've Cc-ed Roland who is the current bbdb
> maintainer.  Roland, the complete bug thread is here:
>
>   http://debbugs.gnu.org/cgi/bugreport.cgi?bug=11580
>
> In general, I think the patch isn't wrong, but somehow the whole
> function looks awkward to me.  COMMENTs inside:

Thanks for the review.

> --8<---------------cut here---------------start------------->8---
> (defun eudc-bbdb-format-record-as-result (record)
>   "Format the BBDB RECORD as a EUDC query result record.
> The record is filtered according to `eudc-bbdb-current-return-attributes'"
>   (let ((attrs (or eudc-bbdb-current-return-attributes
> 		   '(firstname lastname aka company phones addresses net notes)))
> 	attr
> 	eudc-rec
> 	val)
>     (while (prog1
> 	       (setq attr (car attrs))
> 	     (setq attrs (cdr attrs)))
>       (cond
>        ((eq attr 'phones)
> 	(setq val (eudc-bbdb-extract-phones record)))
>        ((eq attr 'addresses)
> 	(setq val (eudc-bbdb-extract-addresses record)))
>        ((memq attr '(firstname lastname aka company net notes))
> 	(setq val (eval
> 		   (list (intern
> 			  (concat "bbdb-record-"
> 				  (symbol-name attr)))
> 			 'record))))
>        (t
>         ;; COMMENT1: Shouldn't that be (error "Unknown BBDB attribute")?
>         ;; Now, we'll enter the case of COMMENT3 with that val.

Agreed.  There is no point in entering (cond) with such wrong value.

> 	(setq val "Unknown BBDB attribute")))
>       ;; COMMENT2: Your change, basically ok.  Before it was just (if val ...

Ok, thanks.  While waiting for the review, I thought a little more about
it and maybe it is worth to put that extra check inside (cond), instead
of inside the (if).

Anyway, I am sending a new version of the patch to fix this (and also
address your comments).

>       (if (and val (or (listp val) (not (string= val ""))))
> 	(cond
> 	 ((memq attr '(phones addresses))
> 	  (setq eudc-rec (append val eudc-rec)))
> 	 ((and (listp val)
> 	       (= 1 (length val)))
> 	  (setq eudc-rec (cons (cons attr (car val)) eudc-rec)))
>          ;; COMMENT3: Don't we need to distinguish between a list of
>          ;; length > 0 and a string of length > 0? Or can't that happen?

I don't know the answer to this one.  In either case, I am checking to
see if `val' is not a list.

WDYT of the new patch below?

Thanks,

-- 
Sergio

=== modified file 'lisp/net/eudcb-bbdb.el'
--- lisp/net/eudcb-bbdb.el	2012-01-19 07:21:25 +0000
+++ lisp/net/eudcb-bbdb.el	2012-09-26 18:14:52 +0000
@@ -166,7 +166,7 @@
 				  (symbol-name attr)))
 			 'record))))
        (t
-	(setq val "Unknown BBDB attribute")))
+	(error "Unknown BBDB attribute")))
       (if val
 	(cond
 	 ((memq attr '(phones addresses))
@@ -176,6 +176,8 @@
 	  (setq eudc-rec (cons (cons attr (car val)) eudc-rec)))
 	 ((> (length val) 0)
 	  (setq eudc-rec (cons (cons attr val) eudc-rec)))
+	 ((and (not (listp val)) (string= val ""))
+	  nil) ; Do nothing
 	 (t
 	  (error "Unexpected attribute value")))))
     (nreverse eudc-rec)))




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

* bug#11580: [PATCH] Fix bug #11580
  2012-09-26 18:18   ` Sergio Durigan Junior
@ 2012-09-26 18:56     ` Tassilo Horn
  0 siblings, 0 replies; 23+ messages in thread
From: Tassilo Horn @ 2012-09-26 18:56 UTC (permalink / raw)
  To: Sergio Durigan Junior; +Cc: 11580, winkler, emacs-devel

Sergio Durigan Junior <sergiodj@riseup.net> writes:

Hi Sergio,

> WDYT of the new patch below?

--8<---------------cut here---------------start------------->8---
=== modified file 'lisp/net/eudcb-bbdb.el'
--- lisp/net/eudcb-bbdb.el	2012-01-19 07:21:25 +0000
+++ lisp/net/eudcb-bbdb.el	2012-09-26 18:14:52 +0000
@@ -166,7 +166,7 @@
 				  (symbol-name attr)))
 			 'record))))
        (t
-	(setq val "Unknown BBDB attribute")))
+	(error "Unknown BBDB attribute")))
       (if val
 	(cond
 	 ((memq attr '(phones addresses))
@@ -176,6 +176,8 @@
 	  (setq eudc-rec (cons (cons attr (car val)) eudc-rec)))
 	 ((> (length val) 0)
 	  (setq eudc-rec (cons (cons attr val) eudc-rec)))
+	 ((and (not (listp val)) (string= val ""))
+	  nil) ; Do nothing
 	 (t
 	  (error "Unexpected attribute value")))))
     (nreverse eudc-rec)))
--8<---------------cut here---------------end--------------->8---

In the second hunk, the (not (listp val)) is not needed.  If val was a
list, it would have entered one of the two preceeding clauses, but
that's just nitpicking.

Anyway, only Roland knows exactly what's the right fix for the issue, so
he should decide what to do.

Bye,
Tassilo





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

* bug#11580: [PATCH] Fix bug #11580
  2012-09-26 17:54 ` bug#11580: " Tassilo Horn
@ 2012-09-29 12:04   ` Roland Winkler
  2012-09-29 12:04   ` Roland Winkler
  1 sibling, 0 replies; 23+ messages in thread
From: Roland Winkler @ 2012-09-29 12:04 UTC (permalink / raw)
  To: Sergio Durigan Junior; +Cc: 11580, emacs-devel

On Wed, Sep 26 2012, Tassilo Horn wrote:
>> The attached patch fixes the bug listed on $SUBJECT.  Maybe there are
>> better ways to fix it, but a quick hack did the trick so I am sending
>> it for review.
>
> I don't use bbdb, so I've Cc-ed Roland who is the current bbdb
> maintainer.  Roland, the complete bug thread is here:

It seems this is all about BBDB v2. Unfortunately, the BBDB v3 that I
have been working on for a little while has not yet been released

  BBDB is available at
  http://savannah.nongnu.org/projects/bbdb/
  To check it out, use
  git clone git://git.savannah.nongnu.org/bbdb.git

Nobody on the BBDB mailing list has ever mentioned EUDC. So I never
thought about this till I saw this bug report.

I've tried to clean up the code of BBDB and make it more robust. Lots of
things have changed along this way. It seems to me that eudc-bbdb.el
would likewise benefit from that. However, the current version of
eudc-bbdb.el will not work with BBDB v3.

There are a few things left I'd like to do before making the first
proper release of BBDB v3. It appears to me that then it would make more
sense to look into adapting eudc-bbdb.el to BBDB v3.

If in the meanwhile you have a patch that fixes the bug for you, can you
continue with it till then?

Thanks,

Roland





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

* Re: bug#11580: [PATCH] Fix bug #11580
  2012-09-26 17:54 ` bug#11580: " Tassilo Horn
  2012-09-29 12:04   ` Roland Winkler
@ 2012-09-29 12:04   ` Roland Winkler
  2012-09-29 19:30     ` Sergio Durigan Junior
  2012-09-29 19:30     ` Sergio Durigan Junior
  1 sibling, 2 replies; 23+ messages in thread
From: Roland Winkler @ 2012-09-29 12:04 UTC (permalink / raw)
  To: Sergio Durigan Junior; +Cc: 11580, emacs-devel

On Wed, Sep 26 2012, Tassilo Horn wrote:
>> The attached patch fixes the bug listed on $SUBJECT.  Maybe there are
>> better ways to fix it, but a quick hack did the trick so I am sending
>> it for review.
>
> I don't use bbdb, so I've Cc-ed Roland who is the current bbdb
> maintainer.  Roland, the complete bug thread is here:

It seems this is all about BBDB v2. Unfortunately, the BBDB v3 that I
have been working on for a little while has not yet been released

  BBDB is available at
  http://savannah.nongnu.org/projects/bbdb/
  To check it out, use
  git clone git://git.savannah.nongnu.org/bbdb.git

Nobody on the BBDB mailing list has ever mentioned EUDC. So I never
thought about this till I saw this bug report.

I've tried to clean up the code of BBDB and make it more robust. Lots of
things have changed along this way. It seems to me that eudc-bbdb.el
would likewise benefit from that. However, the current version of
eudc-bbdb.el will not work with BBDB v3.

There are a few things left I'd like to do before making the first
proper release of BBDB v3. It appears to me that then it would make more
sense to look into adapting eudc-bbdb.el to BBDB v3.

If in the meanwhile you have a patch that fixes the bug for you, can you
continue with it till then?

Thanks,

Roland



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

* bug#11580: [PATCH] Fix bug #11580
  2012-09-29 12:04   ` Roland Winkler
  2012-09-29 19:30     ` Sergio Durigan Junior
@ 2012-09-29 19:30     ` Sergio Durigan Junior
  1 sibling, 0 replies; 23+ messages in thread
From: Sergio Durigan Junior @ 2012-09-29 19:30 UTC (permalink / raw)
  To: Roland Winkler; +Cc: 11580, emacs-devel

On Saturday, September 29 2012, Roland Winkler wrote:

> On Wed, Sep 26 2012, Tassilo Horn wrote:
>>> The attached patch fixes the bug listed on $SUBJECT.  Maybe there are
>>> better ways to fix it, but a quick hack did the trick so I am sending
>>> it for review.
>>
>> I don't use bbdb, so I've Cc-ed Roland who is the current bbdb
>> maintainer.  Roland, the complete bug thread is here:
>
> It seems this is all about BBDB v2. Unfortunately, the BBDB v3 that I
> have been working on for a little while has not yet been released
>
> Nobody on the BBDB mailing list has ever mentioned EUDC. So I never
> thought about this till I saw this bug report.
>
> I've tried to clean up the code of BBDB and make it more robust. Lots of
> things have changed along this way. It seems to me that eudc-bbdb.el
> would likewise benefit from that. However, the current version of
> eudc-bbdb.el will not work with BBDB v3.
>
> There are a few things left I'd like to do before making the first
> proper release of BBDB v3. It appears to me that then it would make more
> sense to look into adapting eudc-bbdb.el to BBDB v3.
>
> If in the meanwhile you have a patch that fixes the bug for you, can you
> continue with it till then?

Thank you for the explanations.  I think this patch has more to do with
EUDC than with BBDB, TBH.  And this is a simple fix to a long-standing
problem.

I am afraid I did not understand the last paragraph.  Are you saying
that it is OK to commit this patch upstream?

Thanks,

-- 
Sergio





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

* Re: bug#11580: [PATCH] Fix bug #11580
  2012-09-29 12:04   ` Roland Winkler
@ 2012-09-29 19:30     ` Sergio Durigan Junior
  2012-09-30 15:12       ` Roland Winkler
  2012-09-30 15:12       ` Roland Winkler
  2012-09-29 19:30     ` Sergio Durigan Junior
  1 sibling, 2 replies; 23+ messages in thread
From: Sergio Durigan Junior @ 2012-09-29 19:30 UTC (permalink / raw)
  To: Roland Winkler; +Cc: 11580, emacs-devel

On Saturday, September 29 2012, Roland Winkler wrote:

> On Wed, Sep 26 2012, Tassilo Horn wrote:
>>> The attached patch fixes the bug listed on $SUBJECT.  Maybe there are
>>> better ways to fix it, but a quick hack did the trick so I am sending
>>> it for review.
>>
>> I don't use bbdb, so I've Cc-ed Roland who is the current bbdb
>> maintainer.  Roland, the complete bug thread is here:
>
> It seems this is all about BBDB v2. Unfortunately, the BBDB v3 that I
> have been working on for a little while has not yet been released
>
> Nobody on the BBDB mailing list has ever mentioned EUDC. So I never
> thought about this till I saw this bug report.
>
> I've tried to clean up the code of BBDB and make it more robust. Lots of
> things have changed along this way. It seems to me that eudc-bbdb.el
> would likewise benefit from that. However, the current version of
> eudc-bbdb.el will not work with BBDB v3.
>
> There are a few things left I'd like to do before making the first
> proper release of BBDB v3. It appears to me that then it would make more
> sense to look into adapting eudc-bbdb.el to BBDB v3.
>
> If in the meanwhile you have a patch that fixes the bug for you, can you
> continue with it till then?

Thank you for the explanations.  I think this patch has more to do with
EUDC than with BBDB, TBH.  And this is a simple fix to a long-standing
problem.

I am afraid I did not understand the last paragraph.  Are you saying
that it is OK to commit this patch upstream?

Thanks,

-- 
Sergio



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

* bug#11580: [PATCH] Fix bug #11580
  2012-09-29 19:30     ` Sergio Durigan Junior
@ 2012-09-30 15:12       ` Roland Winkler
  2012-09-30 15:12       ` Roland Winkler
  1 sibling, 0 replies; 23+ messages in thread
From: Roland Winkler @ 2012-09-30 15:12 UTC (permalink / raw)
  To: Sergio Durigan Junior; +Cc: 11580, emacs-devel

On Sat Sep 29 2012 Sergio Durigan Junior wrote:
> Thank you for the explanations.  I think this patch has more to do with
> EUDC than with BBDB, TBH.  And this is a simple fix to a long-standing
> problem.
> 
> I am afraid I did not understand the last paragraph.  Are you saying
> that it is OK to commit this patch upstream?

I am sorry, I really do not know much of EUDC.

> WDYT of the new patch below?
> 
> +	 ((and (not (listp val)) (string= val ""))
> +	  nil) ; Do nothing

If I understand the patch correctly, its goal is that if a field of
a BBDB record is just an empty string, then do not pass the empty
string to EUDC. BBDB v3 puts nil into such fields instead of an
empty string. I do not know about BBDB v2. 

In any case, I suggest the following simplified / untested patch
(note that the return values of cond are ignored)

--- eudcb-bbdb.el~	2012-04-07 22:03:02.000000000 -0500
+++ eudcb-bbdb.el	2012-09-30 10:06:03.000000000 -0500
@@ -167,17 +167,18 @@
 			 'record))))
        (t
 	(setq val "Unknown BBDB attribute")))
-      (if val
-	(cond
-	 ((memq attr '(phones addresses))
-	  (setq eudc-rec (append val eudc-rec)))
-	 ((and (listp val)
-	  (= 1 (length val)))
-	  (setq eudc-rec (cons (cons attr (car val)) eudc-rec)))
-	 ((> (length val) 0)
-	  (setq eudc-rec (cons (cons attr val) eudc-rec)))
-	 (t
-	  (error "Unexpected attribute value")))))
+      (cond
+       ((or (not val)
+            (and (stringp val) (string= val "")))) ; do nothing
+       ((memq attr '(phones addresses))
+        (setq eudc-rec (append val eudc-rec)))
+       ((and (listp val)
+             (= 1 (length val)))
+        (setq eudc-rec (cons (cons attr (car val)) eudc-rec)))
+       ((> (length val) 0)
+        (setq eudc-rec (cons (cons attr val) eudc-rec)))
+       (t
+        (error "Unexpected attribute value"))))
     (nreverse eudc-rec)))
 
 





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

* Re: bug#11580: [PATCH] Fix bug #11580
  2012-09-29 19:30     ` Sergio Durigan Junior
  2012-09-30 15:12       ` Roland Winkler
@ 2012-09-30 15:12       ` Roland Winkler
  2012-05-29  5:14         ` bug#11580: 23.3; EUDC can't handle empty last names in BBDB Sergio Durigan Junior
  2012-10-02  1:46         ` Sergio Durigan Junior
  1 sibling, 2 replies; 23+ messages in thread
From: Roland Winkler @ 2012-09-30 15:12 UTC (permalink / raw)
  To: Sergio Durigan Junior; +Cc: 11580, emacs-devel

On Sat Sep 29 2012 Sergio Durigan Junior wrote:
> Thank you for the explanations.  I think this patch has more to do with
> EUDC than with BBDB, TBH.  And this is a simple fix to a long-standing
> problem.
> 
> I am afraid I did not understand the last paragraph.  Are you saying
> that it is OK to commit this patch upstream?

I am sorry, I really do not know much of EUDC.

> WDYT of the new patch below?
> 
> +	 ((and (not (listp val)) (string= val ""))
> +	  nil) ; Do nothing

If I understand the patch correctly, its goal is that if a field of
a BBDB record is just an empty string, then do not pass the empty
string to EUDC. BBDB v3 puts nil into such fields instead of an
empty string. I do not know about BBDB v2. 

In any case, I suggest the following simplified / untested patch
(note that the return values of cond are ignored)

--- eudcb-bbdb.el~	2012-04-07 22:03:02.000000000 -0500
+++ eudcb-bbdb.el	2012-09-30 10:06:03.000000000 -0500
@@ -167,17 +167,18 @@
 			 'record))))
        (t
 	(setq val "Unknown BBDB attribute")))
-      (if val
-	(cond
-	 ((memq attr '(phones addresses))
-	  (setq eudc-rec (append val eudc-rec)))
-	 ((and (listp val)
-	  (= 1 (length val)))
-	  (setq eudc-rec (cons (cons attr (car val)) eudc-rec)))
-	 ((> (length val) 0)
-	  (setq eudc-rec (cons (cons attr val) eudc-rec)))
-	 (t
-	  (error "Unexpected attribute value")))))
+      (cond
+       ((or (not val)
+            (and (stringp val) (string= val "")))) ; do nothing
+       ((memq attr '(phones addresses))
+        (setq eudc-rec (append val eudc-rec)))
+       ((and (listp val)
+             (= 1 (length val)))
+        (setq eudc-rec (cons (cons attr (car val)) eudc-rec)))
+       ((> (length val) 0)
+        (setq eudc-rec (cons (cons attr val) eudc-rec)))
+       (t
+        (error "Unexpected attribute value"))))
     (nreverse eudc-rec)))
 
 



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

* bug#11580: [PATCH] Fix bug #11580
  2012-05-29  5:14         ` bug#11580: 23.3; EUDC can't handle empty last names in BBDB Sergio Durigan Junior
       [not found]           ` <handler.11580.B.133834110724596.ack@debbugs.gnu.org>
@ 2012-10-02  1:46           ` Sergio Durigan Junior
  1 sibling, 0 replies; 23+ messages in thread
From: Sergio Durigan Junior @ 2012-10-02  1:46 UTC (permalink / raw)
  To: Roland Winkler; +Cc: 11580, emacs-devel

On Sunday, September 30 2012, Roland Winkler wrote:

>> WDYT of the new patch below?
>> 
>> +	 ((and (not (listp val)) (string= val ""))
>> +	  nil) ; Do nothing
>
> If I understand the patch correctly, its goal is that if a field of
> a BBDB record is just an empty string, then do not pass the empty
> string to EUDC. BBDB v3 puts nil into such fields instead of an
> empty string. I do not know about BBDB v2. 

Thanks for the explanation.  BBDB v2 (which I am using now) puts the
empty string that I am trying to avoid, thus the patch.

> In any case, I suggest the following simplified / untested patch
> (note that the return values of cond are ignored)

Thanks, the patch is simpler.  I took the liberty to make a small
correction on your patch, which is to call (error "Unknown BBDB
attribute") instead of (setq val "Unknown BBDB attribute"), which I
think is a better way to handle it.

So, is the patch below OK for mailine?

-- 
Sergio

2012-10-02  Roland Winkler  <winkler@gnu.org>
	    Sergio Durigan Junior  <sergiodj@riseup.net>

	* lisp/net/eudcb-bbdb.el (eudc-bbdb-format-record-as-result):
	Handle empty strings coming from BBDB.  (Bug#11580).

=== modified file 'lisp/net/eudcb-bbdb.el'
--- lisp/net/eudcb-bbdb.el	2012-01-19 07:21:25 +0000
+++ lisp/net/eudcb-bbdb.el	2012-10-02 01:39:38 +0000
@@ -166,18 +166,19 @@
 				  (symbol-name attr)))
 			 'record))))
        (t
-	(setq val "Unknown BBDB attribute")))
-      (if val
-	(cond
-	 ((memq attr '(phones addresses))
-	  (setq eudc-rec (append val eudc-rec)))
-	 ((and (listp val)
-	  (= 1 (length val)))
-	  (setq eudc-rec (cons (cons attr (car val)) eudc-rec)))
-	 ((> (length val) 0)
-	  (setq eudc-rec (cons (cons attr val) eudc-rec)))
-	 (t
-	  (error "Unexpected attribute value")))))
+	(error "Unknown BBDB attribute")))
+      (cond
+       ((or (not val)
+            (and (stringp val) (string= val "")))) ; do nothing
+       ((memq attr '(phones addresses))
+        (setq eudc-rec (append val eudc-rec)))
+       ((and (listp val)
+             (= 1 (length val)))
+        (setq eudc-rec (cons (cons attr (car val)) eudc-rec)))
+       ((> (length val) 0)
+        (setq eudc-rec (cons (cons attr val) eudc-rec)))
+       (t
+        (error "Unexpected attribute value"))))
     (nreverse eudc-rec)))
 
 






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

* Re: bug#11580: [PATCH] Fix bug #11580
  2012-09-30 15:12       ` Roland Winkler
  2012-05-29  5:14         ` bug#11580: 23.3; EUDC can't handle empty last names in BBDB Sergio Durigan Junior
@ 2012-10-02  1:46         ` Sergio Durigan Junior
  2012-10-02  1:58           ` Roland Winkler
                             ` (4 more replies)
  1 sibling, 5 replies; 23+ messages in thread
From: Sergio Durigan Junior @ 2012-10-02  1:46 UTC (permalink / raw)
  To: Roland Winkler; +Cc: 11580, emacs-devel

On Sunday, September 30 2012, Roland Winkler wrote:

>> WDYT of the new patch below?
>> 
>> +	 ((and (not (listp val)) (string= val ""))
>> +	  nil) ; Do nothing
>
> If I understand the patch correctly, its goal is that if a field of
> a BBDB record is just an empty string, then do not pass the empty
> string to EUDC. BBDB v3 puts nil into such fields instead of an
> empty string. I do not know about BBDB v2. 

Thanks for the explanation.  BBDB v2 (which I am using now) puts the
empty string that I am trying to avoid, thus the patch.

> In any case, I suggest the following simplified / untested patch
> (note that the return values of cond are ignored)

Thanks, the patch is simpler.  I took the liberty to make a small
correction on your patch, which is to call (error "Unknown BBDB
attribute") instead of (setq val "Unknown BBDB attribute"), which I
think is a better way to handle it.

So, is the patch below OK for mailine?

-- 
Sergio

2012-10-02  Roland Winkler  <winkler@gnu.org>
	    Sergio Durigan Junior  <sergiodj@riseup.net>

	* lisp/net/eudcb-bbdb.el (eudc-bbdb-format-record-as-result):
	Handle empty strings coming from BBDB.  (Bug#11580).

=== modified file 'lisp/net/eudcb-bbdb.el'
--- lisp/net/eudcb-bbdb.el	2012-01-19 07:21:25 +0000
+++ lisp/net/eudcb-bbdb.el	2012-10-02 01:39:38 +0000
@@ -166,18 +166,19 @@
 				  (symbol-name attr)))
 			 'record))))
        (t
-	(setq val "Unknown BBDB attribute")))
-      (if val
-	(cond
-	 ((memq attr '(phones addresses))
-	  (setq eudc-rec (append val eudc-rec)))
-	 ((and (listp val)
-	  (= 1 (length val)))
-	  (setq eudc-rec (cons (cons attr (car val)) eudc-rec)))
-	 ((> (length val) 0)
-	  (setq eudc-rec (cons (cons attr val) eudc-rec)))
-	 (t
-	  (error "Unexpected attribute value")))))
+	(error "Unknown BBDB attribute")))
+      (cond
+       ((or (not val)
+            (and (stringp val) (string= val "")))) ; do nothing
+       ((memq attr '(phones addresses))
+        (setq eudc-rec (append val eudc-rec)))
+       ((and (listp val)
+             (= 1 (length val)))
+        (setq eudc-rec (cons (cons attr (car val)) eudc-rec)))
+       ((> (length val) 0)
+        (setq eudc-rec (cons (cons attr val) eudc-rec)))
+       (t
+        (error "Unexpected attribute value"))))
     (nreverse eudc-rec)))
 
 




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

* bug#11580: [PATCH] Fix bug #11580
  2012-10-02  1:46         ` Sergio Durigan Junior
@ 2012-10-02  1:58           ` Roland Winkler
  2012-10-02  2:50             ` Sergio Durigan Junior
  2012-10-02  3:59           ` Stefan Monnier
                             ` (3 subsequent siblings)
  4 siblings, 1 reply; 23+ messages in thread
From: Roland Winkler @ 2012-10-02  1:58 UTC (permalink / raw)
  To: Sergio Durigan Junior; +Cc: 11580

On Mon Oct 1 2012 Sergio Durigan Junior wrote:
> Thanks, the patch is simpler.  I took the liberty to make a small
> correction on your patch, which is to call (error "Unknown BBDB
> attribute") instead of (setq val "Unknown BBDB attribute"), which I
> think is a better way to handle it.

I omitted this because I think one needs to modify some deep
internals of BBDB to get the  "Unknown BBDB attribute".
(Have you ever seen a situation where this code is relevant?)
In that sense, I believe it should not matter what the code is doing
here.

> So, is the patch below OK for mailine?

Can you install? Or should I do it?

Roland





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

* bug#11580: [PATCH] Fix bug #11580
  2012-10-02  1:58           ` Roland Winkler
@ 2012-10-02  2:50             ` Sergio Durigan Junior
  0 siblings, 0 replies; 23+ messages in thread
From: Sergio Durigan Junior @ 2012-10-02  2:50 UTC (permalink / raw)
  To: Roland Winkler; +Cc: 11580

On Monday, October 01 2012, Roland Winkler wrote:

> On Mon Oct 1 2012 Sergio Durigan Junior wrote:
>> Thanks, the patch is simpler.  I took the liberty to make a small
>> correction on your patch, which is to call (error "Unknown BBDB
>> attribute") instead of (setq val "Unknown BBDB attribute"), which I
>> think is a better way to handle it.
>
> I omitted this because I think one needs to modify some deep
> internals of BBDB to get the  "Unknown BBDB attribute".
> (Have you ever seen a situation where this code is relevant?)

I don't really remember.

> In that sense, I believe it should not matter what the code is doing
> here.

Well, I prefered to be cautious either way :-).

>> So, is the patch below OK for mailine?
>
> Can you install? Or should I do it?

It is my first patch to Emacs, so I don't think I have the necessary
permission to do so.  I would appreciate if you could push it for me
(and also mark the related bug as closed).

Thank you,

-- 
Sergio





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

* bug#11580: [PATCH] Fix bug #11580
  2012-10-02  1:46         ` Sergio Durigan Junior
  2012-10-02  1:58           ` Roland Winkler
  2012-10-02  3:59           ` Stefan Monnier
@ 2012-10-02  3:59           ` Stefan Monnier
  2012-10-02  5:10           ` Chong Yidong
  2012-10-02  5:10           ` Chong Yidong
  4 siblings, 0 replies; 23+ messages in thread
From: Stefan Monnier @ 2012-10-02  3:59 UTC (permalink / raw)
  To: Sergio Durigan Junior; +Cc: 11580, Roland Winkler, emacs-devel

> +            (and (stringp val) (string= val "")))) ; do nothing

Aka (equal val "")


        Stefan





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

* Re: bug#11580: [PATCH] Fix bug #11580
  2012-10-02  1:46         ` Sergio Durigan Junior
  2012-10-02  1:58           ` Roland Winkler
@ 2012-10-02  3:59           ` Stefan Monnier
  2012-10-02  3:59           ` Stefan Monnier
                             ` (2 subsequent siblings)
  4 siblings, 0 replies; 23+ messages in thread
From: Stefan Monnier @ 2012-10-02  3:59 UTC (permalink / raw)
  To: Sergio Durigan Junior; +Cc: 11580, Roland Winkler, emacs-devel

> +            (and (stringp val) (string= val "")))) ; do nothing

Aka (equal val "")


        Stefan



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

* bug#11580: [PATCH] Fix bug #11580
  2012-10-02  1:46         ` Sergio Durigan Junior
                             ` (3 preceding siblings ...)
  2012-10-02  5:10           ` Chong Yidong
@ 2012-10-02  5:10           ` Chong Yidong
  4 siblings, 0 replies; 23+ messages in thread
From: Chong Yidong @ 2012-10-02  5:10 UTC (permalink / raw)
  To: Sergio Durigan Junior; +Cc: 11580, Roland Winkler, emacs-devel

Sergio Durigan Junior <sergiodj@riseup.net> writes:

> Thanks, the patch is simpler.  I took the liberty to make a small
> correction on your patch, which is to call (error "Unknown BBDB
> attribute") instead of (setq val "Unknown BBDB attribute"), which I
> think is a better way to handle it.
>
> So, is the patch below OK for mailine?

Committed, thanks.





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

* Re: bug#11580: [PATCH] Fix bug #11580
  2012-10-02  1:46         ` Sergio Durigan Junior
                             ` (2 preceding siblings ...)
  2012-10-02  3:59           ` Stefan Monnier
@ 2012-10-02  5:10           ` Chong Yidong
  2012-10-02  5:10           ` Chong Yidong
  4 siblings, 0 replies; 23+ messages in thread
From: Chong Yidong @ 2012-10-02  5:10 UTC (permalink / raw)
  To: Sergio Durigan Junior; +Cc: 11580, Roland Winkler, emacs-devel

Sergio Durigan Junior <sergiodj@riseup.net> writes:

> Thanks, the patch is simpler.  I took the liberty to make a small
> correction on your patch, which is to call (error "Unknown BBDB
> attribute") instead of (setq val "Unknown BBDB attribute"), which I
> think is a better way to handle it.
>
> So, is the patch below OK for mailine?

Committed, thanks.



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

end of thread, other threads:[~2012-10-02  5:10 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-22  2:40 [PATCH] Fix bug #11580 Sergio Durigan Junior
2012-09-26 17:54 ` bug#11580: " Tassilo Horn
2012-09-29 12:04   ` Roland Winkler
2012-09-29 12:04   ` Roland Winkler
2012-09-29 19:30     ` Sergio Durigan Junior
2012-09-30 15:12       ` Roland Winkler
2012-09-30 15:12       ` Roland Winkler
2012-05-29  5:14         ` bug#11580: 23.3; EUDC can't handle empty last names in BBDB Sergio Durigan Junior
     [not found]           ` <handler.11580.B.133834110724596.ack@debbugs.gnu.org>
2012-07-12  2:00             ` bug#11580: Acknowledgement (23.3; EUDC can't handle empty last names in BBDB) Sergio Durigan Junior
2012-07-12 14:37               ` Stefan Monnier
2012-10-02  1:46           ` bug#11580: [PATCH] Fix bug #11580 Sergio Durigan Junior
2012-10-02  1:46         ` Sergio Durigan Junior
2012-10-02  1:58           ` Roland Winkler
2012-10-02  2:50             ` Sergio Durigan Junior
2012-10-02  3:59           ` Stefan Monnier
2012-10-02  3:59           ` Stefan Monnier
2012-10-02  5:10           ` Chong Yidong
2012-10-02  5:10           ` Chong Yidong
2012-09-29 19:30     ` Sergio Durigan Junior
2012-09-26 17:54 ` Tassilo Horn
2012-09-26 18:18   ` Sergio Durigan Junior
2012-09-26 18:56     ` bug#11580: " Tassilo Horn
2012-09-26 18:18   ` Sergio Durigan Junior

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.