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);
