Hello community,

here is the log from the commit of package gtkwave for openSUSE:Factory checked 
in at 2016-08-29 15:46:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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-06-12 
18:55:37.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.gtkwave.new/gtkwave.changes     2016-08-29 
15:49:22.000000000 +0200
@@ -1,0 +2,12 @@
+Sun Aug 28 17:45:53 UTC 2016 - [email protected]
+
+- Uptdate to version 3.3.76
+  * Bugfixes and minor changes, see included ChangeLog file
+
+-------------------------------------------------------------------
+Mon Aug  8 18:18:00 UTC 2016 - [email protected]
+
+- Update to version 3.3.75
+  * bugfix release, see included ChangeLog file for details
+
+-------------------------------------------------------------------

Old:
----
  gtkwave-3.3.73.tar.gz

New:
----
  gtkwave-3.3.76.tar.gz

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

Other differences:
------------------
++++++ gtkwave.spec ++++++
--- /var/tmp/diff_new_pack.SkJM5P/_old  2016-08-29 15:49:26.000000000 +0200
+++ /var/tmp/diff_new_pack.SkJM5P/_new  2016-08-29 15:49:26.000000000 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           gtkwave
-Version:        3.3.73
+Version:        3.3.76
 Release:        0
 Summary:        Waveform viewer for Ditital Signals
 License:        GPL-2.0+

++++++ gtkwave-3.3.73.tar.gz -> gtkwave-3.3.76.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gtkwave-3.3.73/ChangeLog new/gtkwave-3.3.76/ChangeLog
--- old/gtkwave-3.3.73/ChangeLog        2016-06-12 06:37:59.000000000 +0200
+++ new/gtkwave-3.3.76/ChangeLog        2016-08-13 23:43:47.000000000 +0200
@@ -1556,3 +1556,23 @@
                Fix emission of all filter names so they are emitted in
                canonical fashion so as to avoid growing strings of ../ in
                savefiles.
+3.3.74 27jul16 Fix for when a signal name is used as a hierarchy name at the
+               same level of scope.  (Affects fsdb.)
+               Added --rcvar command line option to insert rc variable changes
+               individually without needing to point to a configuration file.
+               Change to combine traces down/up routines to handle 2D vector
+               name generation.
+               Allow FSDB files to contain ".gz" and ".bz2" suffixes as the
+               libnffr loader can handle those.
+               If a variable is declared in the dumpfile as an integer, then
+               it is imported to the waveform display as an integer instead of
+               a hex value. This works for dump file formats that show the
+               datatype in the SST window.
+               Added code that should prevent the primary marker from 
+               disappearing unexpectedly as well as dynamic resizing being
+               stuck in the unset marker width.
+3.3.75 02aug16 Fix crash when -S and -W are used in tandem.
+3.3.76 13aug16 Fix for --disable-tcl in ./configure caused by 3.3.75 fix.
+               Crash fix in fstapi.c on read value at time accessing of
+               FST files that use new dynamic aliases, FastLZ, or LZ4.  This
+               primarily affects rtlbrowse.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gtkwave-3.3.73/LICENSE.TXT 
new/gtkwave-3.3.76/LICENSE.TXT
--- old/gtkwave-3.3.73/LICENSE.TXT      2016-05-11 20:22:21.000000000 +0200
+++ new/gtkwave-3.3.76/LICENSE.TXT      2016-08-15 20:03:48.000000000 +0200
@@ -1,6 +1,6 @@
 ##########################################################################
 
-GTKWave 3.3.73 Wave Viewer is Copyright (C) 1999-2016 Tony Bybell.  
+GTKWave 3.3.76 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' old/gtkwave-3.3.73/configure new/gtkwave-3.3.76/configure
--- old/gtkwave-3.3.73/configure        2016-05-11 20:22:21.000000000 +0200
+++ new/gtkwave-3.3.76/configure        2016-08-08 17:43:58.000000000 +0200
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for gtkwave 3.3.73.
+# Generated by GNU Autoconf 2.69 for gtkwave 3.3.76.
 #
 # Report bugs to <[email protected]>.
 #
@@ -580,8 +580,8 @@
 # Identity of this package.
 PACKAGE_NAME='gtkwave'
 PACKAGE_TARNAME='gtkwave'
-PACKAGE_VERSION='3.3.73'
-PACKAGE_STRING='gtkwave 3.3.73'
+PACKAGE_VERSION='3.3.76'
+PACKAGE_STRING='gtkwave 3.3.76'
 PACKAGE_BUGREPORT='[email protected]'
 PACKAGE_URL=''
 
@@ -1383,7 +1383,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures gtkwave 3.3.73 to adapt to many kinds of systems.
+\`configure' configures gtkwave 3.3.76 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1449,7 +1449,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of gtkwave 3.3.73:";;
+     short | recursive ) echo "Configuration of gtkwave 3.3.76:";;
    esac
   cat <<\_ACEOF
 
@@ -1595,7 +1595,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-gtkwave configure 3.3.73
+gtkwave configure 3.3.76
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2239,7 +2239,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by gtkwave $as_me 3.3.73, which was
+It was created by gtkwave $as_me 3.3.76, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3106,7 +3106,7 @@
 
 # Define the identity of the package.
  PACKAGE='gtkwave'
- VERSION='3.3.73'
+ VERSION='3.3.76'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -10997,7 +10997,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by gtkwave $as_me 3.3.73, which was
+This file was extended by gtkwave $as_me 3.3.76, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -11063,7 +11063,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-gtkwave config.status 3.3.73
+gtkwave config.status 3.3.76
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gtkwave-3.3.73/configure.ac 
new/gtkwave-3.3.76/configure.ac
--- old/gtkwave-3.3.73/configure.ac     2016-05-11 20:22:21.000000000 +0200
+++ new/gtkwave-3.3.76/configure.ac     2016-08-08 17:43:58.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.73, [email protected])
+AC_INIT(gtkwave, 3.3.76, [email protected])
 AC_CONFIG_SRCDIR([src/vcd.c])
 AM_INIT_AUTOMAKE
 AC_CONFIG_HEADER([config.h])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gtkwave-3.3.73/contrib/bundle_for_osx/Info-gtkwave.plist 
new/gtkwave-3.3.76/contrib/bundle_for_osx/Info-gtkwave.plist
--- old/gtkwave-3.3.73/contrib/bundle_for_osx/Info-gtkwave.plist        
2016-06-12 06:37:59.000000000 +0200
+++ new/gtkwave-3.3.76/contrib/bundle_for_osx/Info-gtkwave.plist        
2016-08-08 17:43:58.000000000 +0200
@@ -8,7 +8,7 @@
     <key>CFBundleExecutable</key>
     <string>gtkwave</string>
     <key>CFBundleGetInfoString</key>
-    <string>3.3.73, (C) 1999-2016 Tony Bybell 
http://gtkwave.sourceforge.net</string>
+    <string>3.3.76, (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.73</string>
+    <string>3.3.76</string>
     <key>CFBundleSignature</key>
     <string>????</string>
     <key>CFBundleVersion</key>
-    <string>3.3.73</string>
+    <string>3.3.76</string>
     <key>NSHumanReadableCopyright</key>
     <string>Copyright 1999 - 2016 Tony Bybell, GNU General Public 
License.</string>
     <key>LSMinimumSystemVersion</key>
Files old/gtkwave-3.3.73/doc/gtkwave.odt and new/gtkwave-3.3.76/doc/gtkwave.odt 
differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gtkwave-3.3.73/man/gtkwave.1 
new/gtkwave-3.3.76/man/gtkwave.1
--- old/gtkwave-3.3.73/man/gtkwave.1    2016-06-12 06:37:59.000000000 +0200
+++ new/gtkwave-3.3.76/man/gtkwave.1    2016-07-03 03:39:40.000000000 +0200
@@ -1,4 +1,4 @@
-.TH "GTKWAVE" "1" "3.3.73" "Anthony Bybell" "Simulation Wave Viewer"
+.TH "GTKWAVE" "1" "3.3.74" "Anthony Bybell" "Simulation Wave Viewer"
 .SH "NAME"
 .LP 
 gtkwave \- Visualization tool for VCD, LXT, LXT2, VZT, FST, and GHW files
@@ -111,6 +111,9 @@
 be specified earlier in the command line than the \fB\-\-restore\fR option.  
If RPCID is not specified, then the default of 0 is used.
 This option only works if \fB\-\-with-gconf\fR was specified during 
\fI./configure\fP.
 .TP
+\fB\-4\fR,\fB\-\-rcvar\fR
+Specify single rc variable values individually.  These take effect after any 
other rc variables have been loaded from internal defaults or from 
configuration files.
+.TP
 \fB\-I\fR,\fB\-\-interactive\fR
 Specifies that "interactive" VCD mode is to be used which allows a viewer to 
navigate a VCD trace while GTKWave is processing the VCD file.
 When this option is used, the filename is overloaded such that it is the 
hexadecimal value for the shared memory ID of a writer.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gtkwave-3.3.73/src/analyzer.c 
new/gtkwave-3.3.76/src/analyzer.c
--- old/gtkwave-3.3.73/src/analyzer.c   2016-04-07 21:35:22.000000000 +0200
+++ new/gtkwave-3.3.76/src/analyzer.c   2016-07-06 21:58:00.000000000 +0200
@@ -547,7 +547,18 @@
       if(n<0)n=-n;
       n++;
 
-      t->flags = (( n > 3 )||( n < -3 )) ? TR_HEX|TR_RJUSTIFY : 
TR_BIN|TR_RJUSTIFY;
+      switch(nd->vartype)
+       {
+       case ND_VCD_INTEGER:
+       case ND_VCD_PARAMETER:
+       case ND_SV_INT:
+       case ND_SV_SHORTINT:
+       case ND_SV_LONGINT:     t->flags = TR_SIGNED | TR_RJUSTIFY;
+                               break;
+
+       default:                t->flags = (( n > 3 )||( n < -3 )) ? 
TR_HEX|TR_RJUSTIFY : TR_BIN|TR_RJUSTIFY;
+                               break;
+       }
     }
   else
     {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gtkwave-3.3.73/src/analyzer.h 
new/gtkwave-3.3.76/src/analyzer.h
--- old/gtkwave-3.3.73/src/analyzer.h   2016-04-07 03:10:44.000000000 +0200
+++ new/gtkwave-3.3.76/src/analyzer.h   2016-07-27 19:14:56.000000000 +0200
@@ -434,6 +434,8 @@
     TimeType    end;           /* ending time of trace on screen */
     TimeType    marker;
     TimeType    prevmarker;    /* from last drawmarker()               */
+    TimeType    resizemarker;   /* from last MaxSignalLength()          */
+    TimeType    resizemarker2;  /* from 2nd last MaxSignalLength()      */
     TimeType    lmbcache;      /* initial marker pos                   */
     TimeType    timecache;     /* to get around floating pt limitation */
     TimeType    laststart;      /* caches last set value                */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gtkwave-3.3.73/src/helpers/fst/fstapi.c 
new/gtkwave-3.3.76/src/helpers/fst/fstapi.c
--- old/gtkwave-3.3.73/src/helpers/fst/fstapi.c 2015-12-15 07:36:14.000000000 
+0100
+++ new/gtkwave-3.3.76/src/helpers/fst/fstapi.c 2016-08-13 23:43:47.000000000 
+0200
@@ -3074,6 +3074,7 @@
 uint64_t rvat_vc_maxhandle;
 off_t rvat_vc_start;
 uint32_t *rvat_sig_offs;
+int rvat_packtype;
 
 uint32_t rvat_chain_len;
 unsigned char *rvat_chain_mem;
@@ -5886,6 +5887,7 @@
 
 xc->rvat_vc_maxhandle = fstReaderVarint64(xc->f);
 xc->rvat_vc_start = ftello(xc->f);      /* points to '!' character */
+xc->rvat_packtype = fgetc(xc->f);
 
 #ifdef FST_DEBUG
 fprintf(stderr, "\tframe_uclen: %d, frame_clen: %d, frame_maxhandle: %d\n",
@@ -5910,37 +5912,84 @@
 pnt = chain_cmem;
 idx = 0;
 pval = 0;
-do
-        {
-        int skiplen;
-        uint64_t val = fstGetVarint32(pnt, &skiplen);
 
-        if(!val)
-                {
-                pnt += skiplen;
-                val = fstGetVarint32(pnt, &skiplen);
-                xc->rvat_chain_table[idx] = 0;
-                xc->rvat_chain_table_lengths[idx] = -val;
-                idx++;
-                }
-        else
-        if(val&1)
-                {
-                pval = xc->rvat_chain_table[idx] = pval + (val >> 1);
-                if(idx) { xc->rvat_chain_table_lengths[pidx] = pval - 
xc->rvat_chain_table[pidx]; }
-                pidx = idx++;
-                }
-                else
-                {
-                fstHandle loopcnt = val >> 1;
-                for(i=0;i<loopcnt;i++)
+if(sectype == FST_BL_VCDATA_DYN_ALIAS2)
+        {
+        uint32_t prev_alias = 0;
+                                 
+        do      {
+                int skiplen;
+ 
+                if(*pnt & 0x01)
                         {
-                        xc->rvat_chain_table[idx++] = 0;
+                        int64_t shval = fstGetSVarint64(pnt, &skiplen) >> 1;
+                        if(shval > 0)
+                                {
+                                pval = xc->rvat_chain_table[idx] = pval + 
shval;
+                                if(idx) { xc->rvat_chain_table_lengths[pidx] = 
pval - xc->rvat_chain_table[pidx]; }
+                                pidx = idx++;
+                                }
+                        else if(shval < 0)
+                                {
+                                xc->rvat_chain_table[idx] = 0;                 
                  /* need to explicitly zero as calloc above might not run */
+                                xc->rvat_chain_table_lengths[idx] = prev_alias 
= shval;          /* because during this loop iter would give stale data! */
+                                idx++;
+                                } 
+                        else
+                                {
+                                xc->rvat_chain_table[idx] = 0;                 
                  /* need to explicitly zero as calloc above might not run */
+                                xc->rvat_chain_table_lengths[idx] = 
prev_alias;                  /* because during this loop iter would give stale 
data! */
+                                idx++;
+                                }
                         }
-                }
-
-        pnt += skiplen;
-        } while (pnt != (chain_cmem + chain_clen));
+                        else
+                        {
+                        uint64_t val = fstGetVarint32(pnt, &skiplen);
+        
+                        fstHandle loopcnt = val >> 1;
+                        for(i=0;i<loopcnt;i++)
+                                {
+                                xc->rvat_chain_table[idx++] = 0;
+                                }
+                        }
+                        
+                pnt += skiplen;
+                } while (pnt != (chain_cmem + chain_clen));
+        }
+        else
+       {
+       do
+               {
+               int skiplen;
+               uint64_t val = fstGetVarint32(pnt, &skiplen);
+       
+               if(!val)
+                       {
+                       pnt += skiplen;
+                       val = fstGetVarint32(pnt, &skiplen);
+                       xc->rvat_chain_table[idx] = 0;
+                       xc->rvat_chain_table_lengths[idx] = -val;
+                       idx++;
+                       }
+               else
+               if(val&1)
+                       {
+                       pval = xc->rvat_chain_table[idx] = pval + (val >> 1);
+                       if(idx) { xc->rvat_chain_table_lengths[pidx] = pval - 
xc->rvat_chain_table[pidx]; }
+                       pidx = idx++;
+                       }
+                       else
+                       {
+                       fstHandle loopcnt = val >> 1;
+                       for(i=0;i<loopcnt;i++)
+                               {
+                               xc->rvat_chain_table[idx++] = 0;
+                               }
+                       }
+       
+               pnt += skiplen;
+               } while (pnt != (chain_cmem + chain_clen));
+       }
 
 free(chain_cmem);
 xc->rvat_chain_table[idx] = indx_pos - xc->rvat_vc_start;
@@ -6004,10 +6053,20 @@
                 unsigned char *mc = 
malloc(xc->rvat_chain_table_lengths[facidx]);
                 unsigned long destlen = xc->rvat_chain_len;
                 unsigned long sourcelen = xc->rvat_chain_table_lengths[facidx];
-                int rc;
+                int rc = Z_OK;
 
                 fstFread(mc, xc->rvat_chain_table_lengths[facidx], 1, xc->f);
-                rc = uncompress(mu, &destlen, mc, sourcelen);
+
+                switch(xc->rvat_packtype)
+                       {
+                        case '4': rc = (destlen == (unsigned 
long)LZ4_decompress_safe_partial((char *)mc, (char *)mu, sourcelen, destlen, 
destlen)) ? Z_OK : Z_DATA_ERROR;
+                               break;
+                        case 'F': fastlz_decompress(mc, sourcelen, mu, 
destlen); /* rc appears unreliable */
+                               break;
+                        default:  rc = uncompress(mu, &destlen, mc, sourcelen);
+                               break;
+                        }
+
                 free(mc);
 
                 if(rc != Z_OK)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gtkwave-3.3.73/src/helpers/vcd2fst.c 
new/gtkwave-3.3.76/src/helpers/vcd2fst.c
--- old/gtkwave-3.3.73/src/helpers/vcd2fst.c    2015-05-21 21:22:50.000000000 
+0200
+++ new/gtkwave-3.3.76/src/helpers/vcd2fst.c    2016-07-11 17:28:42.000000000 
+0200
@@ -479,7 +479,7 @@
        else
        {
 #ifdef VCD2FST_EXTLOAD_CONV
-       if(suffix_check(vname, "."EXTLOAD_SUFFIX))
+       if(suffix_check(vname, "."EXTLOAD_SUFFIX) || suffix_check(vname, 
"."EXTLOAD_SUFFIX".gz") || suffix_check(vname, "."EXTLOAD_SUFFIX".bz2"))
                {
                sprintf(bin_fixbuff, EXTCONV_PATH" %s", vname);
                f = popen(bin_fixbuff, "r");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gtkwave-3.3.73/src/main.c 
new/gtkwave-3.3.76/src/main.c
--- old/gtkwave-3.3.73/src/main.c       2016-05-11 20:22:21.000000000 +0200
+++ new/gtkwave-3.3.76/src/main.c       2016-08-11 21:33:49.000000000 +0200
@@ -20,6 +20,7 @@
 #ifdef __MINGW32__
 #include <windows.h>
 #endif
+#include "fsdb_wrapper_api.h"
 
 /*
 #define WAVE_CRASH_ON_GTK_WARNING
@@ -215,6 +216,22 @@
 #endif
 
 
+#ifdef WAVE_FSDB_READER_IS_PRESENT
+static void close_all_fsdb_files(void) /* otherwise fsdb can leave around 
stray files if .gz/.bz2 was in use */
+{
+unsigned int i;
+for(i=0;i<GLOBALS->num_notebook_pages;i++)
+       {
+       if((*GLOBALS->contexts)[i]->extload_ffr_ctx)
+               {
+               fsdbReaderClose((*GLOBALS->contexts)[i]->extload_ffr_ctx);
+               (*GLOBALS->contexts)[i]->extload_ffr_ctx = NULL;
+               }
+        }
+}
+#endif
+
+
 static void print_help(char *nam)
 {
 #if defined(EXTLOAD_SUFFIX) && defined(EXTCONV_PATH)
@@ -323,6 +340,7 @@
 RPC_GETOPT
 CHDIR_GETOPT
 RPC_GETOPT3
+"  -4, --rcvar                specify single rc variable values individually\n"
 INTR_GETOPT
 "  -C, --comphier             use compressed hierarchy names (slower)\n"
 "  -g, --giga                 use gigabyte mempacking when recoding (slower)\n"
@@ -469,11 +487,13 @@
 struct Global *old_g = NULL;
 
 int splash_disable_rc_override = 0;
-int mainwindow_already_built;
+int mainwindow_already_built = 0;
 #ifdef MAC_INTEGRATION
 GdkPixbuf *dock_pb;
 #endif
 
+struct rc_override *rc_override_head = NULL, *rc_override_curr = NULL;
+
 WAVE_LOCALE_FIX
 
 /* Initialize the GLOBALS structure for the first time... */
@@ -724,6 +744,7 @@
 init_filetrans_data(); /* for file translation splay trees */
 init_proctrans_data(); /* for proc translation structs */
 init_ttrans_data();    /* for transaction proc translation structs */
+
 if(!mainwindow_already_built)
        {
        atexit(remove_all_proc_filters);
@@ -731,6 +752,9 @@
 #if defined __MINGW32__
        atexit(close_all_fst_files);
 #endif
+#ifdef WAVE_FSDB_READER_IS_PRESENT
+       atexit(close_all_fsdb_files);
+#endif
        }
 
 if(mainwindow_already_built)
@@ -779,10 +803,11 @@
                {"rpcid", 1, 0, '1' },
                {"chdir", 1, 0, '2'},
                {"restore", 0, 0, '3'},
+                {"rcvar", 1, 0, '4'},
                 {0, 0, 0, 0}
                 };
 
-        c = getopt_long (argc, argv, 
"zf:Fon:a:Ar:dl:s:e:c:t:NS:vVhxX:MD:IgCLR:P:O:WT:1:2:3", long_options,
+        c = getopt_long (argc, argv, 
"zf:Fon:a:Ar:dl:s:e:c:t:NS:vVhxX:MD:IgCLR:P:O:WT:1:2:34:", long_options,
 &option_index);
 
         if (c == -1) break;     /* no more args */
@@ -979,6 +1004,23 @@
                        strcpy(override_rc, optarg);
                        break;
 
+               case '4':
+                       {
+                       struct rc_override *rco = calloc_2(1, sizeof(struct 
rc_override));
+                       rco->str = strdup_2(optarg);
+
+                       if(rc_override_curr)
+                               {
+                               rc_override_curr->next = rco;
+                               rc_override_curr = rco;
+                               }
+                               else
+                               {
+                               rc_override_head = rc_override_curr = rco;
+                               }
+                       }
+                       break;
+
                 case 's':
                        if(GLOBALS->skip_start) free_2(GLOBALS->skip_start);
                        GLOBALS->skip_start = malloc_2(strlen(optarg)+1);
@@ -1268,6 +1310,24 @@
        }
 
 fprintf(stderr, "\n%s\n\n",WAVE_VERSION_INFO);
+
+
+if(!old_g) /* copy all variables earlier when old_g is set */
+       {
+       while(rc_override_head)
+               {
+               int rco_succ;
+               char *rco_copy_str = strdup_2(rc_override_head->str);
+               rco_succ = insert_rc_variable(rc_override_head->str);
+               fprintf(stderr, "RCVAR   | '%s' %s\n", rco_copy_str, rco_succ ? 
"FOUND" : "NOT FOUND");
+               free_2(rco_copy_str);
+               rc_override_curr = rc_override_head->next;
+               free_2(rc_override_head->str);
+               free_2(rc_override_head);
+               rc_override_head = rc_override_curr;
+               }
+       }
+
 if(!is_wish)
        {
        if(tcl_interpreter_needs_making)
@@ -1332,7 +1392,11 @@
        }
 else
 #if defined(EXTLOAD_SUFFIX)
-if(suffix_check(GLOBALS->loaded_file_name, "."EXTLOAD_SUFFIX) && !opt_vcd)
+if(
+   (suffix_check(GLOBALS->loaded_file_name, "."EXTLOAD_SUFFIX      ) && 
!opt_vcd) ||
+   (suffix_check(GLOBALS->loaded_file_name, "."EXTLOAD_SUFFIX".gz" ) && 
!opt_vcd) ||   /* loader automatically does gzip -cd */
+   (suffix_check(GLOBALS->loaded_file_name, "."EXTLOAD_SUFFIX".bz2") && 
!opt_vcd)      /* loader automatically does bzip2 -cd */
+  )
        {
        TimeType extload_max;
 
@@ -2420,7 +2484,11 @@
 
 init_busy();
 
-if(scriptfile)
+if(scriptfile
+#if defined(HAVE_LIBTCL)
+        && GLOBALS->interp
+#endif
+)
        {
        execute_script(scriptfile, 1); /* deallocate the name in the script 
because context might swap out from under us! */
        scriptfile=NULL;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gtkwave-3.3.73/src/menu.c 
new/gtkwave-3.3.76/src/menu.c
--- old/gtkwave-3.3.73/src/menu.c       2016-04-07 03:17:54.000000000 +0200
+++ new/gtkwave-3.3.76/src/menu.c       2016-07-03 03:39:40.000000000 +0200
@@ -3107,6 +3107,7 @@
 bvptr combine_traces(int direction, Trptr single_trace_only)
 {
   Trptr t, tmp;
+  Trptr tfirst = NULL;
   int tmpi,dirty=0, attrib_reqd=0;
   nptr bitblast_parent;
   int bitblast_delta=0;
@@ -3184,6 +3185,7 @@
        t = single_trace_only;
        }
 
+      tfirst = t;
       while(t)
        {
          if(t->flags&TR_HIGHLIGHT)
@@ -3401,6 +3403,67 @@
              aname = NULL;
            }
 
+         if((!aname) && !single_trace_only) /* ajb 020716: recent add to 
handle combine down on 2D vectors */
+               {
+               char *t_topname = NULL;
+               char *t_botname = NULL;
+               t = tfirst;
+               while(t)
+                       {
+                       if(t->flags&TR_HIGHLIGHT)
+                               {
+                               if(t->flags&(TR_BLANK|TR_ANALOG_BLANK_STRETCH))
+                                       {
+                                       /* nothing */
+                                       }
+                               else
+                                       {
+                                       if(t->vector)
+                                               {
+                                               char *vname = t->n.vec ? 
t->n.vec->bvname : NULL;
+                                               if(vname)
+                                                       {
+                                                       if(!t_topname)
+                                                               {
+                                                               t_topname = 
vname;
+                                                               }
+                                                               else
+                                                               {
+                                                               t_botname = 
vname;
+                                                               }       
+                                                       }
+                                               }
+                                               else
+                                               {
+                                               if(!t_topname)
+                                                       {
+                                                       t_topname = 
t->n.nd->nname;
+                                                       }
+                                                       else
+                                                       {
+                                                       t_botname = 
t->n.nd->nname;
+                                                       }
+       
+                                               if(t_topname && t_botname)
+                                                       {
+                                                       char *mat = 
attempt_vecmatch(t_topname, t_botname);
+                                                       if(!mat) { t_topname = 
t_botname = NULL; break; } else { free_2(mat); }
+                                                       }
+                                               }
+                                       }
+
+                               }
+
+                       t=t->t_next;
+                       }
+
+               if(t_topname && t_botname)
+                       {
+                       aname = direction ? attempt_vecmatch(t_topname, 
t_botname) : attempt_vecmatch(t_botname, t_topname); /* return this match */
+                       }
+               }
+
+
          if(!b->attribs)
            {
              if(aname)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gtkwave-3.3.73/src/rc.c new/gtkwave-3.3.76/src/rc.c
--- old/gtkwave-3.3.73/src/rc.c 2016-05-11 20:22:21.000000000 +0200
+++ new/gtkwave-3.3.76/src/rc.c 2016-07-03 03:39:40.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) Tony Bybell 1999-2013.
+ * Copyright (c) Tony Bybell 1999-2016.
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -971,6 +971,63 @@
 f_color_gmstrd          ("7d8104"); /* green mustard */
 }
 
+int insert_rc_variable(char *str)
+{
+int i;
+int len;
+int ok = 0;
+
+len=strlen(str);
+if(len)
+       {
+       for(i=0;i<len;i++)
+               {
+               int pos;
+               if((str[i]==' ')||(str[i]=='\t')) continue;     /* skip leading 
ws */
+               if(str[i]=='#') break;                          /* is a comment 
*/
+               for(pos=i;i<len;i++)
+                       {
+                       if((str[i]==' ')||(str[i]=='\t'))
+                               {
+                               str[i]=0; /* null term envname */
+
+                               for(i=i+1;i<len;i++)
+                                       {
+                                       struct rc_entry *r;
+
+                                       if((str[i]==' ')||(str[i]=='\t')) 
continue;
+                                       if((r=bsearch((void *)(str+pos), (void 
*)rcitems,
+                                               sizeof(rcitems)/sizeof(struct 
rc_entry),
+                                               sizeof(struct rc_entry), 
rc_compare)))
+                                               {
+                                               int j;
+                                                       for(j=len-1;j>=i;j--)
+                                                       {
+                                                       if((str[j]==' 
')||(str[j]=='\t')) /* nuke trailing spaces */
+                                                               {
+                                                               str[j]=0;
+                                                               continue;
+                                                               }
+                                                               else
+                                                               {
+                                                               break;
+                                                               }
+                                                       }
+                                               r->func(str+i); /* call 
resolution function */
+                                               ok = 1;
+                                               }
+                                       break;
+                                       }
+                               break;  /* added so multiple word values work 
properly*/
+                               }
+                       }
+               break;
+               }
+       }
+
+return(ok);
+}
+
 
 void read_rc_file(char *override_rc)
 {
@@ -1085,55 +1142,7 @@
        GLOBALS->rc_line_no++;
        if((str=fgetmalloc(handle)))
                {
-               int len;
-               len=strlen(str);
-               if(len)
-                       {
-                       for(i=0;i<len;i++)
-                               {
-                               int pos;
-                               if((str[i]==' ')||(str[i]=='\t')) continue;     
/* skip leading ws */
-                               if(str[i]=='#') break;                          
/* is a comment */
-                               for(pos=i;i<len;i++)
-                                       {
-                                       if((str[i]==' ')||(str[i]=='\t'))
-                                               {
-                                               str[i]=0; /* null term envname 
*/
-
-                                               for(i=i+1;i<len;i++)
-                                                       {
-                                                       struct rc_entry *r;
-
-                                                       if((str[i]==' 
')||(str[i]=='\t')) continue;
-                                                       if((r=bsearch((void 
*)(str+pos), (void *)rcitems,
-                                                               
sizeof(rcitems)/sizeof(struct rc_entry),
-                                                               sizeof(struct 
rc_entry), rc_compare)))
-                                                               {
-                                                               int j;
-
-                                                               
for(j=len-1;j>=i;j--)
-                                                                       {
-                                                                       
if((str[j]==' ')||(str[j]=='\t')) /* nuke trailing spaces */
-                                                                               
{
-                                                                               
str[j]=0;
-                                                                               
continue;
-                                                                               
}
-                                                                               
else
-                                                                               
{
-                                                                               
break;
-                                                                               
}
-                                                                       }
-                                                               r->func(str+i); 
/* call resolution function */
-                                                               }
-                                                       break;
-                                                       }
-                                               break;  /* added so multiple 
word values work properly*/
-                                               }
-                                       }
-                               break;
-                               }
-
-                       }
+               insert_rc_variable(str);
                free_2(str);
                }
        }
@@ -1142,4 +1151,3 @@
 errno=0;
 return;
 }
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gtkwave-3.3.73/src/rc.h new/gtkwave-3.3.76/src/rc.h
--- old/gtkwave-3.3.73/src/rc.h 2014-05-28 06:59:41.000000000 +0200
+++ new/gtkwave-3.3.76/src/rc.h 2016-07-03 03:39:40.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) Tony Bybell 1999-2009.
+ * Copyright (c) Tony Bybell 1999-2016.
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -18,7 +18,14 @@
 int (*func)(char *);
 };
 
+struct rc_override /* used for --rcvar command line option */
+{
+struct rc_override *next;
+char *str;
+};
+
 void read_rc_file(char *override_rc);
+int insert_rc_variable(char *str);
 int get_rgb_from_name(char *str);
 GdkGC *get_gc_from_name(char *str);
 
@@ -117,4 +124,3 @@
 int  f_zoom_pow10_snap (char *str);
 
 #endif
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gtkwave-3.3.73/src/tree.c 
new/gtkwave-3.3.76/src/tree.c
--- old/gtkwave-3.3.73/src/tree.c       2014-05-28 06:59:41.000000000 +0200
+++ new/gtkwave-3.3.76/src/tree.c       2016-07-01 02:42:56.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) Tony Bybell 1999-2011.
+ * Copyright (c) Tony Bybell 1999-2016.
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -681,7 +681,7 @@
 if(GLOBALS->facs2_pos_tree_c_1>=0)
        {
        fprintf(stderr, "Internal Error: GLOBALS->facs2_pos_tree_c_1 = 
%d\n",GLOBALS->facs2_pos_tree_c_1);
-       fprintf(stderr, "[This is usually the result of multiply defined 
facilities.]\n");
+       fprintf(stderr, "[This is usually the result of multiply defined 
facilities such as a hierarchy name also being used as a signal at the same 
level of scope.]\n");
        exit(255);
        }
 
@@ -712,7 +712,7 @@
                {
 rs:            s=get_module_name(s);
 
-               if(t && !strcmp(t->name, GLOBALS->module_tree_c_1))
+               if(s && t && !strcmp(t->name, GLOBALS->module_tree_c_1)) /* ajb 
300616 added "s &&" to cover case where we can have hierarchy + final name are 
same, see A.B.C.D notes elsewhere in this file */
                        {
                        prevt = t;
                        t = t->child;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gtkwave-3.3.73/src/treesearch_gtk2.c 
new/gtkwave-3.3.76/src/treesearch_gtk2.c
--- old/gtkwave-3.3.73/src/treesearch_gtk2.c    2014-12-05 09:03:31.000000000 
+0100
+++ new/gtkwave-3.3.76/src/treesearch_gtk2.c    2016-07-27 23:56:18.000000000 
+0200
@@ -313,7 +313,7 @@
 int force_open_tree_node(char *name, int keep_path_nodes_open, struct tree 
**t_pnt) {
   GtkCTree *ctree = GLOBALS->ctree_main;
   int rv = 1 ;                 /* can possible open */
-  if(ctree) {
+  if(ctree && GLOBALS->any_tree_node) {
     int namlen = strlen(name);
     char *namecache = wave_alloca(namlen+1);
     char *name_end = name + namlen - 1;
@@ -524,7 +524,7 @@
 {
 GtkCTree *ctree = GLOBALS->ctree_main;
 
-if(ctree)
+if(ctree && GLOBALS->any_tree_node)
        {
        int namlen = strlen(name);
        char *namecache = wave_alloca(namlen+1);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gtkwave-3.3.73/src/wavewindow.c 
new/gtkwave-3.3.76/src/wavewindow.c
--- old/gtkwave-3.3.73/src/wavewindow.c 2014-09-26 22:00:23.000000000 +0200
+++ new/gtkwave-3.3.76/src/wavewindow.c 2016-07-27 19:14:56.000000000 +0200
@@ -631,6 +631,12 @@
        GLOBALS->signalwindow_width_dirty=1;
        }
 GLOBALS->tims.prevmarker=GLOBALS->tims.marker;
+
+/* additional case for race conditions with MaxSignalLength */
+if(((GLOBALS->tims.resizemarker==-1)||(GLOBALS->tims.resizemarker2==-1)) && 
(GLOBALS->tims.resizemarker!=GLOBALS->tims.resizemarker2))
+       {
+       GLOBALS->signalwindow_width_dirty=1;
+       }
 }
 
 
@@ -896,7 +902,16 @@
 gdk_draw_rectangle(GLOBALS->signalpixmap,
        GLOBALS->gc.gc_ltgray, TRUE, 0, 0,
         GLOBALS->signal_fill_width, GLOBALS->signalarea->allocation.height);
+
+{
+char signalwindow_width_dirty = GLOBALS->signalwindow_width_dirty;
 sync_marker();
+if(!signalwindow_width_dirty && GLOBALS->signalwindow_width_dirty)
+       {
+       MaxSignalLength_2(1);
+       }
+}
+
 RenderSigs((int)(GTK_ADJUSTMENT(GLOBALS->wave_vslider)->value),0);
 
 if(GLOBALS->signalarea_has_focus)
@@ -950,9 +965,12 @@
        newcurr=GLOBALS->tims.start;
        }
 
+newcurr = time_trunc(newcurr);
+if(newcurr < 0) newcurr = GLOBALS->min_time; /* prevents marker from 
disappearing? */
+
 if(!is_button_2)
        {
-       
update_markertime(GLOBALS->tims.marker=cook_markertime(time_trunc(newcurr), 
xin, yin));
+       update_markertime(GLOBALS->tims.marker=cook_markertime(newcurr, xin, 
yin));
        if(GLOBALS->tims.lmbcache<0) GLOBALS->tims.lmbcache=time_trunc(newcurr);
 
        draw_marker_partitions();
@@ -964,7 +982,7 @@
        }
        else
        {
-       GLOBALS->tims.baseline = ((GLOBALS->tims.baseline<0)||(is_button_2<0)) 
? cook_markertime(time_trunc(newcurr), xin, yin) : -1;
+       GLOBALS->tims.baseline = ((GLOBALS->tims.baseline<0)||(is_button_2<0)) 
? cook_markertime(newcurr, xin, yin) : -1;
        update_basetime(GLOBALS->tims.baseline);
        update_markertime(GLOBALS->tims.marker);
        wavearea_configure_event(GLOBALS->wavearea, NULL);
@@ -2444,8 +2462,17 @@
        if(GLOBALS->signal_pixmap_width > 32767) GLOBALS->signal_pixmap_width = 
32767; /* fixes X11 protocol limitation crash */
        }
 
+GLOBALS->tims.resizemarker2 = GLOBALS->tims.resizemarker;
+GLOBALS->tims.resizemarker = GLOBALS->tims.marker;
+
 if(GLOBALS->signal_pixmap_width<60) GLOBALS->signal_pixmap_width=60;
 
+MaxSignalLength_2(dirty_kick);
+}
+
+
+void MaxSignalLength_2(char dirty_kick)
+{
 if(!GLOBALS->in_button_press_wavewindow_c_1)
        {
        if(!GLOBALS->do_resize_signals)
@@ -2519,6 +2546,7 @@
                }
        }
 }
+
 /***************************************************************************/
 
 void UpdateSigValue(Trptr t)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gtkwave-3.3.73/src/wavewindow.h 
new/gtkwave-3.3.76/src/wavewindow.h
--- old/gtkwave-3.3.73/src/wavewindow.h 2014-05-28 06:59:41.000000000 +0200
+++ new/gtkwave-3.3.76/src/wavewindow.h 2016-07-27 19:14:56.000000000 +0200
@@ -13,6 +13,8 @@
 void button_press_release_common(void);
 void UpdateSigValue(Trptr t);
 void MaxSignalLength(void);
+void MaxSignalLength_2(char dirty_kick); /* used to resize but not fully 
recalculate like MaxSignalLength() */
+
 void RenderSigs(int trtarget, int update_waves);
 int RenderSig(Trptr t, int i, int dobackground);
 void populateBuffer(Trptr t, char *altname, char* buf);


Reply via email to