changeset 102:8c4482be0b4c

remove unreachable code
author Carl Byington <carl@five-ten-sg.com>
date Sun, 05 Oct 2008 11:54:37 -0700
parents 1fc33da23175
children 0af0bbe166e1
files ChangeLog libpst.spec.in src/libpst.c src/libpst.h
diffstat 4 files changed, 31 insertions(+), 86 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Sun Oct 05 09:56:32 2008 -0700
+++ b/ChangeLog	Sun Oct 05 11:54:37 2008 -0700
@@ -1,4 +1,4 @@
-LibPST 0.6.20 (2008-10-04)
+LibPST 0.6.20 (2008-10-05)
 ===============================
     	* add configure option --enable-dii=no to remove dependency on libgd.
 	* many fixes in pst2ldif by Robert Harris.
@@ -7,6 +7,7 @@
         * fix from Justin Greer for my_stristr()
 	* fix for orphan children when building descriptor tree
 	* avoid writing uninitialized data to debug log file
+	* remove unreachable code
 
 LibPST 0.6.19 (2008-09-14)
 ===============================
--- a/libpst.spec.in	Sun Oct 05 09:56:32 2008 -0700
+++ b/libpst.spec.in	Sun Oct 05 11:54:37 2008 -0700
@@ -47,7 +47,7 @@
 
 
 %changelog
-* Sat Oct 04 2008 Carl Byington <carl@five-ten-sg.com> - 0.6.20-1
+* Sun Oct 05 2008 Carl Byington <carl@five-ten-sg.com> - 0.6.20-1
 - add configure option --enable-dii=no to remove dependency on libgd.
 - many fixes in pst2ldif by Robert Harris.
 - add -D option to include deleted items, from Justin Greer
@@ -55,6 +55,7 @@
 - fix from Justin Greer for my_stristr()
 - fix for orphan children when building descriptor tree
 - avoid writing uninitialized data to debug log file
+- remove unreachable code
 
 * Sun Sep 14 2008 Carl Byington <carl@five-ten-sg.com> - 0.6.19-1
 - Fix base64 encoding that could create long lines.
--- a/src/libpst.c	Sun Oct 05 09:56:32 2008 -0700
+++ b/src/libpst.c	Sun Oct 05 11:54:37 2008 -0700
@@ -356,7 +356,6 @@
 
 int pst_load_index (pst_file *pf) {
     int  x;
-    uint64_t y;
     DEBUG_ENT("pst_load_index");
     if (!pf) {
         WARN(("Cannot load index for a NULL pst_file\n"));
@@ -367,8 +366,7 @@
     x = pst_build_id_ptr(pf, pf->index1, 0, pf->index1_back, 0, UINT64_MAX);
     DEBUG_INDEX(("build id ptr returns %i\n", x));
 
-    y = 0;
-    x = pst_build_desc_ptr(pf, pf->index2, 0, pf->index2_back, &y, (uint64_t)0x21, UINT64_MAX);
+    x = pst_build_desc_ptr(pf, pf->index2, 0, pf->index2_back, (uint64_t)0x21, UINT64_MAX);
     DEBUG_INDEX(("build desc ptr returns %i\n", x));
 
     DEBUG_CODE((void)pst_printDptr(pf, pf->d_head););
@@ -896,19 +894,20 @@
             add_descriptor_to_list(node, &parent->child, &parent->child_tail);
         }
         else {
-            //DEBUG_INDEX(("No parent %#"PRIx64", have an orphan child %#"PRIx64"\n", node->parent_id, node->id));
+            DEBUG_INDEX(("No parent %#"PRIx64", have an orphan child %#"PRIx64"\n", node->parent_id, node->id));
             add_descriptor_to_list(node, &pf->d_head, &pf->d_tail);
         }
     }
 }
 
 
-int pst_build_desc_ptr (pst_file *pf, off_t offset, int32_t depth, uint64_t linku1, uint64_t *high_id, uint64_t start_val, uint64_t end_val) {
+int pst_build_desc_ptr (pst_file *pf, off_t offset, int32_t depth, uint64_t linku1, uint64_t start_val, uint64_t end_val) {
     struct pst_table_ptr_structn table, table2;
     pst_descn desc_rec;
     pst_desc_ll *d_ptr=NULL, *parent=NULL;
-    int32_t x, item_count;
+    int32_t item_count;
     uint64_t old = start_val;
+    int x;
     char *buf = NULL, *bptr;
 
     DEBUG_ENT("pst_build_desc_ptr");
@@ -944,11 +943,8 @@
             DEBUG_RET();
             return -1;
         }
-        x = 0;
-        while (x < item_count) {
+        for (x=0; x<item_count; x++) {
             bptr += pst_decode_desc(pf, &desc_rec, bptr);
-            x++;
-            if (desc_rec.d_id == 0) break;
             DEBUG_INDEX(("[%i] Item(%#x) = [d_id = %#"PRIx64", desc_id = %#"PRIx64", list_id = %#"PRIx64", parent_id = %#x]\n",
                         depth, x, desc_rec.d_id, desc_rec.desc_id, desc_rec.list_id, desc_rec.parent_id));
             if ((desc_rec.d_id >= end_val) || (desc_rec.d_id < old)) {
@@ -959,7 +955,7 @@
                 return -1;
             }
             old = desc_rec.d_id;
-            if (x == (int32_t)1) {   // first entry
+            if (x == 0) {   // first entry
                 if (start_val && (desc_rec.d_id != start_val)) {
                     DEBUG_WARN(("This item isn't right. Must be corruption, or I got it wrong!\n"));
                     if (buf) free(buf);
@@ -967,72 +963,21 @@
                     return -1;
                 }
             }
-            // When duplicates found, just update the info.... perhaps this is correct functionality
-            DEBUG_INDEX(("Searching for existing record %#"PRIx64"\n", desc_rec.d_id));
-            if (desc_rec.d_id <= *high_id && (d_ptr = pst_getDptr(pf, desc_rec.d_id))) {
-                // This is probably unreachable code, originally written when the
-                // tree walking code was broken since it did not know about the node
-                // count. It always processed all the items in the node, even unused
-                // items, and that probably made it look like there were duplicate
-                // entries.
-                uint64_t bigzero = 0;
-                DEBUG_INDEX(("Updating Existing Values\n"));
-                d_ptr->list_index = pst_getID(pf, desc_rec.list_id);
-                d_ptr->desc = pst_getID(pf, desc_rec.desc_id);
-                DEBUG_INDEX(("\tdesc = %#"PRIx64"\tlist_index=%#"PRIx64"\n",
-                        (d_ptr->desc==NULL       ? bigzero : d_ptr->desc->id),
-                        (d_ptr->list_index==NULL ? bigzero : d_ptr->list_index->id)));
-                if (d_ptr->parent && desc_rec.parent_id != d_ptr->parent->id) {
-                    DEBUG_INDEX(("WARNING -- Parent of record has changed. Moving it\n"));
-                    //hmmm, we must move the record.
-                    // first we must remove from current location
-                    //   change previous record to point next to our next
-                    //     if no previous, then use parent's child
-                    //     if no parent then change pf->d_head;
-                    //   change next's prev to our prev
-                    //     if no next then change parent's child_tail
-                    //     if no parent then change pf->d_tail
-                    if (d_ptr->prev)
-                        d_ptr->prev->next = d_ptr->next;
-                    else if (d_ptr->parent)
-                        d_ptr->parent->child = d_ptr->next;
-                    else
-                        pf->d_head = d_ptr->next;
-
-                    if (d_ptr->next)
-                        d_ptr->next->prev = d_ptr->prev;
-                    else if (d_ptr->parent)
-                        d_ptr->parent->child_tail = d_ptr->prev;
-                    else
-                        pf->d_tail = d_ptr->prev;
-
-                    d_ptr->parent_id  = desc_rec.parent_id;
-                    d_ptr->prev       = NULL;
-                    d_ptr->next       = NULL;
-                    d_ptr->parent     = NULL;
-                    record_descriptor(pf, d_ptr);   // add to the global tree
-                }
-            } else {
-                if (*high_id < desc_rec.d_id) {
-                    DEBUG_INDEX(("Updating New High\n"));
-                    *high_id = desc_rec.d_id;
-                }
-                DEBUG_INDEX(("New Record %#"PRIx64" with parent %#x\n", desc_rec.d_id, desc_rec.parent_id));
-                d_ptr             = (pst_desc_ll*) xmalloc(sizeof(pst_desc_ll));
-                d_ptr->id         = desc_rec.d_id;
-                d_ptr->parent_id  = desc_rec.parent_id;
-                d_ptr->list_index = pst_getID(pf, desc_rec.list_id);
-                d_ptr->desc       = pst_getID(pf, desc_rec.desc_id);
-                d_ptr->prev       = NULL;
-                d_ptr->next       = NULL;
-                d_ptr->parent     = NULL;
-                d_ptr->child      = NULL;
-                d_ptr->child_tail = NULL;
-                d_ptr->no_child   = 0;
-                record_descriptor(pf, d_ptr);   // add to the global tree
-                //DEBUG_INDEX(("dump parent descriptor tree\n")); //!!
-                //d_ptr = pst_getDptr(pf, (uint64_t)-1);          //!!
-            }
+            DEBUG_INDEX(("New Record %#"PRIx64" with parent %#x\n", desc_rec.d_id, desc_rec.parent_id));
+            d_ptr             = (pst_desc_ll*) xmalloc(sizeof(pst_desc_ll));
+            d_ptr->id         = desc_rec.d_id;
+            d_ptr->parent_id  = desc_rec.parent_id;
+            d_ptr->list_index = pst_getID(pf, desc_rec.list_id);
+            d_ptr->desc       = pst_getID(pf, desc_rec.desc_id);
+            d_ptr->prev       = NULL;
+            d_ptr->next       = NULL;
+            d_ptr->parent     = NULL;
+            d_ptr->child      = NULL;
+            d_ptr->child_tail = NULL;
+            d_ptr->no_child   = 0;
+            record_descriptor(pf, d_ptr);   // add to the global tree
+            //DEBUG_INDEX(("dump parent descriptor tree\n")); //!!
+            //d_ptr = pst_getDptr(pf, (uint64_t)-1);          //!!
         }
     } else {
         // this node contains node pointers
@@ -1043,12 +988,10 @@
             DEBUG_RET();
             return -1;
         }
-        x = 0;
-        while (x < item_count) {
+        for (x=0; x<item_count; x++) {
             bptr += pst_decode_table(pf, &table, bptr);
-            x++;
             if (table.start == 0) break;
-            if (x < item_count) {
+            if (x < (item_count-1)) {
                 (void)pst_decode_table(pf, &table2, bptr);
             }
             else {
@@ -1063,7 +1006,7 @@
                 return -1;
             }
             old = table.start;
-            if (x == (int32_t)1) {   // first entry
+            if (x == 0) {   // first entry
                 if (start_val && (table.start != start_val)) {
                     DEBUG_WARN(("This table isn't right. Must be corruption, or I got it wrong!\n"));
                     if (buf) free(buf);
@@ -1071,7 +1014,7 @@
                     return -1;
                 }
             }
-            (void)pst_build_desc_ptr(pf, table.offset, depth+1, table.u1, high_id, table.start, table2.start);
+            (void)pst_build_desc_ptr(pf, table.offset, depth+1, table.u1, table.start, table2.start);
         }
     }
     if (buf) free(buf);
--- a/src/libpst.h	Sun Oct 05 09:56:32 2008 -0700
+++ b/src/libpst.h	Sun Oct 05 11:54:37 2008 -0700
@@ -569,7 +569,7 @@
 int            pst_load_extended_attributes(pst_file *pf);
 
 int            pst_build_id_ptr(pst_file *pf, off_t offset, int32_t depth, uint64_t linku1, uint64_t start_val, uint64_t end_val);
-int            pst_build_desc_ptr(pst_file *pf, off_t offset, int32_t depth, uint64_t linku1, uint64_t *high_id, uint64_t start_val, uint64_t end_val);
+int            pst_build_desc_ptr(pst_file *pf, off_t offset, int32_t depth, uint64_t linku1, uint64_t start_val, uint64_t end_val);
 pst_item*      pst_getItem(pst_file *pf, pst_desc_ll *d_ptr);
 pst_item*      pst_parse_item (pst_file *pf, pst_desc_ll *d_ptr);
 pst_num_array* pst_parse_block(pst_file *pf, uint64_t block_id, pst_index2_ll *i2_head, pst_num_array *na_head);