Hello community,

here is the log from the commit of package gtkwave for openSUSE:Factory checked 
in at 2016-04-22 16:25:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gtkwave (Old)
 and      /work/SRC/openSUSE:Factory/.gtkwave.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gtkwave"

Changes:
--------
--- /work/SRC/openSUSE:Factory/gtkwave/gtkwave.changes  2016-02-24 
18:43:06.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.gtkwave.new/gtkwave.changes     2016-04-22 
16:25:52.000000000 +0200
@@ -1,0 +2,6 @@
+Tue Apr 19 08:21:07 UTC 2016 - [email protected]
+
+- Update to version 3.3.72
+  * bugfix release, see included ChangeLog file for details
+
+-------------------------------------------------------------------

Old:
----
  gtkwave-3.3.70.tar.gz

New:
----
  gtkwave-3.3.72.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ gtkwave.spec ++++++
--- /var/tmp/diff_new_pack.xR2NXM/_old  2016-04-22 16:25:53.000000000 +0200
+++ /var/tmp/diff_new_pack.xR2NXM/_new  2016-04-22 16:25:53.000000000 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           gtkwave
-Version:        3.3.70
+Version:        3.3.72
 Release:        0
 Summary:        Waveform viewer for Ditital Signals
 License:        GPL-2.0+
@@ -112,7 +112,7 @@
 %dir %{_datadir}/icons/gnome/*/mimetypes/
 %{_datadir}/icons/gnome/*/mimetypes/*.png
 %{_datadir}/icons/gtkwave*
-%{_datadir}/icons/hicolor/*/apps/%{name}.png
+%{_datadir}/icons/hicolor/*/apps/%{name}.*
 %{_datadir}/mime/packages/x-gtkwave-extension*.xml
 
 %files doc

++++++ gtkwave-3.3.70.tar.gz -> gtkwave-3.3.72.tar.gz ++++++
++++ 2920 lines of diff (skipped)
++++    retrying with extended exclude list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gtkwave-3.3.70/ChangeLog new/gtkwave-3.3.72/ChangeLog
--- old/gtkwave-3.3.70/ChangeLog        2016-02-15 23:36:59.000000000 +0100
+++ new/gtkwave-3.3.72/ChangeLog        2016-04-13 18:30:29.000000000 +0200
@@ -1531,3 +1531,23 @@
 3.3.70 14feb16 Various warnings fixes from new version of scan-build.
                Crash fix in Windows for transaction traces (broken since
                VCD/TIM export in 3.3.61).
+3.3.71 06apr16 Printf format warnings fixes in lxt2_write.c.
+               Added SVG gtkwave icon in
+               share/icons/hicolor/scalable/apps/gtkwave.svg directory.
+               Make gtkwave interpret values as double precision FP for
+               plotting when BitsToReal is enabled. Also keeps analog mode
+               enabled when selecting numerical formats (which allows 
+               enabling/disabling BitsToReal without going out of analog 
+               mode). Disabling analog mode can be done using the
+               existing Analog->Off menu option.
+               Fix broken non-canonical bit ordering (IBM) single bit
+               extraction in process_tcl_list().
+               Fixed gtkwave::gtkwave::addSignalsFromList so it can handle
+               subset and forward/reverse extractions on signals.
+               Remove FST_WRITER_PARALLEL from MinGW CFLAGS as some recent
+               versions of MinGW have issues with struct timespec when 
+               pthread.h is included.
+               Added /Edit/Delete to destroy traces without affecting the
+               existing cut buffer.
+3.3.72         Revert to old gtkwave.appdata.xml as the new one is causing
+               problems with appstream-util validation.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gtkwave-3.3.70/LICENSE.TXT new/gtkwave-3.3.72/LICENSE.TXT
--- old/gtkwave-3.3.70/LICENSE.TXT      2015-11-05 01:53:59.000000000 +0100
+++ new/gtkwave-3.3.72/LICENSE.TXT      2016-04-13 18:30:29.000000000 +0200
@@ -1,6 +1,6 @@
 ##########################################################################
 
-GTKWave 3.3.68 Wave Viewer is Copyright (C) 1999-2016 Tony Bybell.  
+GTKWave 3.3.72 Wave Viewer is Copyright (C) 1999-2016 Tony Bybell.  
 Portions of GTKWave are Copyright (C) 1999-2016 Udi Finkelstein. 
 Context support is Copyright (C) 2007-2016 Kermin Elliott Fleming.
 Trace group support is  Copyright (C) 2009-2016 Donald Baltus.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gtkwave-3.3.70/configure.ac new/gtkwave-3.3.72/configure.ac
--- old/gtkwave-3.3.70/configure.ac     2016-02-14 20:37:33.000000000 +0100
+++ new/gtkwave-3.3.72/configure.ac     2016-04-13 18:30:29.000000000 +0200
@@ -2,7 +2,7 @@
 # Process this file with autoconf to produce a configure script.
 
 AC_PREREQ(2.59)
-AC_INIT(gtkwave, 3.3.70, [email protected])
+AC_INIT(gtkwave, 3.3.72, [email protected])
 AC_CONFIG_SRCDIR([src/vcd.c])
 AM_INIT_AUTOMAKE
 AC_CONFIG_HEADER([config.h])
@@ -789,11 +789,14 @@
 fi
 fi
 
-CFLAGS="${CFLAGS} ${STRUCT_PACK} -DFST_WRITER_PARALLEL"
+CFLAGS="${CFLAGS} ${STRUCT_PACK}"
 
 if test "X$OSTYPE" = "Xmsys" ; then
 # add library for common dialog found in file.c
        MINGW_LDADD="-lcomdlg32"
+       else
+       # there are conflicts with struct timespec in pthreads vs mingw
+       CFLAGS="${CFLAGS} -DFST_WRITER_PARALLEL"
        fi
 
 if test "X$ETCL" = "Xyes" ; then
@@ -914,6 +917,9 @@
                share/icons/gnome/32x32/mimetypes/Makefile
                share/icons/gnome/48x48/Makefile
                share/icons/gnome/48x48/mimetypes/Makefile
+               share/icons/hicolor/Makefile
+               share/icons/hicolor/scalable/Makefile
+               share/icons/hicolor/scalable/apps/Makefile
                share/applications/Makefile
                share/appdata/Makefile
 ])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gtkwave-3.3.70/contrib/bundle_for_osx/Info-gtkwave.plist 
new/gtkwave-3.3.72/contrib/bundle_for_osx/Info-gtkwave.plist
--- old/gtkwave-3.3.70/contrib/bundle_for_osx/Info-gtkwave.plist        
2015-11-05 01:53:59.000000000 +0100
+++ new/gtkwave-3.3.72/contrib/bundle_for_osx/Info-gtkwave.plist        
2016-04-13 18:30:29.000000000 +0200
@@ -8,7 +8,7 @@
     <key>CFBundleExecutable</key>
     <string>gtkwave</string>
     <key>CFBundleGetInfoString</key>
-    <string>3.3.68, (C) 1999-2016 Tony Bybell 
http://gtkwave.sourceforge.net</string>
+    <string>3.3.72, (C) 1999-2016 Tony Bybell 
http://gtkwave.sourceforge.net</string>
     <key>CFBundleIconFile</key>
     <string>gtkwave.icns</string>
     <key>CFBundleIdentifier</key>
@@ -18,11 +18,11 @@
     <key>CFBundlePackageType</key>
     <string>APPL</string>
     <key>CFBundleShortVersionString</key>
-    <string>3.3.68</string>
+    <string>3.3.72</string>
     <key>CFBundleSignature</key>
     <string>????</string>
     <key>CFBundleVersion</key>
-    <string>3.3.68</string>
+    <string>3.3.72</string>
     <key>NSHumanReadableCopyright</key>
     <string>Copyright 1999 - 2016 Tony Bybell, GNU General Public 
License.</string>
     <key>LSMinimumSystemVersion</key>
Files old/gtkwave-3.3.70/doc/gtkwave.odt and new/gtkwave-3.3.72/doc/gtkwave.odt 
differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gtkwave-3.3.70/examples/gtkwaverc new/gtkwave-3.3.72/examples/gtkwaverc
--- old/gtkwave-3.3.70/examples/gtkwaverc       2013-10-26 00:55:06.000000000 
+0200
+++ new/gtkwave-3.3.72/examples/gtkwaverc       2016-04-07 18:10:53.000000000 
+0200
@@ -149,6 +149,7 @@
 accel "/Edit/Cut" <Control>X
 accel "/Edit/Copy" <Control>C
 accel "/Edit/Paste" <Control>V
+accel "/Edit/Delete" <Control>Delete
 accel "/Edit/<separator>" (null)
 accel "/Edit/Alias Highlighted Trace" <Alt>A
 accel "/Edit/Remove Highlighted Aliases" <Shift><Alt>A
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gtkwave-3.3.70/share/icons/Makefile.am 
new/gtkwave-3.3.72/share/icons/Makefile.am
--- old/gtkwave-3.3.70/share/icons/Makefile.am  2012-01-05 20:31:59.000000000 
+0100
+++ new/gtkwave-3.3.72/share/icons/Makefile.am  2016-03-21 20:15:34.000000000 
+0100
@@ -1,6 +1,6 @@
 ## -*- makefile -*-
 ##
-SUBDIRS= gnome
+SUBDIRS= gnome hicolor
 
 xdgdatadir=@XDGDATADIR@
 icondir=$(xdgdatadir)/icons
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gtkwave-3.3.70/share/icons/hicolor/Makefile.am 
new/gtkwave-3.3.72/share/icons/hicolor/Makefile.am
--- old/gtkwave-3.3.70/share/icons/hicolor/Makefile.am  1970-01-01 
01:00:00.000000000 +0100
+++ new/gtkwave-3.3.72/share/icons/hicolor/Makefile.am  2016-03-21 
20:15:34.000000000 +0100
@@ -0,0 +1,3 @@
+## -*- makefile -*-
+##
+SUBDIRS= scalable
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gtkwave-3.3.70/share/icons/hicolor/scalable/Makefile.am 
new/gtkwave-3.3.72/share/icons/hicolor/scalable/Makefile.am
--- old/gtkwave-3.3.70/share/icons/hicolor/scalable/Makefile.am 1970-01-01 
01:00:00.000000000 +0100
+++ new/gtkwave-3.3.72/share/icons/hicolor/scalable/Makefile.am 2016-03-21 
20:15:34.000000000 +0100
@@ -0,0 +1,3 @@
+## -*- makefile -*-
+##
+SUBDIRS= apps
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gtkwave-3.3.70/share/icons/hicolor/scalable/apps/Makefile.am 
new/gtkwave-3.3.72/share/icons/hicolor/scalable/apps/Makefile.am
--- old/gtkwave-3.3.70/share/icons/hicolor/scalable/apps/Makefile.am    
1970-01-01 01:00:00.000000000 +0100
+++ new/gtkwave-3.3.72/share/icons/hicolor/scalable/apps/Makefile.am    
2016-03-21 20:15:34.000000000 +0100
@@ -0,0 +1,10 @@
+## -*- makefile -*-
+##
+xdgdatadir=@XDGDATADIR@
+icondir=$(xdgdatadir)/icons/hicolor/scalable/apps
+
+icon_DATA = \
+       gtkwave.svg
+
+EXTRA_DIST = \
+       gtkwave.svg
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gtkwave-3.3.70/share/icons/hicolor/scalable/apps/gtkwave.svg 
new/gtkwave-3.3.72/share/icons/hicolor/scalable/apps/gtkwave.svg
--- old/gtkwave-3.3.70/share/icons/hicolor/scalable/apps/gtkwave.svg    
1970-01-01 01:00:00.000000000 +0100
+++ new/gtkwave-3.3.72/share/icons/hicolor/scalable/apps/gtkwave.svg    
2016-03-21 20:15:34.000000000 +0100
@@ -0,0 +1,246 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:xlink="http://www.w3.org/1999/xlink";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   id="svg6190"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   width="256"
+   height="256"
+   viewBox="0 0 256 256"
+   sodipodi:docname="Gtkwave.svg">
+  <metadata
+     id="metadata6196">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs6194" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="640"
+     inkscape:window-height="480"
+     id="namedview6192"
+     showgrid="false"
+     inkscape:zoom="0.921875"
+     inkscape:cx="109.01695"
+     inkscape:cy="128"
+     inkscape:window-x="47"
+     inkscape:window-y="24"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg6190" />
+  <image
+     width="256"
+     height="256"
+     preserveAspectRatio="none"
+     
xlink:href="data:image/png;base64,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
+"
+     id="image6198"
+     x="0"
+     y="0" />
+</svg>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gtkwave-3.3.70/src/analyzer.c new/gtkwave-3.3.72/src/analyzer.c
--- old/gtkwave-3.3.70/src/analyzer.c   2015-11-19 07:58:08.000000000 +0100
+++ new/gtkwave-3.3.72/src/analyzer.c   2016-04-07 21:35:22.000000000 +0200
@@ -854,6 +854,82 @@
 
 
 /*
+ * Delete highlighted traces from the main screen
+ * and throw them away.  Do not affect existing cut buffer...
+ */
+int DeleteBuffer(void)
+{
+Trptr t, tnext;
+Trptr   current=NULL;
+Trptr    buffer;            /* cut/copy buffer of traces */
+Trptr    bufferlast;        /* last element of bufferchain */
+int      buffercount;       /* number of traces in buffer */
+int      num_deleted;
+
+GLOBALS->shift_click_trace=NULL;               /* so shift-clicking doesn't 
explode */
+
+t=GLOBALS->traces.first;
+while(t)
+       {
+       if((t->flags)&(TR_HIGHLIGHT)) break;
+       t=t->t_next;
+       }
+if(!t) return(0);      /* nothing to do */
+
+GLOBALS->signalwindow_width_dirty=1;
+GLOBALS->traces.dirty = 1;
+
+buffer = GLOBALS->traces.buffer; /* copy cut buffer to make re-entrant */
+bufferlast = GLOBALS->traces.bufferlast;
+buffercount = GLOBALS->traces.buffercount;
+
+GLOBALS->traces.buffer = NULL;
+GLOBALS->traces.bufferlast = NULL;
+GLOBALS->traces.buffercount = 0;
+
+t=GLOBALS->traces.first;
+while(t)
+       {
+       tnext=t->t_next;
+       if(IsSelected(t) || (t->t_grp && IsSelected(t->t_grp)))
+         {
+           /* members of closed groups may not be highlighted */
+           /* so propogate highlighting here */
+           t->flags |= TR_HIGHLIGHT;
+           GLOBALS->traces.bufferlast=t;
+           GLOBALS->traces.buffercount++;
+
+           /* t->flags&=(~TR_HIGHLIGHT); */
+           RemoveTrace(t, 0);
+           if(!current)
+             {
+               current=t;
+               t->t_prev=NULL;
+               t->t_next=NULL;
+             }
+           else
+             {
+               current->t_next=t;
+               t->t_prev=current;
+               current=t;
+               t->t_next=NULL;
+             }
+         }
+       t=tnext;
+       }
+
+num_deleted = GLOBALS->traces.buffercount;
+FreeCutBuffer();
+
+GLOBALS->traces.buffer = buffer; /* restore cut buffer */
+GLOBALS->traces.bufferlast = bufferlast;
+GLOBALS->traces.buffercount = buffercount;
+
+return(num_deleted);
+}
+
+
+/*
  * Paste the cut buffer into the main display one and
  * mark the cut buffer empty...
  */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gtkwave-3.3.70/src/analyzer.h new/gtkwave-3.3.72/src/analyzer.h
--- old/gtkwave-3.3.70/src/analyzer.h   2015-11-19 02:42:19.000000000 +0100
+++ new/gtkwave-3.3.72/src/analyzer.h   2016-04-07 03:10:44.000000000 +0200
@@ -524,7 +524,9 @@
   TR_BINGRAY_B, TR_GRAYBIN_B,
   TR_REAL2BITS_B, TR_TTRANSLATED_B,
   TR_POPCNT_B,
-  TR_FPDECSHIFT_B
+  TR_FPDECSHIFT_B,
+
+  TR_RSVD_B /* for use internally such as temporary caching of highlighting, 
not for use in traces */
 };
 
 #define TR_HIGHLIGHT           (1<<TR_HIGHLIGHT_B)
@@ -572,6 +574,8 @@
 
 #define TR_ANALOGMASK  (TR_ANALOG_STEP|TR_ANALOG_INTERPOLATED)
 
+#define TR_RSVD                (1<<TR_RSVD_B)
+
 Trptr GiveNextTrace(Trptr t);
 Trptr GivePrevTrace(Trptr t);
 int UpdateTracesVisible(void);
@@ -591,6 +595,7 @@
 Trptr PasteBuffer(void);
 Trptr PrependBuffer(void);
 int TracesReorder(int mode);
+int DeleteBuffer(void);
 
 void import_trace(nptr np);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gtkwave-3.3.70/src/baseconvert.c new/gtkwave-3.3.72/src/baseconvert.c
--- old/gtkwave-3.3.70/src/baseconvert.c        2016-01-23 08:26:22.000000000 
+0100
+++ new/gtkwave-3.3.72/src/baseconvert.c        2016-03-31 19:10:04.000000000 
+0200
@@ -1763,55 +1763,80 @@
        for(i=0;i<3;i++) *(fwdpnt2++)=xfwd[0];
        }
 
-if(flags&TR_SIGNED)
+if(flags&TR_REAL)
        {
-       char *parse;
-       TimeType val = 0;
-       unsigned char fail=0;
-
-       parse=newbuff+3;
-       cvt_gray(flags,parse,nbits);
-
-        if((parse[0]==AN_1)||(parse[0]==AN_H))
-                { val = LLDescriptor(-1); }
-        else
-        if((parse[0]==AN_0)||(parse[0]==AN_L))
-                { val = LLDescriptor(0); }
-        else
-                { fail = 1; }
-
-        if(!fail)
-       for(i=1;i<nbits;i++)
-               {
-               val<<=1;
-
-                if((parse[i]==AN_1)||(parse[i]==AN_H)) {  
val|=LLDescriptor(1); }
-                else if((parse[i]!=AN_0)&&(parse[i]!=AN_L)) { fail=1; break; }
-               }
-       if(!fail)
+       if(nbits==64) /* fail (NaN) otherwise */
                {
-               retval = val;
+               char *parse;
+               UTimeType val=0;
+               unsigned char fail=0;
+
+               parse=newbuff+3;
+               for(i=0;i<nbits;i++)
+                       {
+                       val<<=1;
+
+               if((parse[i]==AN_1)||(parse[i]==AN_H)) {  val|=LLDescriptor(1); 
}
+               else if((parse[i]!=AN_0)&&(parse[i]!=AN_L)) { fail=1; break; }
+                       }
+               if(!fail)
+                       {
+                       retval = *(double *)&val;
+                       }
                }
        }
-else   /* decimal when all else fails */
-       {
-       char *parse;
-       UTimeType val=0;
-       unsigned char fail=0;
-
-       parse=newbuff+3;
-       cvt_gray(flags,parse,nbits);
-
-       for(i=0;i<nbits;i++)
+    else
+    {
+       if(flags&TR_SIGNED)
                {
-               val<<=1;
-
-                if((parse[i]==AN_1)||(parse[i]==AN_H)) {  
val|=LLDescriptor(1); }
-                else if((parse[i]!=AN_0)&&(parse[i]!=AN_L)) { fail=1; break; }
+               char *parse;
+               TimeType val = 0;
+               unsigned char fail=0;
+
+               parse=newbuff+3;
+               cvt_gray(flags,parse,nbits);
+
+               if((parse[0]==AN_1)||(parse[0]==AN_H))
+                       { val = LLDescriptor(-1); }
+               else
+               if((parse[0]==AN_0)||(parse[0]==AN_L))
+                       { val = LLDescriptor(0); }
+               else
+                       { fail = 1; }
+
+               if(!fail)
+               for(i=1;i<nbits;i++)
+                       {
+                       val<<=1;
+
+                       if((parse[i]==AN_1)||(parse[i]==AN_H)) {  
val|=LLDescriptor(1); }
+                       else if((parse[i]!=AN_0)&&(parse[i]!=AN_L)) { fail=1; 
break; }
+                       }
+               if(!fail)
+                       {
+                       retval = val;
+                       }
                }
-       if(!fail)
+       else    /* decimal when all else fails */
                {
-               retval = val;
+               char *parse;
+               UTimeType val=0;
+               unsigned char fail=0;
+
+               parse=newbuff+3;
+               cvt_gray(flags,parse,nbits);
+
+               for(i=0;i<nbits;i++)
+                       {
+                       val<<=1;
+
+                       if((parse[i]==AN_1)||(parse[i]==AN_H)) {  
val|=LLDescriptor(1); }
+                       else if((parse[i]!=AN_0)&&(parse[i]!=AN_L)) { fail=1; 
break; }
+                       }
+               if(!fail)
+                       {
+                       retval = val;
+                       }
                }
        }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gtkwave-3.3.70/src/helpers/lxt2_write.c 
new/gtkwave-3.3.72/src/helpers/lxt2_write.c
--- old/gtkwave-3.3.70/src/helpers/lxt2_write.c 2014-07-17 22:27:04.000000000 
+0200
+++ new/gtkwave-3.3.72/src/helpers/lxt2_write.c 2016-03-15 17:54:52.000000000 
+0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003-2012 Tony Bybell.
+ * Copyright (c) 2003-2016 Tony Bybell.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
@@ -1029,12 +1029,12 @@
 
 if(!i)
        {
-       sprintf(tname, "%s_%03d.lxt", lt->lxtname, ++lt->break_number);
+       sprintf(tname, "%s_%03u.lxt", lt->lxtname, ++lt->break_number);
        }
        else
        {
        memcpy(tname, lt->lxtname, i);
-       sprintf(tname+i, "_%03d.lxt", ++lt->break_number);
+       sprintf(tname+i, "_%03u.lxt", ++lt->break_number);
        }
 
 f2 = fopen(tname, "wb");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gtkwave-3.3.70/src/menu.c new/gtkwave-3.3.72/src/menu.c
--- old/gtkwave-3.3.70/src/menu.c       2015-11-19 07:58:08.000000000 +0100
+++ new/gtkwave-3.3.72/src/menu.c       2016-04-07 03:17:54.000000000 +0200
@@ -2563,7 +2563,7 @@
 
 
 
-static unsigned create_group (char* name, Trptr t_composite)
+unsigned create_group (char* name, Trptr t_composite)
 {
   Trptr t, t_prev, t_begin, t_end;
   unsigned dirty = 0;
@@ -6226,7 +6226,7 @@
         return;
         }
 
-dataformat( ~(TR_NUMMASK|TR_ANALOGMASK), TR_REAL );
+dataformat( ~(TR_NUMMASK), TR_REAL );
 }
 
 void
@@ -6291,7 +6291,7 @@
         return;
         }
 
-dataformat( ~(TR_NUMMASK|TR_ANALOGMASK), TR_HEX );
+dataformat( ~(TR_NUMMASK), TR_HEX );
 }
 
 void
@@ -6312,7 +6312,7 @@
         return;
         }
 
-dataformat( ~(TR_NUMMASK|TR_ANALOGMASK), TR_DEC );
+dataformat( ~(TR_NUMMASK), TR_DEC );
 }
 
 void
@@ -6333,7 +6333,7 @@
         return;
         }
 
-dataformat( ~(TR_NUMMASK|TR_ANALOGMASK), TR_SIGNED );
+dataformat( ~(TR_NUMMASK), TR_SIGNED );
 }
 
 void
@@ -6354,7 +6354,7 @@
         return;
         }
 
-dataformat( ~(TR_NUMMASK|TR_ANALOGMASK), TR_BIN );
+dataformat( ~(TR_NUMMASK), TR_BIN );
 }
 
 void
@@ -6375,7 +6375,7 @@
         return;
         }
 
-dataformat( ~(TR_NUMMASK|TR_ANALOGMASK), TR_OCT );
+dataformat( ~(TR_NUMMASK), TR_OCT );
 }
 
 void
@@ -7171,6 +7171,42 @@
 }
 
 void
+menu_delete_traces(gpointer null_data, guint callback_action, GtkWidget 
*widget)
+{
+(void)null_data;
+(void)callback_action;
+(void)widget;
+
+int num_cut;
+
+if(GLOBALS->helpbox_is_active)
+        {
+        help_text_bold("\n\nDelete");
+        help_text(
+                " removes highlighted signals from the display and discards 
them"
+               " without affecting the previous contents of the cut/copy 
buffer."
+        );
+        return;
+        }
+
+if(GLOBALS->dnd_state) { dnd_error(); return; } /* don't mess with sigs when 
dnd active */
+
+DEBUG(printf("Delete Traces\n"));
+
+num_cut = DeleteBuffer();
+if(num_cut)
+       {
+       MaxSignalLength();
+       signalarea_configure_event(GLOBALS->signalarea, NULL);
+       wavearea_configure_event(GLOBALS->wavearea, NULL);
+       }
+       else
+       {
+       must_sel();
+       }
+}
+
+void
 menu_copy_traces(gpointer null_data, guint callback_action, GtkWidget *widget)
 {
 (void)null_data;
@@ -7524,10 +7560,12 @@
     WAVE_GTKIFE("/Edit/Cut", NULL, menu_cut_traces, WV_MENU_EC, "<Item>"),
     WAVE_GTKIFE("/Edit/Copy", NULL, menu_copy_traces, WV_MENU_ECY, "<Item>"),
     WAVE_GTKIFE("/Edit/Paste", NULL, menu_paste_traces, WV_MENU_EP, "<Item>"),
+    WAVE_GTKIFE("/Edit/Delete", NULL, menu_delete_traces, WV_MENU_DEL, 
"<Item>"),
 #else
     WAVE_GTKIFE("/Edit/Cut", "<Control>X", menu_cut_traces, WV_MENU_EC, 
"<Item>"),
     WAVE_GTKIFE("/Edit/Copy", "<Control>C", menu_copy_traces, WV_MENU_ECY, 
"<Item>"),
     WAVE_GTKIFE("/Edit/Paste", "<Control>V", menu_paste_traces, WV_MENU_EP, 
"<Item>"),
+    WAVE_GTKIFE("/Edit/Delete", "<Control>Delete", menu_delete_traces, 
WV_MENU_DEL, "<Item>"),
 #endif
 
     WAVE_GTKIFE("/Edit/<separator>", NULL, NULL, WV_MENU_SEP3A, "<Separator>"),
@@ -8275,6 +8313,7 @@
     WAVE_GTKIFE("/Cut", NULL, menu_cut_traces, WV_MENU_EC, "<Item>"),
     WAVE_GTKIFE("/Copy", NULL, menu_copy_traces, WV_MENU_ECY, "<Item>"),
     WAVE_GTKIFE("/Paste", NULL, menu_paste_traces, WV_MENU_EP, "<Item>"),
+    WAVE_GTKIFE("/Delete", NULL, menu_delete_traces, WV_MENU_DEL, "<Item>"),
     WAVE_GTKIFE("/<separator>", NULL, NULL, WV_MENU_SEP4, "<Separator>"),
     WAVE_GTKIFE("/Open Scope", NULL, menu_open_hierarchy, WV_MENU_OPENH, 
"<Item>")
 #if !defined __MINGW32__ && !defined _MSC_VER
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gtkwave-3.3.70/src/menu.h new/gtkwave-3.3.72/src/menu.h
--- old/gtkwave-3.3.70/src/menu.h       2015-11-19 02:42:19.000000000 +0100
+++ new/gtkwave-3.3.72/src/menu.h       2016-04-07 03:10:44.000000000 +0200
@@ -119,6 +119,7 @@
 WV_MENU_EC,
 WV_MENU_ECY,
 WV_MENU_EP,
+WV_MENU_DEL,
 WV_MENU_SEP3A,
 WV_MENU_EAHT,
 WV_MENU_ERHA,
@@ -417,6 +418,7 @@
 void SetTraceScrollbarRowValue(int row, unsigned center);
 
 bvptr combine_traces(int direction, Trptr single_trace_only);
+unsigned create_group (char* name, Trptr t_composite);
 
 /* currently only for OSX to disable OSX menus when grabbed */
 void wave_gtk_grab_add(GtkWidget *w);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gtkwave-3.3.70/src/tcl_commands.c new/gtkwave-3.3.72/src/tcl_commands.c
--- old/gtkwave-3.3.70/src/tcl_commands.c       2014-07-14 02:42:28.000000000 
+0200
+++ new/gtkwave-3.3.72/src/tcl_commands.c       2016-04-01 01:07:07.000000000 
+0200
@@ -1081,6 +1081,40 @@
 return(TCL_OK);
 }
 
+static int gtkwavetcl_processTclList(ClientData clientData, Tcl_Interp 
*interp, int objc, Tcl_Obj *CONST objv[])
+{
+int num_found = 0;
+char reportString[33];
+Tcl_Obj *aobj;
+
+if(objc==2)
+       {
+        char *s = Tcl_GetString(objv[1]); /* do not want to remove braces! */
+       if(s)
+               {
+               num_found = process_tcl_list(s, FALSE);
+               if(num_found)
+                       {
+                       MaxSignalLength();
+                       signalarea_configure_event(GLOBALS->signalarea, NULL);
+                       wavearea_configure_event(GLOBALS->wavearea, NULL);
+                       gtkwave_main_iteration();
+                       }
+                }
+       }
+        else
+        {
+        return(gtkwavetcl_badNumArgs(clientData, interp, objc, objv, 1));
+        }
+
+sprintf(reportString, "%d", num_found);
+
+aobj = Tcl_NewStringObj(reportString, -1);
+Tcl_SetObjResult(interp, aobj);
+
+return(TCL_OK);
+}
+
 static int gtkwavetcl_deleteSignalsFromList(ClientData clientData, Tcl_Interp 
*interp, int objc, Tcl_Obj *CONST objv[])
 {
 int i;
@@ -2141,6 +2175,7 @@
        {"showSignal",                          gtkwavetcl_showSignal},
        {"unhighlightSignalsFromList",          
gtkwavetcl_unhighlightSignalsFromList},
        {"signalChangeList",                    gtkwavetcl_signalChangeList},   
/* changed from signal_change_list for consistency! */
+       {"processTclList",                      gtkwavetcl_processTclList}, /* 
not for general-purpose use */
        {"",                                    NULL} /* sentinel */
        };
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gtkwave-3.3.70/src/tcl_helper.c new/gtkwave-3.3.72/src/tcl_helper.c
--- old/gtkwave-3.3.70/src/tcl_helper.c 2016-02-14 20:37:33.000000000 +0100
+++ new/gtkwave-3.3.72/src/tcl_helper.c 2016-04-07 21:35:22.000000000 +0200
@@ -858,6 +858,115 @@
  * ----------------------------------------------------------------------------
  */
 
+void process_tcl_list_2(struct symbol *s, int which_msb, int which_lsb)
+{
+Trptr t;
+nptr nexp;
+int i;
+unsigned int default_flags = GLOBALS->default_flags;
+bvptr v;
+
+Trptr    buffer;            /* cut/copy buffer of traces */
+Trptr    bufferlast;        /* last element of bufferchain */
+int      buffercount;       /* number of traces in buffer */
+
+GLOBALS->default_flags = TR_HIGHLIGHT;
+
+buffer = GLOBALS->traces.buffer; /* copy cut buffer to make re-entrant */
+bufferlast = GLOBALS->traces.bufferlast;
+buffercount = GLOBALS->traces.buffercount;
+
+GLOBALS->traces.buffer = NULL;
+GLOBALS->traces.bufferlast = NULL;
+GLOBALS->traces.buffercount = 0;
+
+t=GLOBALS->traces.first;
+while(t)
+        {
+        if(t->flags&TR_HIGHLIGHT)      /* copy TR_HIGHLIGHT->TR_RSVD and clear 
TR_HIGHLIGHT */
+               {
+               t->flags&=(~TR_HIGHLIGHT);
+               t->flags|=TR_RSVD;
+               }
+               else
+               {
+               t->flags&=(~TR_RSVD);
+               }
+
+        t=t->t_next;
+        }
+
+
+if(which_msb <= which_lsb)
+       {
+       for(i=which_msb;i<=which_lsb;i++)
+               {
+               nexp = ExtractNodeSingleBit(s->n, i);
+               if(nexp)  
+                       {
+                       AddNode(nexp, NULL);
+                       }
+                       else
+                       {
+                       AddNodeUnroll(s->n, NULL);
+                       }
+               }
+       }
+       else
+       {
+       for(i=which_msb;i>=which_lsb;i--)
+               {
+               nexp = ExtractNodeSingleBit(s->n, i);
+               if(nexp)  
+                       {
+                       AddNode(nexp, NULL);
+                       }
+                       else
+                       {
+                       AddNodeUnroll(s->n, NULL);
+                       }
+               }
+       }
+
+v = combine_traces(1, NULL); /* down */
+  if (v)
+       {
+       AddVector(v, NULL);
+       free_2(v->bits->name);
+       v->bits->name=NULL;
+                
+       t = GLOBALS->traces.last;
+                
+       RemoveTrace(t, 0);
+
+       /* t is now the composite signal trace */
+                  
+       create_group("unused_0", t);
+       CloseTrace(t);
+       }
+
+t=GLOBALS->traces.first;
+while(t)
+        {
+       t->flags &= ~TR_HIGHLIGHT;
+
+        if(t->flags&TR_RSVD) /* copy TR_RSVD->TR_HIGHLIGHT and clear TR_RSVD */
+               {
+               t->flags|=TR_HIGHLIGHT;
+               t->flags&=(~TR_RSVD);
+               }
+
+        t=t->t_next;
+        }
+
+GLOBALS->traces.buffer = buffer; /* restore cut buffer */
+GLOBALS->traces.bufferlast = bufferlast;
+GLOBALS->traces.buffercount = buffercount;
+
+GLOBALS->default_flags = default_flags;
+}
+
+
 int process_tcl_list(char *sl, gboolean track_mouse_y)
 {
 char *s_new = NULL;
@@ -867,6 +976,7 @@
 char **list;
 char **s_new_list;
 char **most_recent_lbrack_list;
+char **most_recent_colon_list;
 int *match_idx_list;
 int *match_type_list;
 Trptr t = NULL;
@@ -894,6 +1004,7 @@
 match_idx_list = calloc_2(c, sizeof(int *));
 match_type_list = calloc_2(c, sizeof(int *));
 most_recent_lbrack_list = calloc_2(c, sizeof(char *));
+most_recent_colon_list = calloc_2(c, sizeof(char *));
 
 GLOBALS->default_flags=TR_RJUSTIFY;
 GLOBALS->default_fpshift=0;
@@ -1022,8 +1133,9 @@
                        most_recent_lbrack_list[ii] = chp;
                        lbrack_adj = 1;
                        }
-               }
 
+               most_recent_colon_list[ii]=strchr(most_recent_lbrack_list[ii], 
':');
+               }
 
        unesc_len = strlen(unescaped_str);
        for(i=0;i<GLOBALS->numfacs;i++)
@@ -1165,33 +1277,64 @@
                if((match_type_list[ii] >= 2)&&(s->n->extvals))
                        {
                        nptr nexp;
-                       int bit = atoi(most_recent_lbrack_list[ii]+1 + 
(match_type_list[ii] == 3)); /* == 3 for adjustment when lbrack is escaped */
-                       int which, cnt;
+
+                       int bit_msb = atoi(most_recent_lbrack_list[ii]+1 + 
(match_type_list[ii] == 3)); /* == 3 for adjustment when lbrack is escaped */
+                       int bit_lsb; /* = bit_msb; scan-build: never read */
+                       int which_msb, which_lsb, cnt;
 
                        if(s->n->lsi > s->n->msi)
                                {
-                               for(which=0,cnt=s->n->lsi ; cnt>=s->n->msi ; 
cnt--,which++)
+                               for(which_msb=0,cnt=s->n->msi ; cnt<=s->n->lsi 
; cnt++,which_msb++)
                                        {
-                                       if(cnt==bit) break;
+                                       if(cnt==bit_msb) break;
                                        }
                                }
                                else
                                {
-                               for(which=0,cnt=s->n->msi ; cnt>=s->n->lsi ; 
cnt--,which++)
+                               for(which_msb=0,cnt=s->n->msi ; cnt>=s->n->lsi 
; cnt--,which_msb++)
+                                       {
+                                       if(cnt==bit_msb) break;
+                                       }
+                               }
+                       which_lsb = which_msb;
+
+                       /* Need to fix this to extract more than a single bit 
as in the case of a subrange of an existing vector! */
+                       if(most_recent_colon_list[ii])
+                               {
+                               bit_lsb = atoi(most_recent_colon_list[ii]+1);
+
+                               if(s->n->lsi > s->n->msi)
                                        {
-                                       if(cnt==bit) break;
+                                       for(which_lsb=0,cnt=s->n->msi ; 
cnt<=s->n->lsi ; cnt++,which_lsb++)
+                                               {
+                                               if(cnt==bit_lsb) break;
+                                               }
+                                       }
+                                       else
+                                       {
+                                       for(which_lsb=0,cnt=s->n->msi ; 
cnt>=s->n->lsi ; cnt--,which_lsb++)
+                                               {
+                                               if(cnt==bit_lsb) break;
+                                               }
                                        }
                                }
 
-                       nexp = ExtractNodeSingleBit(s->n, which);
-                       *most_recent_lbrack_list[ii] = '[';
-                       if(nexp)
-                               {
-                               AddNode(nexp, NULL);
-                               }
+                       if(which_msb == which_lsb)
+                               {
+                               nexp = ExtractNodeSingleBit(s->n, which_msb);
+                               *most_recent_lbrack_list[ii] = '[';
+                               if(nexp)
+                                       {
+                                       AddNode(nexp, NULL);
+                                       }
+                                       else
+                                       {
+                                       AddNodeUnroll(s->n, NULL);
+                                       }
+                               }
                                else
                                {
-                               AddNodeUnroll(s->n, NULL);
+                               process_tcl_list_2(s, which_msb, which_lsb); /* 
is complicated, so split out to its own function */
                                }
                        }
                        else
@@ -1253,6 +1396,7 @@
 free_2(s_new_list);
 free_2(match_idx_list);
 free_2(match_type_list);
+free_2(most_recent_colon_list);
 free_2(most_recent_lbrack_list);
 free_2(list);
 


Reply via email to