[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

gEDA-cvs: branch: stable-1.2 updated (1.2.0-20070902-13-g0174a5b)



The branch, stable-1.2 has been updated
       via  0174a5b7fd726e3a10a73d81e731b7a990644ca4 (commit)
       via  89aca624e9e1b4fd77ae785af372c9c734bdc6fe (commit)
       via  e083d30569fdca87c9aa07ca55b7440b85b7b125 (commit)
       via  805452b8ce8be5c85fdfc87ba3281192decdbcd9 (commit)
       via  17cd44a285993915e1ba73f0bcba7f6120df7a0a (commit)
       via  da5151addbfba61fb36fffbdd4710244493964c8 (commit)
       via  17aa737566e5a4198ef541a3f559b096277ce651 (commit)
       via  3a59793aa6999fe233a8ad97acdeddecb1dd2df9 (commit)
       via  9436a72692251d5fecadd8660cbc0ef4d7c5234f (commit)
       via  2200b62ee03f118016358ed7b96c3e002cfb06c4 (commit)
       via  19dfabcb4748aacb31b571a1d5db8cc3a49b287f (commit)
       via  f6769493448df1b107292ded42195c9e39b666d6 (commit)
       via  866c288c01765b038475baedede173ab29619d3a (commit)
      from  88fcb8d1bcdaa1436572d6a0ebe86f4df242a8d6 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.


=========
 Summary
=========

 gattrib/configure.ac                |    3 +++
 gattrib/lib/Makefile.am             |    4 +++-
 gattrib/src/x_window.c              |    4 ++++
 gnetlist/configure.ac               |    3 +++
 gnetlist/tests/spice-sdb/tests.list |    2 +-
 gschem/autogen.sh                   |   12 +++++++-----
 gschem/configure.ac.in              |    3 +++
 gschem/scripts/gschemdoc.sh         |    6 +++---
 gschem/src/a_zoom.c                 |    1 +
 gschem/src/gschem_dialog.c          |    5 +++++
 gschem/src/i_basic.c                |    4 ++--
 gschem/src/o_copy.c                 |   11 ++++++++---
 gschem/src/x_dialog.c               |    3 +++
 gschem/src/x_event.c                |    5 +++--
 gschem/src/x_fileselect.c           |   22 ++++++++++++++++++++++
 gschem/src/x_menus.c                |    4 ++--
 gsymcheck/configure.ac              |    3 +++
 libgeda/autogen.sh                  |   12 +++++++-----
 libgeda/configure.ac                |    3 +++
 libgeda/include/prototype.h         |    1 +
 libgeda/src/o_arc_basic.c           |   13 +------------
 libgeda/src/o_attrib.c              |   35 ++++++++++++++++++++++++++++++++---
 libgeda/src/o_box_basic.c           |   13 +------------
 libgeda/src/o_bus_basic.c           |   14 +-------------
 libgeda/src/o_circle_basic.c        |   15 ++-------------
 libgeda/src/o_complex_basic.c       |   28 ++--------------------------
 libgeda/src/o_line_basic.c          |   14 ++------------
 libgeda/src/o_list.c                |   24 +++++++++++++++++-------
 libgeda/src/o_net_basic.c           |   14 +-------------
 libgeda/src/o_picture.c             |   16 +++-------------
 libgeda/src/o_pin_basic.c           |   13 +------------
 libgeda/src/s_clib.c                |    1 +
 libgeda/src/s_encoding.c            |   14 +++++++++-----
 libgeda/src/s_textbuffer.c          |    1 +
 utils/configure.ac                  |    3 +++
 35 files changed, 164 insertions(+), 165 deletions(-)


=================
 Commit Messages
=================

commit 0174a5b7fd726e3a10a73d81e731b7a990644ca4
Author: Ales Hvezda <ahvezda@xxxxxxxx>
Date:   Sat Dec 29 09:52:29 2007 -0500

    Commented out test which now no longer runs correctly because of slotting fix.
    
    The slotting fix is commit 5852e531717ba947b7acca39e50f71edd5921f06.
    (cherry picked from commit 9d3166d44b07da85ac1c4e0185daf0c67e7096ea)

:100644 100644 dfc9d69... 867c13c... M	gnetlist/tests/spice-sdb/tests.list

commit 89aca624e9e1b4fd77ae785af372c9c734bdc6fe
Author: Ales Hvezda <ahvezda@xxxxxxxx>
Date:   Sat Dec 29 09:49:46 2007 -0500

    Fix problem where changing slot= would not update pins
    
    Known to break spice-sdb's slotted component handling, however users
    are much more likely to encounter the former breakage.  Original patch
    removed the offending code, but this patch just #if's it out for now.
    (cherry picked from commit 5852e531717ba947b7acca39e50f71edd5921f06)

:100644 100644 104f2b9... 7b38a75... M	libgeda/src/o_attrib.c

commit e083d30569fdca87c9aa07ca55b7440b85b7b125
Author: Peter Clifton <pcjc2@xxxxxxxxx>
Date:   Wed Sep 5 17:39:55 2007 +0100

    Fix loading of embedded images.
    
    Various bugs in the base64 decoding function were preventing the correct
    decoding of the embedded image. In addition, it was possible for this code
    to access invalid memory - possibly leading to a crash.
    
    Additionally removes extra \n inserted between lines of the base64 input.

:100644 100644 d334c21... a2d72fe... M	libgeda/src/o_picture.c
:100644 100644 f92d742... c1df554... M	libgeda/src/s_encoding.c

commit 805452b8ce8be5c85fdfc87ba3281192decdbcd9
Author: Peter Clifton <pcjc2@xxxxxxxxx>
Date:   Wed Sep 5 12:46:57 2007 +0100

    Fix memory corruption and possible segfault copying attributes
    
    If an object (but not all its attributes) was selected and copied, dangling
    pointers were left in the un-copied attributes. A subsequent copy operation
    containing those missed attributes would attempt to reattach them to the
    copy of their parent. If this had been deleted in the mean time, memory
    corruption and a possible segfault would occur.
    
    Consolidates the duplicated code which sets the ATTRIB property "copied_to"
    into a helper function, o_attrib_list_copied_to(). This is also used to
    clean up after copy operations.

:100644 100644 a78b810... 3253973... M	gschem/src/o_copy.c
:100644 100644 8ecd553... ec9aa4f... M	libgeda/include/prototype.h
:100644 100644 f750cb5... 060a773... M	libgeda/src/o_arc_basic.c
:100644 100644 c9f5c58... 104f2b9... M	libgeda/src/o_attrib.c
:100644 100644 d700aab... e1f9c22... M	libgeda/src/o_box_basic.c
:100644 100644 83e97e4... 40ca803... M	libgeda/src/o_bus_basic.c
:100644 100644 a2c0891... fcebc75... M	libgeda/src/o_circle_basic.c
:100644 100644 03fa010... 175a231... M	libgeda/src/o_complex_basic.c
:100644 100644 3ec08a8... d091284... M	libgeda/src/o_line_basic.c
:100644 100644 bb1d7db... 64f7397... M	libgeda/src/o_list.c
:100644 100644 89e34cf... 16f8148... M	libgeda/src/o_net_basic.c
:100644 100644 6edff47... d334c21... M	libgeda/src/o_picture.c
:100644 100644 64c8278... c5945b3... M	libgeda/src/o_pin_basic.c

commit 17cd44a285993915e1ba73f0bcba7f6120df7a0a
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Date:   Sat Dec 22 21:46:25 2007 +0000

    gschem: Don't lose close confirmation dialog behind window
    
    It was possible to lose gschem's close confirmation dialog behind the
    gschem main window, which could lead to data loss as it was then very
    difficult to recover gracefully.

:100644 100644 1c1b910... 209012a... M	gschem/src/x_dialog.c

commit da5151addbfba61fb36fffbdd4710244493964c8
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Date:   Wed Dec 12 19:19:13 2007 +0000

    gschem: Warn before overwriting files. [1846593]
    
    Also fixes a memory leak in the file save function.

:100644 100644 adc491f... b777376... M	gschem/src/x_fileselect.c

commit 17aa737566e5a4198ef541a3f559b096277ce651
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Date:   Thu Nov 29 00:29:15 2007 +0000

    gschem: Fix "failed to set sensitivity" log spam
    
    A bad string in i_basic.c was making x_menus_sensitivity() spam error
    messages to the log.  Altered the log message to make it easier to fix
    in the future.
    
    Bug was introduced in commit 93199b2f50c31691722ed154fc42fd4c01a2dac5
    by editing menu definitions in system-gschemrc without updating
    i_basic.c.

:100644 100644 e0e8ab3... 34e8c09... M	gschem/src/i_basic.c
:100644 100644 119a51d... a4dee4e... M	gschem/src/x_menus.c

commit 3a59793aa6999fe233a8ad97acdeddecb1dd2df9
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Date:   Fri Nov 23 21:43:49 2007 +0000

    gschemdoc: Quote variables in case they contain spaces. [1792986]
    
    In the gschemdoc shell script, the variables $pdfreader and $browser
    need quoting on lines 86, 113 and 128 (eg "${browser}"). Otherwise,
    paths with spaces in, like "Program Files/Mozilla Firefox" commonly
    used in Windows don't work.
    
    Based on anonymous SourceForge patch.

:100644 100644 ee6c1cb... acae51c... M	gschem/scripts/gschemdoc.sh

commit 9436a72692251d5fecadd8660cbc0ef4d7c5234f
Author: Tomaž Šolc <tomaz.solc@xxxxxxxxxx>
Date:   Fri Nov 23 21:42:50 2007 +0000

    Compilation fixes for Mac OS X 10.5 [1832417]
    
    This patch contains changes to gEDA source tree that were necessary to
    compile on Mac OS X (10.5 Leopard, PPC).

:100644 100644 1a8b060... f8feb22... M	gattrib/configure.ac
:100644 100644 fe89f75... 1c9454e... M	gnetlist/configure.ac
:100755 100755 ffefb13... b06a5b7... M	gschem/autogen.sh
:100644 100644 c331141... 6a02506... M	gschem/configure.ac.in
:100644 100644 f583994... 5af2cbe... M	gsymcheck/configure.ac
:100755 100755 e29a856... fe4732a... M	libgeda/autogen.sh
:100644 100644 6e4e1ce... 36e0701... M	libgeda/configure.ac
:100644 100644 4a5d049... 700cb97... M	utils/configure.ac

commit 2200b62ee03f118016358ed7b96c3e002cfb06c4
Author: Peter Clifton <pcjc2@xxxxxxxxx>
Date:   Tue Nov 6 23:11:41 2007 +0000

    Free gdk events obtained with gtk_event_get().
    
    gtk_event_put() copies an event given to it, so if we retrieve an event
    and re-push it into the event queue, we still need to free our copy.

:100644 100644 21d244d... 70fb0a8... M	gschem/src/a_zoom.c

commit 19dfabcb4748aacb31b571a1d5db8cc3a49b287f
Author: Hamish Moffatt <hamish@xxxxxxxxxx>
Date:   Thu Oct 4 18:40:05 2007 +0100

    Fix install location of gattrib-menus.xml to $GEDADATADIR

:100644 100644 919c3db... 9aee358... M	gattrib/lib/Makefile.am

commit f6769493448df1b107292ded42195c9e39b666d6
Author: Ales Hvezda <ahvezda@xxxxxxxx>
Date:   Wed Sep 12 02:37:55 2007 -0400

    Fixed a whole bunch of gtk+ 2.4.x and misc issues building on an older box
    
    This is a fix for (Patch#) 1789290 libgeda-1.2.0 fprintf which supplied a
    similar patch which fixes the issues in libgeda/src/s_clib.c and
    libgeda/src/s_textbuffer.c.  In the future, all releases will be built with
    gtk+ 2.4.x so that these sorts of problems do not get released.

:100644 100644 bb4f18f... c65691e... M	gattrib/src/x_window.c
:100644 100644 ec28037... 6751491... M	gschem/src/gschem_dialog.c
:100644 100644 f7c00b6... 119a51d... M	gschem/src/x_menus.c
:100644 100644 7bb4824... 082ff08... M	libgeda/src/s_clib.c
:100644 100644 cb0f309... 5ce865e... M	libgeda/src/s_textbuffer.c

commit 866c288c01765b038475baedede173ab29619d3a
Author: Peter Clifton <pcjc2@xxxxxxxxx>
Date:   Sat Sep 8 23:54:12 2007 +0100

    Fix grid snapping in "Edit->Mirror Mode"
    
    Where the user selectes Edit->Mirror Mode, then clicks a point about which
    to mirror, the snap operation on the mouse coordinates was not taking place
    until after the mirror. Bug was introduced with noscreen changes.

:100644 100644 3202ec6... fa29bf1... M	gschem/src/x_event.c

=========
 Changes
=========

commit 0174a5b7fd726e3a10a73d81e731b7a990644ca4
Author: Ales Hvezda <ahvezda@xxxxxxxx>
Date:   Sat Dec 29 09:52:29 2007 -0500

    Commented out test which now no longer runs correctly because of slotting fix.
    
    The slotting fix is commit 5852e531717ba947b7acca39e50f71edd5921f06.
    (cherry picked from commit 9d3166d44b07da85ac1c4e0185daf0c67e7096ea)

diff --git a/gnetlist/tests/spice-sdb/tests.list b/gnetlist/tests/spice-sdb/tests.list
index dfc9d69..867c13c 100644
--- a/gnetlist/tests/spice-sdb/tests.list
+++ b/gnetlist/tests/spice-sdb/tests.list
@@ -33,4 +33,4 @@ JD_Sort_nomunge_longopt | LVDfoo.sch | gafrc models/openIP_5.cir sym/LVD.sym | -
 
 
 # Tests for slotted parts
-SlottedOpamps | SlottedOpamps.sch | gafrc sym/LM324_slotted-1.sym | |
+#SlottedOpamps | SlottedOpamps.sch | gafrc sym/LM324_slotted-1.sym | |

commit 89aca624e9e1b4fd77ae785af372c9c734bdc6fe
Author: Ales Hvezda <ahvezda@xxxxxxxx>
Date:   Sat Dec 29 09:49:46 2007 -0500

    Fix problem where changing slot= would not update pins
    
    Known to break spice-sdb's slotted component handling, however users
    are much more likely to encounter the former breakage.  Original patch
    removed the offending code, but this patch just #if's it out for now.
    (cherry picked from commit 5852e531717ba947b7acca39e50f71edd5921f06)

diff --git a/libgeda/src/o_attrib.c b/libgeda/src/o_attrib.c
index 104f2b9..7b38a75 100644
--- a/libgeda/src/o_attrib.c
+++ b/libgeda/src/o_attrib.c
@@ -2135,13 +2135,10 @@ void o_attrib_slot_update(TOPLEVEL *w_current, OBJECT *object)
   OBJECT *o_slot_attrib;
   OBJECT *o_pin_object;
   OBJECT *o_pinnum_object;
-  OBJECT *o_pinseq_object;
   char *string;
   char *slotdef;
   int slot;
   int pin_counter;    /* Internal pin counter private to this fcn. */
-  char *new_pinseq;   /* New pinseq = (slot*(number of pins -1) + pin_count */
-  int numpins;        /* Total number of pins on this slot */
   char* current_pin;  /* text from slotdef= to be made into pinnumber= */
   char* cptr;         /* char pointer pointing to pinnumbers in slotdef=#:#,#,# string */
 
@@ -2221,6 +2218,13 @@ void o_attrib_slot_update(TOPLEVEL *w_current, OBJECT *object)
       	g_free(string);
       }
 
+/* This block of code is commented out since it breaks slotting in general. */
+/* A better way should be found for spice-sdb's use. */
+#if 0 
+  /* these variables are used in this block and should be moved above */
+  char *new_pinseq;   /* New pinseq = (slot*(number of pins -1) + pin_count */
+  int numpins;        /* Total number of pins on this slot */
+  OBJECT *o_pinseq_object;
 
       /* Now update pinseq= attrib on this part. */
       /* Algorithm:
@@ -2266,6 +2270,7 @@ void o_attrib_slot_update(TOPLEVEL *w_current, OBJECT *object)
       if (string) {
       	g_free(string);
       }
+#endif /* commented out since it breaks slotting */
       
       pin_counter++;
     } else {

commit e083d30569fdca87c9aa07ca55b7440b85b7b125
Author: Peter Clifton <pcjc2@xxxxxxxxx>
Date:   Wed Sep 5 17:39:55 2007 +0100

    Fix loading of embedded images.
    
    Various bugs in the base64 decoding function were preventing the correct
    decoding of the embedded image. In addition, it was possible for this code
    to access invalid memory - possibly leading to a crash.
    
    Additionally removes extra \n inserted between lines of the base64 input.

diff --git a/libgeda/src/o_picture.c b/libgeda/src/o_picture.c
index d334c21..a2d72fe 100644
--- a/libgeda/src/o_picture.c
+++ b/libgeda/src/o_picture.c
@@ -167,7 +167,6 @@ OBJECT *o_picture_read(TOPLEVEL *w_current, OBJECT *object_list,
 
       if (g_strcasecmp(line, ".\n") != 0) {
 	encoded_picture=g_string_append (encoded_picture, line);
-	encoded_picture=g_string_append (encoded_picture, "\n");
       }
       else {
 	finished = 1;
@@ -178,6 +177,7 @@ OBJECT *o_picture_read(TOPLEVEL *w_current, OBJECT *object_list,
     pixdata_serialized_data=s_encoding_base64_decode(encoded_picture->str,
 						     encoded_picture->len,
 						     &pixdata_serialized_length);
+
     if (pixdata_serialized_data == NULL) {
       fprintf(stderr, "Error decoding picture.\n");      
       s_log_message ("Error decoding picture.\n");
diff --git a/libgeda/src/s_encoding.c b/libgeda/src/s_encoding.c
index f92d742..c1df554 100644
--- a/libgeda/src/s_encoding.c
+++ b/libgeda/src/s_encoding.c
@@ -204,13 +204,14 @@ gchar *s_encoding_base64_decode (gchar* src, guint srclen, guint* dstlenp)
   dst = g_new(gchar, srclen+1);
   *dstlenp = srclen+1;
 
-  while (srclen-- > 0) 
+  while (srclen > 0)
     {
+      srclen--;
       ch = *src++;
-      if (s_encoding_Base64_rank[ch]==255) /* Skip any non-base64 anywhere */
-	continue;
       if (ch == s_encoding_Pad64) 
 	break;
+      if (s_encoding_Base64_rank[ch]==255) /* Skip any non-base64 anywhere */
+	continue;
 
       pos = s_encoding_Base64_rank[ch];
 
@@ -266,9 +267,11 @@ gchar *s_encoding_base64_decode (gchar* src, guint srclen, guint* dstlenp)
 	  return NULL;
 	case 2:             /* Valid, means one byte of info */
                                 /* Skip any number of spaces. */
-	  while (srclen-- > 0) 
+	  while (srclen > 0)
 	    {
+	      srclen--;
 	      ch = *src++;
+	      if (ch == s_encoding_Pad64) break;
 	      if (s_encoding_Base64_rank[ch] != 255) break;
 	    }
                                 /* Make sure there is another trailing = sign. */
@@ -284,8 +287,9 @@ gchar *s_encoding_base64_decode (gchar* src, guint srclen, guint* dstlenp)
                                  * We know this char is an =.  Is there anything but
                                  * whitespace after it?
                                  */
-	  while (srclen-- > 0) 
+	  while (srclen > 0)
 	    {
+	      srclen--;
 	      ch = *src++;
 	      if (s_encoding_Base64_rank[ch] != 255) 
 		{

commit 805452b8ce8be5c85fdfc87ba3281192decdbcd9
Author: Peter Clifton <pcjc2@xxxxxxxxx>
Date:   Wed Sep 5 12:46:57 2007 +0100

    Fix memory corruption and possible segfault copying attributes
    
    If an object (but not all its attributes) was selected and copied, dangling
    pointers were left in the un-copied attributes. A subsequent copy operation
    containing those missed attributes would attempt to reattach them to the
    copy of their parent. If this had been deleted in the mean time, memory
    corruption and a possible segfault would occur.
    
    Consolidates the duplicated code which sets the ATTRIB property "copied_to"
    into a helper function, o_attrib_list_copied_to(). This is also used to
    clean up after copy operations.

diff --git a/gschem/src/o_copy.c b/gschem/src/o_copy.c
index a78b810..3253973 100644
--- a/gschem/src/o_copy.c
+++ b/gschem/src/o_copy.c
@@ -405,9 +405,6 @@ void o_copy_end(TOPLEVEL *w_current)
                                  w_current,
                                  object->attached_to->copied_to);
 #endif
-
-            /* satisfied copy request */
-            object->attached_to->copied_to = NULL;
           }
         }
 
@@ -449,6 +446,14 @@ void o_copy_end(TOPLEVEL *w_current)
     s_current = s_current->next;
   }
 
+  /* Clean up dangling ATTRIB.copied_to pointers */
+  s_current = geda_list_get_glist( w_current->page_current->selection_list );
+  while(s_current != NULL) {
+    object = s_current->data;
+    o_attrib_list_copied_to (object->attribs, NULL);
+    s_current = g_list_next (s_current);
+  }
+
   /* This is commented out since it breaks the copy of objects.  */
   /* Required connection information is thrown away for some reason */
   /* Of course, commenting this out, will probably break the rotation */
diff --git a/libgeda/include/prototype.h b/libgeda/include/prototype.h
index 8ecd553..ec9aa4f 100644
--- a/libgeda/include/prototype.h
+++ b/libgeda/include/prototype.h
@@ -205,6 +205,7 @@ int o_attrib_count_toplevel(TOPLEVEL *w_current, char *name);
 char *o_attrib_search_toplevel_all(PAGE *page_head, char *name);
 OBJECT **o_attrib_return_attribs(OBJECT *object_list, OBJECT *sel_object);
 void o_attrib_free_returned(OBJECT **found_objects);
+void o_attrib_list_copied_to(ATTRIB *list, OBJECT *to_obj);
 
 /* o_basic.c */
 int inside_region(int xmin, int ymin, int xmax, int ymax, int x, int y);
diff --git a/libgeda/src/o_arc_basic.c b/libgeda/src/o_arc_basic.c
index f750cb5..060a773 100644
--- a/libgeda/src/o_arc_basic.c
+++ b/libgeda/src/o_arc_basic.c
@@ -150,7 +150,6 @@ OBJECT *o_arc_copy(TOPLEVEL *w_current, OBJECT *list_tail,
 		   OBJECT *o_current)
 {
   OBJECT *new_obj;
-  ATTRIB *a_current;
   int color;
 
   if (o_current->saved_color == -1) {
@@ -170,18 +169,8 @@ OBJECT *o_arc_copy(TOPLEVEL *w_current, OBJECT *list_tail,
                      o_current->line_length, o_current->line_space);
   o_set_fill_options(w_current, new_obj,
                      FILLING_HOLLOW, -1, -1, -1, -1, -1);
-	
-  a_current = o_current->attribs;
-  if (a_current) {
-    while (a_current) {
 
-      /* head attrib node has prev = NULL */
-      if (a_current->prev != NULL) {
-        a_current->copied_to = new_obj;
-      }
-      a_current = a_current->next;
-    }
-  }
+  o_attrib_list_copied_to (o_current->attribs, new_obj);
 
   return(new_obj);
 }
diff --git a/libgeda/src/o_attrib.c b/libgeda/src/o_attrib.c
index c9f5c58..104f2b9 100644
--- a/libgeda/src/o_attrib.c
+++ b/libgeda/src/o_attrib.c
@@ -2557,3 +2557,27 @@ void o_attrib_free_returned(OBJECT **found_objects)
 
   g_free(found_objects);
 }
+
+
+/*! \brief Set the copied_to property on a list of attributes
+ *  \par Function Description
+ *  Sets the copied_to property on a list of attributes.
+ *  Used when copying objects with attributes.
+ *
+ *  \param [in] list    List of attributes to set
+ *  \param [in] to_obj  OBEJCT to set copied_to
+ */
+void o_attrib_list_copied_to(ATTRIB *list, OBJECT *to_obj)
+{
+  ATTRIB *a_current;
+
+  a_current = list;
+  while ( a_current ) {
+
+    /* head attrib node has prev = NULL */
+    if (a_current->prev != NULL) {
+      a_current->copied_to = to_obj;
+    }
+    a_current = a_current->next;
+  }
+}
diff --git a/libgeda/src/o_box_basic.c b/libgeda/src/o_box_basic.c
index d700aab..e1f9c22 100644
--- a/libgeda/src/o_box_basic.c
+++ b/libgeda/src/o_box_basic.c
@@ -142,7 +142,6 @@ OBJECT *o_box_add(TOPLEVEL *w_current, OBJECT *object_list,
 OBJECT *o_box_copy(TOPLEVEL *w_current, OBJECT *list_tail, OBJECT *o_current)
 {
   OBJECT *new_obj;
-  ATTRIB *a_current;
   int color;
 	
   if (o_current->saved_color == -1) {
@@ -188,17 +187,7 @@ OBJECT *o_box_copy(TOPLEVEL *w_current, OBJECT *list_tail, OBJECT *o_current)
   o_box_recalc(w_current, new_obj);
 
   /* new_obj->attribute = 0;*/
-  a_current = o_current->attribs;
-  if (a_current) {
-    while ( a_current ) {
-      
-      /* head attrib node has prev = NULL */
-      if (a_current->prev != NULL) {
-	a_current->copied_to = new_obj;
-      }
-      a_current = a_current->next;
-    }
-  }
+  o_attrib_list_copied_to (o_current->attribs, new_obj);
 
   /* return the new tail of the object list */
   return(new_obj);
diff --git a/libgeda/src/o_bus_basic.c b/libgeda/src/o_bus_basic.c
index 83e97e4..40ca803 100644
--- a/libgeda/src/o_bus_basic.c
+++ b/libgeda/src/o_bus_basic.c
@@ -245,7 +245,6 @@ void o_bus_translate_world(TOPLEVEL *w_current, int x1, int y1, OBJECT *object)
 OBJECT *o_bus_copy(TOPLEVEL *w_current, OBJECT *list_tail, OBJECT *o_current)
 {
   OBJECT *new_obj;
-  ATTRIB *a_current;
   int color;
 
   if (o_current->saved_color == -1) {
@@ -268,18 +267,7 @@ OBJECT *o_bus_copy(TOPLEVEL *w_current, OBJECT *list_tail, OBJECT *o_current)
   new_obj->line->x[1] = o_current->line->x[1];
   new_obj->line->y[1] = o_current->line->y[1];
 
-  a_current = o_current->attribs;
-
-  if (a_current) {
-    while ( a_current ) {
-
-      /* head attrib node has prev = NULL */
-      if (a_current->prev != NULL) {
-        a_current->copied_to = new_obj;
-      }
-      a_current = a_current->next;
-    }
-  }
+  o_attrib_list_copied_to (o_current->attribs, new_obj);
 
   return(new_obj);
 }
diff --git a/libgeda/src/o_circle_basic.c b/libgeda/src/o_circle_basic.c
index a2c0891..fcebc75 100644
--- a/libgeda/src/o_circle_basic.c
+++ b/libgeda/src/o_circle_basic.c
@@ -129,7 +129,6 @@ OBJECT *o_circle_copy(TOPLEVEL *w_current, OBJECT *list_tail,
 		      OBJECT *o_current)
 {
   OBJECT *new_obj;
-  ATTRIB *a_current;
   int color;
 
   if (o_current->saved_color == -1) {
@@ -172,18 +171,8 @@ OBJECT *o_circle_copy(TOPLEVEL *w_current, OBJECT *list_tail,
   o_circle_recalc(w_current, new_obj);
 
   /*	new_obj->attribute = 0;*/
-  a_current = o_current->attribs;
-  if (a_current) {
-    while ( a_current ) {
-      
-      /* head attrib node has prev = NULL */
-      if (a_current->prev != NULL) {
-	a_current->copied_to = new_obj;
-      }
-      a_current = a_current->next;
-    }
-  }
-  
+  o_attrib_list_copied_to (o_current->attribs, new_obj);
+
   return(new_obj);
 }
 
diff --git a/libgeda/src/o_complex_basic.c b/libgeda/src/o_complex_basic.c
index 03fa010..175a231 100644
--- a/libgeda/src/o_complex_basic.c
+++ b/libgeda/src/o_complex_basic.c
@@ -944,7 +944,6 @@ OBJECT *o_complex_copy(TOPLEVEL *w_current, OBJECT *list_tail,
 		       OBJECT *o_current)
 {
   OBJECT *new_obj=NULL;
-  ATTRIB *a_current;
   int color;
   int selectable;
   const CLibSymbol *clib = NULL;
@@ -979,18 +978,7 @@ OBJECT *o_complex_copy(TOPLEVEL *w_current, OBJECT *list_tail,
   /* here you need to create a list of attributes which need to be 
    * connected to the new list, probably make an attribute list and
    * fill it with sid's of the attributes */
-  a_current = o_current->attribs;
-  if (a_current) {
-    while ( a_current ) {
-
-      /* head attrib node has prev = NULL */	
-      if (a_current->prev != NULL) {
-        a_current->copied_to = new_obj;	
-      }
-	
-      a_current = a_current->next;
-    }
-  }
+  o_attrib_list_copied_to (o_current->attribs, new_obj);
 
   return(new_obj);
 }
@@ -1004,7 +992,6 @@ OBJECT *o_complex_copy_embedded(TOPLEVEL *w_current, OBJECT *list_tail,
 {
   OBJECT *new_obj=NULL;
   OBJECT *temp_list;
-  ATTRIB *a_current;
   int color;
   int selectable;
 
@@ -1040,18 +1027,7 @@ OBJECT *o_complex_copy_embedded(TOPLEVEL *w_current, OBJECT *list_tail,
   /* here you need to create a list of attributes which need to be 
    * connected to the new list, probably make an attribute list and
    * fill it with sid's of the attributes */
-  a_current = o_current->attribs;
-  if (a_current) {
-    while ( a_current ) {
-
-      /* head attrib node has prev = NULL */	
-      if (a_current->prev != NULL) {
-        a_current->copied_to = new_obj;	
-      }
-	
-      a_current = a_current->next;
-    }
-  }
+  o_attrib_list_copied_to (o_current->attribs, new_obj);
 
   return(new_obj);
 }
diff --git a/libgeda/src/o_line_basic.c b/libgeda/src/o_line_basic.c
index 3ec08a8..d091284 100644
--- a/libgeda/src/o_line_basic.c
+++ b/libgeda/src/o_line_basic.c
@@ -124,7 +124,6 @@ OBJECT *o_line_add(TOPLEVEL *w_current, OBJECT *object_list,
 OBJECT *o_line_copy(TOPLEVEL *w_current, OBJECT *list_tail, OBJECT *o_current)
 {
   OBJECT *new_obj;
-  ATTRIB *a_current;
   int color;
 
   if (o_current->saved_color == -1) {
@@ -170,17 +169,8 @@ OBJECT *o_line_copy(TOPLEVEL *w_current, OBJECT *list_tail, OBJECT *o_current)
   o_line_recalc(w_current, o_current);
   
   /* new_obj->attribute = 0;*/
-  a_current = o_current->attribs;
-  if (a_current) {
-    while ( a_current ) {
-      /* head attrib node has prev = NULL */
-      if (a_current->prev != NULL) {
-	a_current->copied_to = new_obj;
-      }
-      a_current = a_current->next;
-    }
-  }
-  
+  o_attrib_list_copied_to (o_current->attribs, new_obj);
+
   /* return the new tail of the object list */
   return(new_obj);
 }
diff --git a/libgeda/src/o_list.c b/libgeda/src/o_list.c
index bb1d7db..64f7397 100644
--- a/libgeda/src/o_list.c
+++ b/libgeda/src/o_list.c
@@ -219,16 +219,20 @@ OBJECT *o_list_copy_all(TOPLEVEL *w_current, OBJECT *src_list_head,
           o_attrib_attach(w_current,
                           w_current->page_current->object_parent,
                           dest, src->attached_to->copied_to);     
-
-                                /* satisfied copy request */
-          src->attached_to->copied_to = NULL;
-        } 
+        }
       }
     }
 
     src = src->next;
   }
 
+  /* Clean up dangling ATTRIB.copied_to pointers */
+  src = src_list_head;
+  while(src != NULL) {
+    o_attrib_list_copied_to (src->attribs, NULL);
+    src = src->next;
+  }
+
   w_current->ADDING_SEL = adding_sel_save;
   w_current->page_current->object_parent = temp_parent;
 
@@ -336,9 +340,7 @@ OBJECT *o_list_copy_all_selection2(TOPLEVEL *w_current,
           o_attrib_attach(w_current,
                           w_current->page_current->object_parent,
                           dest, object->attached_to->copied_to);     
-                                /* satisfied copy request */
-          object->attached_to->copied_to = NULL;
-        } 
+        }
       }
     }
 
@@ -348,6 +350,14 @@ OBJECT *o_list_copy_all_selection2(TOPLEVEL *w_current,
     src = src->next;
   }
 
+  /* Clean up dangling ATTRIB.copied_to pointers */
+  src = src_list_head;
+  while(src != NULL) {
+    object = src->data;
+    o_attrib_list_copied_to (object->attribs, NULL);
+    src = g_list_next (src);
+  }
+
   w_current->ADDING_SEL = adding_sel_save;
   w_current->page_current->object_parent = temp_parent;
 
diff --git a/libgeda/src/o_net_basic.c b/libgeda/src/o_net_basic.c
index 89e34cf..16f8148 100644
--- a/libgeda/src/o_net_basic.c
+++ b/libgeda/src/o_net_basic.c
@@ -258,7 +258,6 @@ OBJECT *o_net_copy(TOPLEVEL *w_current, OBJECT *list_tail,
 		   OBJECT *o_current)
 {
   OBJECT *new_obj;
-  ATTRIB *a_current;
   int color;
 
   if (o_current->saved_color == -1) {
@@ -280,18 +279,7 @@ OBJECT *o_net_copy(TOPLEVEL *w_current, OBJECT *list_tail,
   new_obj->line->x[1] = o_current->line->x[1];
   new_obj->line->y[1] = o_current->line->y[1];
 
-  a_current = o_current->attribs;
-
-  if (a_current) {
-    while (a_current) {
-
-      /* head attrib node has prev = NULL */
-      if (a_current->prev != NULL) {
-        a_current->copied_to = new_obj;
-      }
-      a_current = a_current->next;
-    }
-  }
+  o_attrib_list_copied_to (o_current->attribs, new_obj);
 
   return (new_obj);
 }
diff --git a/libgeda/src/o_picture.c b/libgeda/src/o_picture.c
index 6edff47..d334c21 100644
--- a/libgeda/src/o_picture.c
+++ b/libgeda/src/o_picture.c
@@ -759,7 +759,6 @@ OBJECT *o_picture_copy(TOPLEVEL *w_current, OBJECT *list_tail,
 		       OBJECT *o_current)
 {
   OBJECT *new_obj;
-  ATTRIB *a_current;
   int color;
 	
   if (o_current->saved_color == -1) {
@@ -816,17 +815,8 @@ OBJECT *o_picture_copy(TOPLEVEL *w_current, OBJECT *list_tail,
   o_picture_recalc(w_current, new_obj);
   
   /* new_obj->attribute = 0;*/
-  a_current = o_current->attribs;
-  if (a_current) {
-    while ( a_current ) {
-      /* head attrib node has prev = NULL */
-      if (a_current->prev != NULL) {
-	a_current->copied_to = new_obj;
-      }
-      a_current = a_current->next;
-    }
-  }
-  
+  o_attrib_list_copied_to (o_current->attribs, new_obj);
+
   /* return the new tail of the object list */
   return(new_obj);
 } 
diff --git a/libgeda/src/o_pin_basic.c b/libgeda/src/o_pin_basic.c
index 64c8278..c5945b3 100644
--- a/libgeda/src/o_pin_basic.c
+++ b/libgeda/src/o_pin_basic.c
@@ -269,7 +269,6 @@ void o_pin_translate_world(TOPLEVEL *w_current, int x1, int y1, OBJECT *object)
 OBJECT *o_pin_copy(TOPLEVEL *w_current, OBJECT *list_tail, OBJECT *o_current)
 {
   OBJECT *new_obj;
-  ATTRIB *a_current;
   int color;
 
   if (o_current->saved_color == -1) {
@@ -289,17 +288,7 @@ OBJECT *o_pin_copy(TOPLEVEL *w_current, OBJECT *list_tail, OBJECT *o_current)
   new_obj->line->y[1] = o_current->line->y[1];
 
   /*	new_obj->attribute = 0;*/
-  a_current = o_current->attribs;
-  if (a_current) {
-    while ( a_current ) {
-
-      /* head attrib node has prev = NULL */
-      if (a_current->prev != NULL) {
-        a_current->copied_to = new_obj;
-      }
-      a_current = a_current->next;
-    }
-  }
+  o_attrib_list_copied_to (o_current->attribs, new_obj);
 
   return(new_obj);
 }

commit 17cd44a285993915e1ba73f0bcba7f6120df7a0a
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Date:   Sat Dec 22 21:46:25 2007 +0000

    gschem: Don't lose close confirmation dialog behind window
    
    It was possible to lose gschem's close confirmation dialog behind the
    gschem main window, which could lead to data loss as it was then very
    difficult to recover gracefully.

diff --git a/gschem/src/x_dialog.c b/gschem/src/x_dialog.c
index 1c1b910..209012a 100644
--- a/gschem/src/x_dialog.c
+++ b/gschem/src/x_dialog.c
@@ -4029,6 +4029,9 @@ x_dialog_close_window (TOPLEVEL *toplevel)
                                      "unsaved-pages", unsaved_pages,
                                      NULL));
 
+  gtk_window_set_transient_for (GTK_WINDOW (dialog),
+                                GTK_WINDOW (toplevel->main_window));
+
   g_list_free (unsaved_pages);
   switch (gtk_dialog_run (GTK_DIALOG (dialog))) {
       case GTK_RESPONSE_NO:

commit da5151addbfba61fb36fffbdd4710244493964c8
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Date:   Wed Dec 12 19:19:13 2007 +0000

    gschem: Warn before overwriting files. [1846593]
    
    Also fixes a memory leak in the file save function.

diff --git a/gschem/src/x_fileselect.c b/gschem/src/x_fileselect.c
index adc491f..b777376 100644
--- a/gschem/src/x_fileselect.c
+++ b/gschem/src/x_fileselect.c
@@ -273,12 +273,34 @@ x_fileselect_save (TOPLEVEL *toplevel)
     gchar *filename =
       gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
 
+    /* If the file already exists, display a dialog box to check if
+       the user really wants to overwrite it. */
+    if ((filename != NULL) && g_file_test (filename, G_FILE_TEST_EXISTS)) {
+      GtkWidget *checkdialog = 
+        gtk_message_dialog_new (GTK_WINDOW(dialog),
+                                (GTK_DIALOG_MODAL | 
+                                 GTK_DIALOG_DESTROY_WITH_PARENT),
+                                GTK_MESSAGE_QUESTION,
+                                GTK_BUTTONS_YES_NO,
+                                _("The selected file `%s' already exists.\n\n"
+                                  "Would you like to overwrite it?"),
+                                filename);
+      gtk_window_set_title (GTK_WINDOW (checkdialog), _("Overwrite file?"));
+      if (gtk_dialog_run (GTK_DIALOG (checkdialog)) != GTK_RESPONSE_YES) {
+        s_log_message (_("Save cancelled on user request\n"));
+        g_free (filename);
+        filename = NULL;
+      }
+      gtk_widget_destroy (checkdialog);
+    }
     /* try saving current page of toplevel to file filename */
     if (filename != NULL) {
       x_window_save_page (toplevel,
                           toplevel->page_current,
                           filename);
     }
+
+    g_free (filename);
   }
   gtk_widget_destroy (dialog);
 

commit 17aa737566e5a4198ef541a3f559b096277ce651
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Date:   Thu Nov 29 00:29:15 2007 +0000

    gschem: Fix "failed to set sensitivity" log spam
    
    A bad string in i_basic.c was making x_menus_sensitivity() spam error
    messages to the log.  Altered the log message to make it easier to fix
    in the future.
    
    Bug was introduced in commit 93199b2f50c31691722ed154fc42fd4c01a2dac5
    by editing menu definitions in system-gschemrc without updating
    i_basic.c.

diff --git a/gschem/src/i_basic.c b/gschem/src/i_basic.c
index e0e8ab3..34e8c09 100644
--- a/gschem/src/i_basic.c
+++ b/gschem/src/i_basic.c
@@ -422,7 +422,7 @@ void i_update_menus(TOPLEVEL *w_current)
     x_menus_sensitivity(w_current, "Buffer/Cut into 5", TRUE);
     x_menus_sensitivity(w_current, "Hierarchy/Down Schematic", TRUE);
     x_menus_sensitivity(w_current, "Hierarchy/Down Symbol", TRUE);
-    x_menus_sensitivity(w_current, "Hierarchy/Documentation", TRUE);
+    x_menus_sensitivity(w_current, "Hierarchy/Documentation...", TRUE);
     x_menus_sensitivity(w_current, "Attributes/Attach", TRUE);
     x_menus_sensitivity(w_current, "Attributes/Detach", TRUE);
     x_menus_sensitivity(w_current, "Attributes/Show Value", TRUE);
@@ -469,7 +469,7 @@ void i_update_menus(TOPLEVEL *w_current)
     x_menus_sensitivity(w_current, "Buffer/Cut into 5", FALSE);
     x_menus_sensitivity(w_current, "Hierarchy/Down Schematic", FALSE);
     x_menus_sensitivity(w_current, "Hierarchy/Down Symbol", FALSE);
-    x_menus_sensitivity(w_current, "Hierarchy/Documentation", FALSE);
+    x_menus_sensitivity(w_current, "Hierarchy/Documentation...", FALSE);
     x_menus_sensitivity(w_current, "Attributes/Attach", FALSE);
     x_menus_sensitivity(w_current, "Attributes/Detach", FALSE);
     x_menus_sensitivity(w_current, "Attributes/Show Value", FALSE);
diff --git a/gschem/src/x_menus.c b/gschem/src/x_menus.c
index 119a51d..a4dee4e 100644
--- a/gschem/src/x_menus.c
+++ b/gschem/src/x_menus.c
@@ -329,7 +329,7 @@ void x_menus_sensitivity (TOPLEVEL* w_current, const char *buf, int flag)
     gtk_widget_set_sensitive(GTK_WIDGET(item), flag);
     /* free(item); */ /* Why doesn't this need to be freed?  */
   } else {
-    s_log_message(_("Tried to set the sensitivity on a non-existent menu item\n")); 
+    s_log_message(_("Tried to set the sensitivity on non-existent menu item '%s'\n"), buf); 
   }
  
 }

commit 3a59793aa6999fe233a8ad97acdeddecb1dd2df9
Author: Peter TB Brett <peter@xxxxxxxxxxxxx>
Date:   Fri Nov 23 21:43:49 2007 +0000

    gschemdoc: Quote variables in case they contain spaces. [1792986]
    
    In the gschemdoc shell script, the variables $pdfreader and $browser
    need quoting on lines 86, 113 and 128 (eg "${browser}"). Otherwise,
    paths with spaces in, like "Program Files/Mozilla Firefox" commonly
    used in Windows don't work.
    
    Based on anonymous SourceForge patch.

diff --git a/gschem/scripts/gschemdoc.sh b/gschem/scripts/gschemdoc.sh
index ee6c1cb..acae51c 100644
--- a/gschem/scripts/gschemdoc.sh
+++ b/gschem/scripts/gschemdoc.sh
@@ -87,7 +87,7 @@ view_file_browser()
 		echo "Using browser and file: $file"
 		# NOTE: Mozilla and Netscape does not seem to support
 		#       -- on the command line
-		${browser} "file://$file"
+		"${browser}" "file://$file"
 		exit
 	else
 		echo "Did not find a browser application."
@@ -102,7 +102,7 @@ go_look_for()
 {
 	if test "${browser}" != "no" ; then
 		echo "Go look for: $1"
-		${browser} "http://www.google.com/search?q=$1%20filetype:pdf";
+		"${browser}" "http://www.google.com/search?q=$1%20filetype:pdf";
 		exit
 	else
 		echo "Did not find a browser application."
@@ -226,7 +226,7 @@ if test "${browser}" != "no"; then
 		if echo "$1" | grep -q "^$s:"; then
 			echo "Found ${browser}"
 			echo "Using browser and URL: $1"
-			${browser} "$1"
+			"${browser}" "$1"
 			exit
 		fi
 	done

commit 9436a72692251d5fecadd8660cbc0ef4d7c5234f
Author: Tomaž Šolc <tomaz.solc@xxxxxxxxxx>
Date:   Fri Nov 23 21:42:50 2007 +0000

    Compilation fixes for Mac OS X 10.5 [1832417]
    
    This patch contains changes to gEDA source tree that were necessary to
    compile on Mac OS X (10.5 Leopard, PPC).

diff --git a/gattrib/configure.ac b/gattrib/configure.ac
index 1a8b060..f8feb22 100644
--- a/gattrib/configure.ac
+++ b/gattrib/configure.ac
@@ -85,10 +85,13 @@ fi
 
 # Guile 1.6 compatability
 
+CFLAGS_temp_save="$CFLAGS"
+CFLAGS="$CFLAGS $GUILE_CFLAGS"
 AC_CHECK_DECLS([scm_is_string, scm_is_integer, scm_to_int,
 scm_from_int,  scm_is_true,    scm_is_false,
 scm_from_locale_string, scm_to_locale_string],,,
 [#include <libguile.h>])
+CFLAGS="$CFLAGS_temp_save"
 
 AH_VERBATIM(SCM_IS_STRING, [#if !HAVE_DECL_SCM_IS_STRING
 #  define scm_is_string(x) SCM_STRINGP(x)
diff --git a/gnetlist/configure.ac b/gnetlist/configure.ac
index fe89f75..1c9454e 100644
--- a/gnetlist/configure.ac
+++ b/gnetlist/configure.ac
@@ -164,10 +164,13 @@ fi
 
 # Guile 1.6 compatability
 
+CFLAGS_temp_save="$CFLAGS"
+CFLAGS="$CFLAGS $GUILE_CFLAGS"
 AC_CHECK_DECLS([scm_is_string, scm_is_integer, scm_to_int,
 scm_from_int,  scm_is_true,    scm_is_false,
 scm_from_locale_string, scm_to_locale_string],,,
 [#include <libguile.h>])
+CFLAGS="$CFLAGS_temp_save"
 
 AH_VERBATIM(SCM_IS_STRING, [#if !HAVE_DECL_SCM_IS_STRING
 #  define scm_is_string(x) SCM_STRINGP(x)
diff --git a/gschem/autogen.sh b/gschem/autogen.sh
index ffefb13..b06a5b7 100755
--- a/gschem/autogen.sh
+++ b/gschem/autogen.sh
@@ -8,6 +8,9 @@ srcdir=`dirname $0`
 test -z "$srcdir" && srcdir=.
 configure_script=configure.ac.in
 
+# Possible names for libtool/libtoolize
+libtoolize_candidates="libtoolize glibtoolize"
+
 DIE=0
 
 (test -f $srcdir/$configure_script) || {
@@ -25,7 +28,8 @@ DIE=0
 }
 
 (grep "^AM_PROG_LIBTOOL" $srcdir/$configure_script >/dev/null) && {
-  (libtool --version) < /dev/null > /dev/null 2>&1 || {
+  LIBTOOLIZE=`which $libtoolize_candidates 2>/dev/null | head -n1`
+  (! test -z "$LIBTOOLIZE") || {
     echo
     echo "**Error**: You must have \`libtool' installed."
     echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/";
@@ -104,10 +108,8 @@ do
         #mv -f $dr/po/Makevars.template $dr/po/Makevars
       fi
       if grep "^AM_PROG_LIBTOOL" $configure_script >/dev/null; then
-	if test -z "$NO_LIBTOOLIZE" ; then 
-	  echo "autogen.sh running: libtoolize ..."
-	  libtoolize --force --copy
-	fi
+	echo "autogen.sh running: libtoolize ..."
+	$LIBTOOLIZE --force --copy
       fi
       echo "autogen.sh running: aclocal $aclocalinclude ..."
       aclocal $aclocalinclude
diff --git a/gschem/configure.ac.in b/gschem/configure.ac.in
index c331141..6a02506 100644
--- a/gschem/configure.ac.in
+++ b/gschem/configure.ac.in
@@ -88,10 +88,13 @@ fi
 
 # Guile 1.6 compatability
 
+CFLAGS_temp_save="$CFLAGS"
+CFLAGS="$CFLAGS $GUILE_CFLAGS"
 AC_CHECK_DECLS([scm_is_string, scm_is_integer, scm_to_int,
 scm_from_int,  scm_is_true,    scm_is_false,
 scm_from_locale_string, scm_to_locale_string],,,
 [#include <libguile.h>])
+CFLAGS="$CFLAGS_temp_save"
 
 AH_VERBATIM(SCM_IS_STRING, [#if !HAVE_DECL_SCM_IS_STRING
 #  define scm_is_string(x) SCM_STRINGP(x)
diff --git a/gsymcheck/configure.ac b/gsymcheck/configure.ac
index f583994..5af2cbe 100644
--- a/gsymcheck/configure.ac
+++ b/gsymcheck/configure.ac
@@ -76,10 +76,13 @@ fi
 
 # Guile 1.6 compatability
 
+CFLAGS_temp_save="$CFLAGS"
+CFLAGS="$CFLAGS $GUILE_CFLAGS"
 AC_CHECK_DECLS([scm_is_string, scm_is_integer, scm_to_int,
 scm_from_int,  scm_is_true,    scm_is_false,
 scm_from_locale_string, scm_to_locale_string],,,
 [#include <libguile.h>])
+CFLAGS="$CFLAGS_temp_save"
 
 AH_VERBATIM(SCM_IS_STRING, [#if !HAVE_DECL_SCM_IS_STRING
 #  define scm_is_string(x) SCM_STRINGP(x)
diff --git a/libgeda/autogen.sh b/libgeda/autogen.sh
index e29a856..fe4732a 100755
--- a/libgeda/autogen.sh
+++ b/libgeda/autogen.sh
@@ -13,6 +13,9 @@ AM_1=1  # Major number
 AM_2=6
 AM_3=0  # Minor number
 
+# Possible names for libtool/libtoolize
+libtoolize_candidates="libtoolize glibtoolize"
+
 DIE=0
 
 (test -f $srcdir/$configure_script) || {
@@ -30,7 +33,8 @@ DIE=0
 }
 
 (grep "^AM_PROG_LIBTOOL" $srcdir/$configure_script >/dev/null) && {
-  (libtool --version) < /dev/null > /dev/null 2>&1 || {
+  LIBTOOLIZE=`which $libtoolize_candidates 2>/dev/null | head -n1`
+  (! test -z "$LIBTOOLIZE") || {
     echo
     echo "**Error**: You must have \`libtool' installed."
     echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/";
@@ -134,10 +138,8 @@ do
         #mv -f $dr/po/Makevars.template $dr/po/Makevars
       fi
       if grep "^AM_PROG_LIBTOOL" $configure_script >/dev/null; then
-	if test -z "$NO_LIBTOOLIZE" ; then 
-	  echo "autogen.sh running: libtoolize ..."
-	  libtoolize --force --copy
-	fi
+	echo "autogen.sh running: libtoolize ..."
+	$LIBTOOLIZE --force --copy
       fi
       echo "autogen.sh running: aclocal $aclocalinclude ..."
       aclocal $aclocalinclude
diff --git a/libgeda/configure.ac b/libgeda/configure.ac
index 6e4e1ce..36e0701 100644
--- a/libgeda/configure.ac
+++ b/libgeda/configure.ac
@@ -86,10 +86,13 @@ fi
 
 # Guile 1.6 compatability
 
+CFLAGS_temp_save="$CFLAGS"
+CFLAGS="$CFLAGS $GUILE_CFLAGS"
 AC_CHECK_DECLS([scm_is_string, scm_is_integer, scm_to_int,
 scm_from_int,  scm_is_true,    scm_is_false,
 scm_from_locale_string, scm_to_locale_string],,,
 [#include <libguile.h>])
+CFLAGS="$CFLAGS_temp_save"
 
 AH_VERBATIM(SCM_IS_STRING, [#if !HAVE_DECL_SCM_IS_STRING
 #  define scm_is_string(x) SCM_STRINGP(x)
diff --git a/utils/configure.ac b/utils/configure.ac
index 4a5d049..700cb97 100644
--- a/utils/configure.ac
+++ b/utils/configure.ac
@@ -115,10 +115,13 @@ fi
 
 # Guile 1.6 compatability
 
+CFLAGS_temp_save="$CFLAGS"
+CFLAGS="$CFLAGS $GUILE_CFLAGS"
 AC_CHECK_DECLS([scm_is_string, scm_is_integer, scm_to_int,
 scm_from_int,  scm_is_true,    scm_is_false,
 scm_from_locale_string, scm_to_locale_string],,,
 [#include <libguile.h>])
+CFLAGS="$CFLAGS_temp_save"
 
 AH_VERBATIM(SCM_IS_STRING, [#if !HAVE_DECL_SCM_IS_STRING
 #  define scm_is_string(x) SCM_STRINGP(x)

commit 2200b62ee03f118016358ed7b96c3e002cfb06c4
Author: Peter Clifton <pcjc2@xxxxxxxxx>
Date:   Tue Nov 6 23:11:41 2007 +0000

    Free gdk events obtained with gtk_event_get().
    
    gtk_event_put() copies an event given to it, so if we retrieve an event
    and re-push it into the event queue, we still need to free our copy.

diff --git a/gschem/src/a_zoom.c b/gschem/src/a_zoom.c
index 21d244d..70fb0a8 100644
--- a/gschem/src/a_zoom.c
+++ b/gschem/src/a_zoom.c
@@ -145,6 +145,7 @@ void a_zoom(TOPLEVEL *w_current, int dir, int selected_from, int pan_flags)
   while( topEvent != NULL ) {
     if( topEvent->type != GDK_SCROLL ) {
       gdk_event_put( topEvent );
+      gdk_event_free( topEvent );
       break;
     }
     gdk_event_free( topEvent );

commit 19dfabcb4748aacb31b571a1d5db8cc3a49b287f
Author: Hamish Moffatt <hamish@xxxxxxxxxx>
Date:   Thu Oct 4 18:40:05 2007 +0100

    Fix install location of gattrib-menus.xml to $GEDADATADIR

diff --git a/gattrib/lib/Makefile.am b/gattrib/lib/Makefile.am
index 919c3db..9aee358 100644
--- a/gattrib/lib/Makefile.am
+++ b/gattrib/lib/Makefile.am
@@ -1,6 +1,8 @@
 
 rcdatadir = @GEDARCDIR@
-rcdata_DATA = system-gattribrc gattrib-menus.xml
+datadir = @GEDADATADIR@
+rcdata_DATA = system-gattribrc
+data_DATA = gattrib-menus.xml
 
 EXTRA_DIST = system-gattribrc.in gattrib-menus.xml
 

commit f6769493448df1b107292ded42195c9e39b666d6
Author: Ales Hvezda <ahvezda@xxxxxxxx>
Date:   Wed Sep 12 02:37:55 2007 -0400

    Fixed a whole bunch of gtk+ 2.4.x and misc issues building on an older box
    
    This is a fix for (Patch#) 1789290 libgeda-1.2.0 fprintf which supplied a
    similar patch which fixes the issues in libgeda/src/s_clib.c and
    libgeda/src/s_textbuffer.c.  In the future, all releases will be built with
    gtk+ 2.4.x so that these sorts of problems do not get released.

diff --git a/gattrib/src/x_window.c b/gattrib/src/x_window.c
index bb4f18f..c65691e 100644
--- a/gattrib/src/x_window.c
+++ b/gattrib/src/x_window.c
@@ -208,7 +208,11 @@ static const GtkActionEntry actions[] = {
 
   /* Help menu */
   { "help", NULL, "_Help"},
+#if GTK_CHECK_VERSION (2,6,0)
   { "help-about", GTK_STOCK_ABOUT, "About", "", "", x_dialog_about_dialog},
+#else
+  { "help-about", NULL, "About", "", "", x_dialog_about_dialog},
+#endif
 };
 
 
diff --git a/gschem/src/gschem_dialog.c b/gschem/src/gschem_dialog.c
index ec28037..6751491 100644
--- a/gschem/src/gschem_dialog.c
+++ b/gschem/src/gschem_dialog.c
@@ -19,9 +19,12 @@
  */
 
 #include <config.h>
+#include <glib.h>
 
+#if GLIB_CHECK_VERSION(2,6,0)
 #include <glib-object.h>
 #include <glib/gstdio.h>
+#endif
 
 #include <libgeda/libgeda.h>
 #include <gtk/gtk.h>
@@ -382,6 +385,7 @@ static void gschem_dialog_class_init (GschemDialogClass *klass)
 
   gschem_dialog_parent_class = g_type_class_peek_parent (klass);
 
+#if GLIB_CHECK_VERSION(2,6,0)
   gschem_dialog_signals[ GEOMETRY_SAVE ] =
     g_signal_new ("geometry-save",
                   G_OBJECT_CLASS_TYPE( gobject_class ),
@@ -409,6 +413,7 @@ static void gschem_dialog_class_init (GschemDialogClass *klass)
                   G_TYPE_POINTER,
                   G_TYPE_STRING
                  );
+#endif
 
   g_object_class_install_property (
     gobject_class, PROP_SETTINGS_NAME,
diff --git a/gschem/src/x_menus.c b/gschem/src/x_menus.c
index f7c00b6..119a51d 100644
--- a/gschem/src/x_menus.c
+++ b/gschem/src/x_menus.c
@@ -411,7 +411,7 @@ inline void x_menu_attach_recent_files_submenu(TOPLEVEL *w_current)
 }
 
 inline void recent_files_load() { }
-inline void recent_files_save() { }
+inline void recent_files_save(gpointer user_data) { }
 inline void recent_files_add(const char *filename) { }
 
 #else
diff --git a/libgeda/src/s_clib.c b/libgeda/src/s_clib.c
index 7bb4824..082ff08 100644
--- a/libgeda/src/s_clib.c
+++ b/libgeda/src/s_clib.c
@@ -112,6 +112,7 @@
 
 #include <config.h>
 
+#include <stdio.h>
 #include <glib.h>
 
 #ifdef HAVE_STRING_H
diff --git a/libgeda/src/s_textbuffer.c b/libgeda/src/s_textbuffer.c
index cb0f309..5ce865e 100644
--- a/libgeda/src/s_textbuffer.c
+++ b/libgeda/src/s_textbuffer.c
@@ -20,6 +20,7 @@
 
 #include <config.h>
 
+#include <stdio.h>
 #include <glib.h>
 
 #ifdef HAVE_STRING_H

commit 866c288c01765b038475baedede173ab29619d3a
Author: Peter Clifton <pcjc2@xxxxxxxxx>
Date:   Sat Sep 8 23:54:12 2007 +0100

    Fix grid snapping in "Edit->Mirror Mode"
    
    Where the user selectes Edit->Mirror Mode, then clicks a point about which
    to mirror, the snap operation on the mouse coordinates was not taking place
    until after the mirror. Bug was introduced with noscreen changes.

diff --git a/gschem/src/x_event.c b/gschem/src/x_event.c
index 3202ec6..fa29bf1 100644
--- a/gschem/src/x_event.c
+++ b/gschem/src/x_event.c
@@ -447,11 +447,12 @@ gint x_event_button_pressed(GtkWidget *widget, GdkEventButton *event,
                        (int) event->x,
                        (int) event->y,
                &w_x, &w_y );
+        w_x = snap_grid(w_current, w_x);
+        w_y = snap_grid(w_current, w_y);
+
         o_mirror_world(w_current,
                        geda_list_get_glist( w_current->page_current->selection_list ),
                        w_x, w_y);
-        w_x = snap_grid(w_current, w_x);
-        w_y = snap_grid(w_current, w_y);
 
         w_current->inside_action = 0;
         i_set_state(w_current, SELECT);



_______________________________________________
geda-cvs mailing list
geda-cvs@xxxxxxxxxxxxxx
http://www.seul.org/cgi-bin/mailman/listinfo/geda-cvs