Fix bug related to internal NVRA parsing:
implicit removal of package "foo" during installing of package "foo-bar".

Index: lib/rpmte.c
--- lib/rpmte.c	14 Apr 2008 11:29:30 -0000	2.79.2.1
+++ lib/rpmte.c	16 Apr 2008 07:04:48 -0000	2.79.2.2
@@ -57,6 +57,8 @@
     p->arch = _free(p->arch);
     p->epoch = _free(p->epoch);
     p->name = _free(p->name);
+    p->version = _free(p->version);
+    p->release = _free(p->release);
     p->NEVR = _free(p->NEVR);
     p->NEVRA = _free(p->NEVRA);
     p->pkgid = _free(p->pkgid);
@@ -102,15 +104,17 @@
     xx = headerGet(h, he, 0);
 assert(he->p.str != NULL);
     p->NEVR = (xx ? he->p.str : xstrdup("?N-?V-?R.?A"));
-    p->name = xstrdup(p->NEVR);
-    /* XXX discard ".arch" from NVRA */
-    if ((p->release = strrchr(p->name, '.')) != NULL)
-	*p->release++ = '\0';
-    if ((p->release = strrchr(p->name, '-')) != NULL)
-	*p->release++ = '\0';
-    if ((p->version = strrchr(p->name, '-')) != NULL)
-	*p->version++ = '\0';
 
+    he->tag = RPMTAG_NAME;
+    xx = headerGet(h, he, 0);
+    p->name = (xx ? he->p.str : xstrdup("?RPMTAG_NAME?"));
+    he->tag = RPMTAG_VERSION;
+    xx = headerGet(h, he, 0);
+    p->version = (xx ? he->p.str : xstrdup("?RPMTAG_VERSION?"));
+    he->tag = RPMTAG_RELEASE;
+    xx = headerGet(h, he, 0);
+    p->release = (xx ? he->p.str : xstrdup("?RPMTAG_RELEASE?"));
+    
     p->db_instance = 0;
 
     he->tag = RPMTAG_HDRID;
