diff -Nru guymager-0.8.4/aaff.cpp guymager-0.8.7/aaff.cpp --- guymager-0.8.4/aaff.cpp 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/aaff.cpp 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Multithreaded AFF (AAFF = Advanced AFF) // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/aaff.h guymager-0.8.7/aaff.h --- guymager-0.8.4/aaff.h 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/aaff.h 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Multithreaded AFF (AAFF = Advanced AFF) // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/aewf.cpp guymager-0.8.7/aewf.cpp --- guymager-0.8.4/aewf.cpp 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/aewf.cpp 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Multithreaded AEWF (AEWF = Advanced EWF) // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // @@ -928,7 +929,7 @@ { t_Aewf *pAewf = *ppAewf; - if (pAewf->pCurrentSegmentFile) // This must be checked as pCurrentSegmentFile might be zero if an error occured (for example fwrite or fclose error during acquisition) + if (pAewf->pCurrentSegmentFile) // This must be checked as pCurrentSegmentFile might be zero if an error occurred (for example fwrite or fclose error during acquisition) { if (pAewf->CurrentSectionSectorContentSize) // Is there an unfinished section "sectors"? { diff -Nru guymager-0.8.4/aewf.h guymager-0.8.7/aewf.h --- guymager-0.8.4/aewf.h 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/aewf.h 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Multithreaded AEWF (AEWF = Advanced EWF) // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/changelog guymager-0.8.7/changelog --- guymager-0.8.4/changelog 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/changelog 2018-01-05 09:51:46.000000000 +0000 @@ -1,7 +1,23 @@ +guymager-beta (0.8.7-1) unstable; urgency=low + * Typing errors corrected + -- Guy Voncken Fri, 22 Sep 2017 10:00:00 +0200 + +guymager-beta (0.8.6-1) unstable; urgency=low + * Upon disconnection of device, do not pause verification if it is done + on the image only (pausing still for source verifications). + * New cfg parameter AdditionalStateInfoName + * System signal HUP triggers device rescanning + * Special tokens %UserField% and %AddStateInfo% added + -- Guy Voncken Fri, 11 Aug 2017 11:00:00 +0200 + +guymager-beta (0.8.5-1) unstable; urgency=low + * New cfg parameters BadSectorLogThreshold and BadSectorLogModulo. + -- Guy Voncken Wed, 26 Apr 2017 11:00:00 +0200 + guymager-beta (0.8.4-1) unstable; urgency=low * Removed bug that occurred if remaining time was longer than 99 hours * Adapted to gcc7 - -- Guy Voncken Fri, 02 Feb 2017 09:00:00 +0100 + -- Guy Voncken Thu, 02 Feb 2017 17:00:00 +0100 guymager-beta (0.8.3-1) unstable; urgency=low * Corrected bug where Guymager not always recognised if duplicate image or diff -Nru guymager-0.8.4/common.h guymager-0.8.7/common.h --- guymager-0.8.4/common.h 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/common.h 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Standard include file // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/compileinfo.h guymager-0.8.7/compileinfo.h --- guymager-0.8.4/compileinfo.h 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/compileinfo.h 2018-01-05 09:51:46.000000000 +0000 @@ -12,7 +12,8 @@ // See .pro file as well. // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/config.cpp guymager-0.8.7/config.cpp --- guymager-0.8.4/config.cpp 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/config.cpp 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Application configuration data // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // @@ -407,6 +408,7 @@ {CFGASSIGN_BOTH_MULTIPLE, NULL , {"ScreenRefreshInterval" , CFGTYPE_INTEGER, ELT(ScreenRefreshInterval ), 0, 1, 8640000, NULL }, CFG_FILLUP_FORLINT}, {CFGASSIGN_BOTH_MULTIPLE, NULL , {"UseFileDialogFromQt" , CFGTYPE_SET , ELT(UseFileDialogFromQt) , 0, 0, 0, INIARR(SetArrBoolean) }, CFG_FILLUP_FORLINT}, {CFGASSIGN_BOTH_MULTIPLE, NULL , {"UserFieldName" , CFGTYPE_STRING , ELT_SIZ(UserFieldName ), 0, 0, NULL }, CFG_FILLUP_FORLINT}, + {CFGASSIGN_BOTH_MULTIPLE, NULL , {"AdditionalStateInfoName" , CFGTYPE_STRING , ELT_SIZ(AdditionalStateInfoName ), 0, 0, NULL }, CFG_FILLUP_FORLINT}, {CFGASSIGN_BOTH_MULTIPLE, NULL , {"WarnAboutImageSize" , CFGTYPE_SET , ELT(WarnAboutImageSize) , 0, 0, 0, INIARR(SetArrBoolean) }, CFG_FILLUP_FORLINT}, {CFGASSIGN_BOTH_MULTIPLE, NULL , {"WarnAboutSegmentFileCount" , CFGTYPE_SET , ELT(WarnAboutSegmentFileCount) , 0, 0, 0, INIARR(SetArrBoolean) }, CFG_FILLUP_FORLINT}, @@ -452,6 +454,8 @@ {CFGASSIGN_BOTH_MULTIPLE, NULL , {"FifoMemoryManager" , CFGTYPE_SET , ELT(FifoMemoryManager) , 0, 0, 0, INIARR(SetArrBoolean) }, CFG_FILLUP_FORLINT}, {CFGASSIGN_BOTH_MULTIPLE, NULL , {"UseSeparateHashThread" , CFGTYPE_SET , ELT(UseSeparateHashThread) , 0, 0, 0, INIARR(SetArrBoolean) }, CFG_FILLUP_FORLINT}, {CFGASSIGN_BOTH_MULTIPLE, CfgIniCPUs , {"CompressionThreads" , CFGTYPE_SET , ELT(CompressionThreads) , 0, 0, 1024, INIARR(SetArrCompressionThreads)}, CFG_FILLUP_FORLINT}, + {CFGASSIGN_BOTH_MULTIPLE, NULL , {"BadSectorLogThreshold" , CFGTYPE_INTEGER, ELT(BadSectorLogThreshold) , 0, 0,99999999, NULL }, CFG_FILLUP_FORLINT}, + {CFGASSIGN_BOTH_MULTIPLE, NULL , {"BadSectorLogModulo" , CFGTYPE_INTEGER, ELT(BadSectorLogModulo) , 0, 1,99999999, NULL }, CFG_FILLUP_FORLINT}, {CFGASSIGN_BOTH_MULTIPLE, CfgIniJobs , {"LimitJobs" , CFGTYPE_SET , ELT(LimitJobs) , 0, 1, 8, INIARR(SetArrMaximumJobs) }, CFG_FILLUP_FORLINT}, {CFGASSIGN_BOTH_MULTIPLE, NULL , {"JobMaxBadSectors" , CFGTYPE_INTEGER, ELT(JobMaxBadSectors) , 0, 0,99999999, NULL }, CFG_FILLUP_FORLINT}, {CFGASSIGN_BOTH_MULTIPLE, NULL , {"JobDisconnectTimeout" , CFGTYPE_INTEGER, ELT(JobDisconnectTimeout) , 0, 0,99999999, NULL }, CFG_FILLUP_FORLINT}, diff -Nru guymager-0.8.4/config.h guymager-0.8.7/config.h --- guymager-0.8.4/config.h 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/config.h 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Application configuration data // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // @@ -147,7 +148,8 @@ t_CfgNumberStyle NumberStyle; int ScreenRefreshInterval; int UseFileDialogFromQt; - char UserFieldName[CFG_MAX_MISC_LEN+1]; + char UserFieldName [CFG_MAX_MISC_LEN+1]; + char AdditionalStateInfoName[CFG_MAX_MISC_LEN+1]; int WarnAboutImageSize; int WarnAboutSegmentFileCount; @@ -194,6 +196,8 @@ int FifoMemoryManager; int UseSeparateHashThread; int CompressionThreads; + int BadSectorLogThreshold; + int BadSectorLogModulo; int LimitJobs; int JobMaxBadSectors; int JobDisconnectTimeout; diff -Nru guymager-0.8.4/debian/changelog guymager-0.8.7/debian/changelog --- guymager-0.8.4/debian/changelog 2017-08-17 11:49:45.000000000 +0000 +++ guymager-0.8.7/debian/changelog 2018-01-05 23:03:50.000000000 +0000 @@ -1,3 +1,21 @@ +guymager (0.8.7-1) unstable; urgency=medium + + * [9c422bf] Build-depend on libparted-dev rather than libparted0-dev. + Thanks to Colin Watson for the bugreport + (Closes: #878630) + * [966f4ca] No longer Recommend gksu, switch to policykit instead. + Thanks to Jeremy Bicha for the bug report, thanks + to Guy for feedback on pkexec (Closes: #885551) + * [f67a4ea] New upstream version 0.8.7 + * [357adc4] Switch from Qt4 to Qt5 (Closes: #874902) + * [9011fcf] Ship guymager manpage + * [3767451] Add further newly created files to clean target + * [3e2044a] Bump Standards-Version to 4.1.3 + * [64c54d9] Build-Depend on libguytools2-dev >= 2.0.5~, required for Qt5 + support + + -- Michael Prokop Fri, 05 Jan 2018 23:59:23 +0100 + guymager (0.8.4-2) unstable; urgency=medium * [51f6f0f] Switching to Architecture "any" (Closes: #800546) diff -Nru guymager-0.8.4/debian/control guymager-0.8.7/debian/control --- guymager-0.8.4/debian/control 2017-08-17 11:49:41.000000000 +0000 +++ guymager-0.8.7/debian/control 2018-01-05 23:18:28.000000000 +0000 @@ -8,14 +8,15 @@ debhelper (>= 9), libbfio-dev, libewf-dev (>=20080501), - libguytools2-dev, - libparted0-dev, + libguytools2-dev (>= 2.0.5~), + libparted-dev, libprocps-dev, - libqt4-dev, libssl-dev, libudev-dev, + qtbase5-dev, + qttools5-dev-tools, quilt, -Standards-Version: 4.0.1 +Standards-Version: 4.1.3 Homepage: http://guymager.sourceforge.net/ Vcs-Browser: https://anonscm.debian.org/cgit/forensics/guymager.git Vcs-Git: https://anonscm.debian.org/git/forensics/guymager.git @@ -29,7 +30,7 @@ ${misc:Depends}, ${shlibs:Depends}, Recommends: - gksu, + policykit-1, Description: Forensic imaging tool based on Qt The forensic imager contained in this package, guymager, was designed to support different image file formats, to be most user-friendly and to run diff -Nru guymager-0.8.4/debian/guymager.manpages guymager-0.8.7/debian/guymager.manpages --- guymager-0.8.4/debian/guymager.manpages 1970-01-01 00:00:00.000000000 +0000 +++ guymager-0.8.7/debian/guymager.manpages 2018-01-05 17:05:29.000000000 +0000 @@ -0,0 +1 @@ +manuals/guymager.1 diff -Nru guymager-0.8.4/debian/guymager.policy guymager-0.8.7/debian/guymager.policy --- guymager-0.8.4/debian/guymager.policy 1970-01-01 00:00:00.000000000 +0000 +++ guymager-0.8.7/debian/guymager.policy 2018-01-05 16:55:36.000000000 +0000 @@ -0,0 +1,17 @@ + + + + + Authentication is required to run the guymager tool + guymager + + auth_admin + auth_admin + auth_admin + + /usr/bin/guymager + true + + diff -Nru guymager-0.8.4/debian/patches/desktop_integration guymager-0.8.7/debian/patches/desktop_integration --- guymager-0.8.4/debian/patches/desktop_integration 1970-01-01 00:00:00.000000000 +0000 +++ guymager-0.8.7/debian/patches/desktop_integration 2018-01-05 16:55:36.000000000 +0000 @@ -0,0 +1,17 @@ +From: Michael Prokop +Subject: Don't depend on unmaintained gksudo + +Bug-Debian: http://bugs.debian.org/885551 +diff --git a/guymager.desktop b/guymager.desktop +index 1520743..825b306 100644 +--- a/guymager.desktop ++++ b/guymager.desktop +@@ -11,7 +11,7 @@ Comment=Fast forensic imager + Icon=guymager_128.png + TryExec=guymager + #Exec=su-to-root -X -c guymager +-Exec=gksudo guymager ++Exec=pkexec guymager + Terminal=false + # Categorie entry according to version 1.0 of + # http://www.freedesktop.org/wiki/Specifications/menu-spec diff -Nru guymager-0.8.4/debian/patches/series guymager-0.8.7/debian/patches/series --- guymager-0.8.4/debian/patches/series 2017-08-17 10:12:36.000000000 +0000 +++ guymager-0.8.7/debian/patches/series 2018-01-05 09:42:45.000000000 +0000 @@ -1 +1,2 @@ adjust_compileinfo +desktop_integration diff -Nru guymager-0.8.4/debian/rules guymager-0.8.7/debian/rules --- guymager-0.8.4/debian/rules 2017-08-17 10:12:36.000000000 +0000 +++ guymager-0.8.7/debian/rules 2018-01-05 17:05:29.000000000 +0000 @@ -10,13 +10,13 @@ override_dh_auto_configure: dh_quilt_patch dh_testdir - qmake-qt4 DEFINES+="SPLASH_DIR=\'\\\"/usr/share/guymager\\\"\' LANGUAGE_DIR=\'\\\"/usr/share/guymager\\\"\' LANGUAGE_DIR_QT=\'\\\"/usr/share/qt4/translations\\\"\'" + qmake -qt5 DEFINES+="SPLASH_DIR=\'\\\"/usr/share/guymager\\\"\' LANGUAGE_DIR=\'\\\"/usr/share/guymager\\\"\' LANGUAGE_DIR_QT=\'\\\"/usr/share/qt5/translations\\\"\'" touch configure-stamp override_dh_auto_build: dh_testdir $(MAKE) - lrelease guymager.pro + qtchooser -run-tool=lrelease -qt=qt5 guymager.pro cd manuals && ./rebuild.sh && cd - touch $@ @@ -26,11 +26,17 @@ dh_testroot rm -f build-stamp configure-stamp # dpkg-buildpackage starts with cleaning, so we have to be sure that there's a - # Makefile (and thus call qmake-qt4): - qmake-qt4 + # Makefile (and thus call qmake): + qmake -qt5 $(MAKE) clean # remove leftover files: + rm -f .qmake.stash compileinfo.cpp manuals/guymager.1 rm -f guymager - rm -f guymager_de.qm guymager_en.qm guymager_fr.qm guymager_it.qm guymager_nl.qm + rm -f guymager_cn.qm guymager_de.qm guymager_en.qm guymager_fr.qm guymager_it.qm guymager_nl.qm rm -f Makefile dh_clean + +override_dh_auto_install: + dh_auto_install + dh_installdirs /usr/share/polkit-1/actions + install -m 644 debian/guymager.policy debian/guymager/usr/share/polkit-1/actions/guymager.policy diff -Nru guymager-0.8.4/device.cpp guymager-0.8.7/device.cpp --- guymager-0.8.4/device.cpp 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/device.cpp 2018-01-05 09:51:46.000000000 +0000 @@ -11,7 +11,8 @@ // window. // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // @@ -888,6 +889,8 @@ DeviceReplace (Str, "%BadSectors%" , GetBadSectorCount (pDevice).toString()); DeviceReplace (Str, "%HiddenAreas%" , GetHiddenAreas (pDevice).toString()); DeviceReplace (Str, "%ExtendedState%" , GetState (pDevice).toString()); + DeviceReplace (Str, "%UserField%" , GetUserField (pDevice).toString()); + DeviceReplace (Str, "%AddStateInfo%" , GetAddStateInfo (pDevice).toString()); } DeviceReplace (Str, "%Version%" , QString(pCompileInfoVersion)); diff -Nru guymager-0.8.4/device.h guymager-0.8.7/device.h --- guymager-0.8.4/device.h 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/device.h 2018-01-05 09:51:46.000000000 +0000 @@ -7,7 +7,8 @@ // Section Nouvelles Technologies // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/devicelistmodel.h guymager-0.8.7/devicelistmodel.h --- guymager-0.8.4/devicelistmodel.h 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/devicelistmodel.h 2018-01-05 09:51:46.000000000 +0000 @@ -10,7 +10,8 @@ // screen // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/dlgabort.cpp guymager-0.8.7/dlgabort.cpp --- guymager-0.8.4/dlgabort.cpp 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/dlgabort.cpp 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Dialog that is opened when aborting an acquisition // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/dlgabort.h guymager-0.8.7/dlgabort.h --- guymager-0.8.4/dlgabort.h 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/dlgabort.h 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Dialog that is opened when aborting an acquisition // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/dlgacquire.cpp guymager-0.8.7/dlgacquire.cpp --- guymager-0.8.4/dlgacquire.cpp 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/dlgacquire.cpp 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Acquisition dialog // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/dlgacquire.h guymager-0.8.7/dlgacquire.h --- guymager-0.8.4/dlgacquire.h 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/dlgacquire.h 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Acquisition dialog // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/dlgacquire_private.h guymager-0.8.7/dlgacquire_private.h --- guymager-0.8.4/dlgacquire_private.h 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/dlgacquire_private.h 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Private definitions of acquisition dialog // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/dlgautoexit.cpp guymager-0.8.7/dlgautoexit.cpp --- guymager-0.8.4/dlgautoexit.cpp 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/dlgautoexit.cpp 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Auto exit dialog // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/dlgautoexit.h guymager-0.8.7/dlgautoexit.h --- guymager-0.8.4/dlgautoexit.h 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/dlgautoexit.h 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Auto exit dialog // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/dlgdirsel.cpp guymager-0.8.7/dlgdirsel.cpp --- guymager-0.8.4/dlgdirsel.cpp 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/dlgdirsel.cpp 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Directory selection dialog // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/dlgdirsel.h guymager-0.8.7/dlgdirsel.h --- guymager-0.8.4/dlgdirsel.h 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/dlgdirsel.h 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Directory selection dialog // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/dlgdirsel_private.h guymager-0.8.7/dlgdirsel_private.h --- guymager-0.8.4/dlgdirsel_private.h 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/dlgdirsel_private.h 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Private definitions of directory selection dialog // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/dlgmessage.cpp guymager-0.8.7/dlgmessage.cpp --- guymager-0.8.4/dlgmessage.cpp 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/dlgmessage.cpp 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Different message boxes we need all the time // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/dlgmessage.h guymager-0.8.7/dlgmessage.h --- guymager-0.8.4/dlgmessage.h 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/dlgmessage.h 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Different message dialogs and boxes we need all the time // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/dlgwait.cpp guymager-0.8.7/dlgwait.cpp --- guymager-0.8.4/dlgwait.cpp 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/dlgwait.cpp 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Wait dialog // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/dlgwait.h guymager-0.8.7/dlgwait.h --- guymager-0.8.4/dlgwait.h 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/dlgwait.h 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Wait dialog // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/error.cpp guymager-0.8.7/error.cpp --- guymager-0.8.4/error.cpp 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/error.cpp 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Error handling utilities // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/error.h guymager-0.8.7/error.h --- guymager-0.8.4/error.h 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/error.h 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Error handling utilities // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/fifo.cpp guymager-0.8.7/fifo.cpp --- guymager-0.8.4/fifo.cpp 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/fifo.cpp 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: The central queues for pipelined data processing // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/fifo.h guymager-0.8.7/fifo.h --- guymager-0.8.4/fifo.h 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/fifo.h 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: The central queues for pipelined data processing // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/file.cpp guymager-0.8.7/file.cpp --- guymager-0.8.4/file.cpp 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/file.cpp 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Everything related to file names, extension names, paths... // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/file.h guymager-0.8.7/file.h --- guymager-0.8.4/file.h 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/file.h 2018-01-05 09:51:46.000000000 +0000 @@ -10,7 +10,8 @@ // etc // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/guymager.cfg guymager-0.8.7/guymager.cfg --- guymager-0.8.4/guymager.cfg 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/guymager.cfg 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ REM Main configuration file REM **************************************************************************** -REM Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +REM Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +REM Guy Voncken REM REM This file is part of Guymager. REM @@ -188,8 +189,11 @@ REM example, some people use Guymager in machines connected to disk racks. They take UserField for entering the REM disk slot number in order to have a better overview. The column name may be configured to any string: REM -REM UserFieldName Specify the name that should be displayed for the UserField column. If the string is left -REM empty, the column's name simply is 'UserField'. +REM UserFieldName Specify the name that should be displayed for the UserField column. If the string is left +REM empty, the column's name simply is 'UserField'. +REM +REM AdditionalStateInfoName Similar to UserFieldName, this parameter allows for changing the name of the +REM column AdditionalStateInfo. Leave it empty for the default name. TABLE Columns None REM ColumnName Alignment MinWidth ShowIn ShowIn @@ -217,15 +221,17 @@ 'Examiner' LEFT 0 NO NO ENDTABLE -UserFieldName = '' +UserFieldName = '' +AdditionalStateInfoName = '' REM Table Colors REM The table contains color settings for different items on the screen: REM LocalDevices Color to be used for marking local devices (i.e. devices with serial numbers found in REM configuration table LocalDevices, see above) in the user interface. The whole row gets REM this color. -REM AdditionalStateX Devices maybe marked by this color depending on the values in the additional state info. -REM See description of configuration parameter CommandGetAddStateInfo for more information. +REM AdditionalStateX (where X is a number) Devices maybe marked by this color depending on the values in +REM the additional state info. See description of configuration parameter +REM CommandGetAddStateInfo for more information. REM REM All other entries refer to the colored dot of the acquisition state field for reflecting the current state: REM StateIdle Nothing has been done with this device yet. @@ -654,6 +660,8 @@ REM %CalcSHA256% SHA256 calculation enabled, value is YES or NO REM %Clone% Device is cloned, MD5 value is YES or NO REM %Duplicate% A duplicate image is written, value is YES or NO +REM %UserField% Contents of the user field +REM %AddStateInfo% Additional state information REM The following tokens are related to the acquisition dialog input fields. They all exist a second time with a "2" REM appended, for example "%CaseNumber%" and "%CaseNumber2%". The second one only is set if %Duplicate% is YES. It's empty REM otherwise. @@ -669,7 +677,9 @@ REM Not all tokens are meaningful in every position. For example, there's no sense in specifying token %Progress% REM in configuration table DlgAcquireRule, as the acquisition is not even started yet when the acquisition dialog REM is shown. - +REM +REM The special token %DEVICE_BLOCK% only can be used for the Runstats module. See the description of the RunStats +REM module below. REM Guymager internals @@ -736,29 +746,8 @@ REM echo "0" REM echo "2" REM -REM CommandAcquisitionEnd The command given is called whenever an acquisition ends. Guymager knows several special sequences that will be -REM replaced automatically: -REM %dev% Device, for example /dev/sdf -REM %Size% Device size in bytes -REM %State% The acquisition state -REM %SplitFileSize% File size of image fragmnets -REM %VerifySrc% Verify source, value is YES or NO -REM %CalcMD5% MD5 calculation enabled, value is YES or NO -REM %CalcSHA1% SHA1 calculation enabled, value is YES or NO -REM %CalcSHA256% SHA256 calculation enabled, value is YES or NO -REM %Clone% Device is cloned, MD5 value is YES or NO -REM %Duplicate% A duplicate image is written, value is YES or NO -REM The following tokens are related to the acquition dialog parameters. They all exist a second time with a "2" -REM appended, for example "%CaseNumber%" and "%CaseNumber2%". The second one only is set if %Duplicate is YES. It's empty -REM otherwise. -REM %CaseNumber% Case number \ -REM %Examiner% Examiner | as entered in the -REM %EvidenceNumber% Evidence number | corresponding field -REM %Description% Description | of the acqusition dialog -REM %Notes% Notes / -REM %Image% Path and file name of image -REM %InfoFile% Path and file name of .info file -REM %VerifyDst% Verify image, value is YES or NO +REM CommandAcquisitionEnd The command given is called whenever an acquisition ends. Guymager knows several special tokens (chraracter sequences) +REM that will be replaced automatically. See "Special tokens" above. REM The parameter is left empty by default and no script called in that case. REM REM ScanInterval Speficies how often an automatic device scan (for detecting newly connected devices) @@ -866,6 +855,17 @@ REM Set to AUTO will use the number of CPUs installed in the system (recommended). REM Set to 0 for disabling multi-threaded compression and build EWF file the conventional way. REM +REM BadSectorLogThreshold This parameter has been introduced in order to prevent Guymager from writing excessively big log files +REM when acquiring devices with many (millions) bad sectors. As soon as the threshold has been reached, +REM Guymager does not any longer log every single bad sector it encounters but only logs from time to time. +REM The number of log entries after reaching BadSectorLogThreshold depends on parameter BadSectorLogModulo. +REM When setting BadSectorLogModulo to 1000, then only every 1000th bad sector will be logged after reaching +REM BadSectorLogThreshold. +REM A value of 0 deactivates the bad sector log threshold feature. +REM +REM BadSectorLogModulo Only active if BadSectorLogThreshold is not zero. +REM See BadSectorLogThreshold for explanations. +REM REM LimitJobs Limit the number of acquisitions running in parallel to the value specified in this parameter. If REM the number of acquisitions started exceeds the value given by LimitJobs, the ones started last are REM queued and will be held until a former acquisition ends. @@ -897,6 +897,9 @@ UseSeparatehashThread = Yes CompressionThreads = AUTO +BadSectorLogThreshold = 0 +BadSectorLogModulo = 1000 + LimitJobs = OFF JobMaxBadSectors = 200 JobDisconnectTimeout = 10000 diff -Nru guymager-0.8.4/guymager_cn.ts guymager-0.8.7/guymager_cn.ts --- guymager-0.8.4/guymager_cn.ts 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/guymager_cn.ts 2018-01-05 09:51:46.000000000 +0000 @@ -4,13 +4,13 @@ QObject - + Guymager needs to be started with root rights in order to perform acquisitions. You are not root and thus won't be able to acquire devices. Continue anyway? GUYMAGER需要以管理员的身份运行,你目前不是管理员权限,确定继续吗? - + Deleting %1 删除 %1 @@ -21,9 +21,9 @@ 非管理员权限 - - - + + + Ok 确定 @@ -36,7 +36,7 @@ 取消 - + Linux dd raw image @@ -51,7 +51,7 @@ A高级司法镜像 - + Guymager cannot scan the devices connected to this computer. GUYMAGER 无法扫描到设备 @@ -148,7 +148,7 @@ 剩余时间 - + Model 设备名 @@ -304,8 +304,8 @@ 是否同意此项变化 - - + + EwfCaseNumber 案件序列号 @@ -679,7 +679,7 @@ t_DlgAutoExit - + Abort 终止 @@ -724,7 +724,7 @@ t_DlgMessage - + Close 关闭 @@ -732,14 +732,18 @@ t_Info - + Command executed: %1 执行命令:%1 + No information can be displayed as a timeout occurred while executing the command. + + + No information can be displayed as a timeout occured while executing the command. - 无信息,命令执行超时 + 无信息,命令执行超时 @@ -750,7 +754,7 @@ t_InfoField - + Size 大小 @@ -866,7 +870,7 @@ t_MainWindow - + Local device 本地设备 @@ -903,7 +907,7 @@ 中止 - 硬盘读取错误 - + &Rescan &R重新扫描 @@ -913,13 +917,13 @@ - + Device already contained Dialog title - + There are active acquisitions. Do you really want to abort them and quit? There are active acquisitions. 你确定放弃并退出? @@ -959,7 +963,7 @@ 退出 - + &Devices &D设备 @@ -1053,7 +1057,7 @@ 添加特殊设备 - + Open File 打开文件 @@ -1112,12 +1116,12 @@ 未知 - + Exit after acquisitions completed 在获取完成后退出 - + (not used as Guymager currently is configured to use its own EWF module) diff -Nru guymager-0.8.4/guymager.desktop guymager-0.8.7/guymager.desktop --- guymager-0.8.4/guymager.desktop 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/guymager.desktop 2018-01-05 09:51:46.000000000 +0000 @@ -16,3 +16,4 @@ # Categorie entry according to version 1.0 of # http://www.freedesktop.org/wiki/Specifications/menu-spec Categories=Qt;System +Keywords=forensics;disk imaging;ewf;expert witness format;raw format;aff;advanced forensics format; diff -Nru guymager-0.8.4/guymager_de.ts guymager-0.8.7/guymager_de.ts --- guymager-0.8.4/guymager_de.ts 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/guymager_de.ts 2018-01-05 09:51:46.000000000 +0000 @@ -4,7 +4,7 @@ QObject - + Missing root rights Dialog title Keine Root-Rechte @@ -17,14 +17,14 @@ Trotzdem fortfahren? - + Deleting %1 Lösche %1 - - - + + + Ok Ok @@ -37,7 +37,7 @@ Abbruch - + Linux dd raw image Linux dd-Image @@ -52,7 +52,7 @@ AFF-Format - + Guymager cannot scan the devices connected to this computer. Guymager kann die angeschlossenen Geräte nicht abfragen. @@ -167,7 +167,7 @@ [%] - + SerialNr Serien- nummer @@ -316,8 +316,8 @@ t_DlgAcquire - - + + EwfCaseNumber Fallnummer @@ -740,7 +740,7 @@ t_DlgAutoExit - + Abort Abbruch @@ -785,7 +785,7 @@ t_DlgMessage - + Close Schließen @@ -793,16 +793,20 @@ t_Info - + Command executed: %1 Ausgeführter Befehl: %1 - No information can be displayed as a timeout occured while executing the command. + No information can be displayed as a timeout occurred while executing the command. Der Befehl benötigte zu lange; keine Informationen vorhanden. + No information can be displayed as a timeout occured while executing the command. + Der Befehl benötigte zu lange; keine Informationen vorhanden. + + Information returned: Ausgabe: @@ -811,7 +815,7 @@ t_InfoField - + Size Größe @@ -927,7 +931,7 @@ t_MainWindow - + Local device Lokales Gerät @@ -964,7 +968,7 @@ Abbruch - Lesefehler - + &Rescan &Auffrischen @@ -974,13 +978,13 @@ F5 - + Device already contained Dialog title Gerät bereits vorhanden - + There are active acquisitions. Do you really want to abort them and quit? GUYMAGER hat noch Akquisitionen laufen. Möchten Sie diese abbrechen und das Programm verlassen? @@ -1024,7 +1028,7 @@ GUYMAGER verlassen - + &Devices &Geräte @@ -1118,7 +1122,7 @@ Sondergerät hinzufügen - + Open File Datei öffnen @@ -1177,7 +1181,7 @@ nicht feststellbar - + Exit after acquisitions completed Guymager nach Abschluss aller Akquisitionen beenden @@ -1190,7 +1194,7 @@ Abbruch - Startfehler Akquisition - + (not used as Guymager currently is configured to use its own EWF module) (inaktiv, da das Guymager-interne EWF-Modul konfiguriert ist) diff -Nru guymager-0.8.4/guymager_en.ts guymager-0.8.7/guymager_en.ts --- guymager-0.8.4/guymager_en.ts 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/guymager_en.ts 2018-01-05 09:51:46.000000000 +0000 @@ -4,13 +4,13 @@ QObject - + Guymager needs to be started with root rights in order to perform acquisitions. You are not root and thus won't be able to acquire devices. Continue anyway? - + Deleting %1 @@ -21,9 +21,9 @@ - - - + + + Ok @@ -36,7 +36,7 @@ - + Linux dd raw image @@ -51,7 +51,7 @@ - + Guymager cannot scan the devices connected to this computer. @@ -89,7 +89,7 @@ t_DeviceListModel - + SerialNr Serial nr. @@ -249,8 +249,8 @@ - - + + EwfCaseNumber Case number @@ -612,7 +612,7 @@ t_DlgAutoExit - + Abort @@ -656,7 +656,7 @@ t_DlgMessage - + Close @@ -664,13 +664,13 @@ t_Info - + Command executed: %1 - No information can be displayed as a timeout occured while executing the command. + No information can be displayed as a timeout occurred while executing the command. @@ -682,7 +682,7 @@ t_InfoField - + Size Size @@ -785,7 +785,7 @@ t_MainWindow - + Local device @@ -810,7 +810,7 @@ - + &Rescan @@ -820,13 +820,13 @@ - + Device already contained Dialog title - + There are active acquisitions. Do you really want to abort them and quit? @@ -854,7 +854,7 @@ - + &Devices @@ -928,7 +928,7 @@ - + Open File @@ -982,12 +982,12 @@ - + Exit after acquisitions completed - + (not used as Guymager currently is configured to use its own EWF module) diff -Nru guymager-0.8.4/guymager_fr.ts guymager-0.8.7/guymager_fr.ts --- guymager-0.8.4/guymager_fr.ts 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/guymager_fr.ts 2018-01-05 09:51:46.000000000 +0000 @@ -4,9 +4,9 @@ QObject - - - + + + Ok Ok @@ -19,7 +19,7 @@ Annuler - + Linux dd raw image Image brute Linux dd @@ -29,7 +29,7 @@ Format EWF, sous-format %1 - + Missing root rights Dialog title Droits «root» @@ -42,7 +42,7 @@ Continuer quand-même? - + Deleting %1 Efface %1 @@ -52,7 +52,7 @@ Format AFF - + Guymager cannot scan the devices connected to this computer. Guymager ne peut déterminer les médias connectés. @@ -169,7 +169,7 @@ [%] - + SerialNr Nº de série @@ -320,8 +320,8 @@ t_DlgAcquire - - + + EwfCaseNumber Numéro d'affaire @@ -745,7 +745,7 @@ t_DlgAutoExit - + Abort Annuler @@ -790,7 +790,7 @@ t_DlgMessage - + Close Fermer @@ -798,16 +798,20 @@ t_Info - + Command executed: %1 Commande exécutée: %1 - No information can be displayed as a timeout occured while executing the command. + No information can be displayed as a timeout occurred while executing the command. Aucune information n'est disponible suite au dépassement du temps d'exécution maximal. + No information can be displayed as a timeout occured while executing the command. + Aucune information n'est disponible suite au dépassement du temps d'exécution maximal. + + Information returned: Information retournée: @@ -816,7 +820,7 @@ t_InfoField - + Size Capacité @@ -932,7 +936,7 @@ t_MainWindow - + Local device Média local @@ -969,7 +973,7 @@ Abandon - erreur grave de lecture - + &Rescan &Actualiser @@ -1014,13 +1018,13 @@ A propos de &Qt - + Device already contained Dialog title Média déjà existant - + Exit GUYMAGER Dialog title Quitter GUYMAGER @@ -1112,7 +1116,7 @@ Oui - + Rescan devices and update table Actualiser la liste des médias connectés @@ -1123,7 +1127,7 @@ Ajouter média spécial - + Open File Ouvrir fichier @@ -1182,7 +1186,7 @@ non-détectable - + Exit after acquisitions completed Terminer Guymager à la fin des acquisitions @@ -1195,7 +1199,7 @@ Abandon - Démarrage échoué - + (not used as Guymager currently is configured to use its own EWF module) (inactif, Guymager est configuré d'utiliser son propre module EWF) diff -Nru guymager-0.8.4/guymager_it.ts guymager-0.8.7/guymager_it.ts --- guymager-0.8.4/guymager_it.ts 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/guymager_it.ts 2018-01-05 09:51:46.000000000 +0000 @@ -4,9 +4,9 @@ QObject - - - + + + Ok @@ -19,7 +19,7 @@ - + Linux dd raw image @@ -29,7 +29,7 @@ - + Missing root rights Dialog title @@ -41,7 +41,7 @@ - + Deleting %1 @@ -51,7 +51,7 @@ - + Guymager cannot scan the devices connected to this computer. @@ -94,7 +94,7 @@ - + SerialNr @@ -216,8 +216,8 @@ t_DlgAcquire - - + + EwfCaseNumber @@ -594,7 +594,7 @@ t_DlgAutoExit - + Abort @@ -638,7 +638,7 @@ t_DlgMessage - + Close @@ -646,13 +646,13 @@ t_Info - + Command executed: %1 - No information can be displayed as a timeout occured while executing the command. + No information can be displayed as a timeout occurred while executing the command. @@ -664,7 +664,7 @@ t_InfoField - + Size @@ -767,7 +767,7 @@ t_MainWindow - + Local device @@ -792,7 +792,7 @@ - + &Rescan @@ -837,13 +837,13 @@ - + Device already contained Dialog title - + Exit GUYMAGER Dialog title @@ -899,7 +899,7 @@ - + Rescan devices and update table @@ -910,7 +910,7 @@ - + Open File @@ -964,12 +964,12 @@ - + Exit after acquisitions completed - + (not used as Guymager currently is configured to use its own EWF module) diff -Nru guymager-0.8.4/guymager_nl.ts guymager-0.8.7/guymager_nl.ts --- guymager-0.8.4/guymager_nl.ts 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/guymager_nl.ts 2018-01-05 09:51:46.000000000 +0000 @@ -4,9 +4,9 @@ QObject - - - + + + Ok Ok @@ -19,7 +19,7 @@ Afbreken - + Linux dd raw image Linux dd "raw" image @@ -34,7 +34,7 @@ Advanced forensic image - + Missing root rights Dialog title Root rechten benodigd @@ -46,12 +46,12 @@ Guymager moet gestart worden met "root"-rechten om media veilig te kunnen stellen. U bent op dit moment geen "root", en daarom zult u geen media veilig kunnen stellen. - + Deleting %1 %1 aan het verwijderen - + Guymager cannot scan the devices connected to this computer. Guymager kan geen lijst samenstellen met aangesloten apparaten. @@ -163,7 +163,7 @@ - + SerialNr @@ -285,8 +285,8 @@ t_DlgAcquire - - + + EwfCaseNumber Zaaknummer @@ -687,7 +687,7 @@ t_DlgAutoExit - + Abort Afbreken @@ -731,7 +731,7 @@ t_DlgMessage - + Close Sluiten @@ -739,14 +739,18 @@ t_Info - + Command executed: %1 Uitgevoerd commando: %1 + No information can be displayed as a timeout occurred while executing the command. + + + No information can be displayed as a timeout occured while executing the command. - De informatie kan niet weergegeven worden tijdens het uitvoeren van het commando. + De informatie kan niet weergegeven worden tijdens het uitvoeren van het commando. @@ -757,7 +761,7 @@ t_InfoField - + Size Grootte @@ -865,7 +869,7 @@ t_MainWindow - + Local device Lokaal apparaat @@ -933,7 +937,7 @@ Afgebroken - apparaat kan niet gelezen worden - + &Rescan &Herscannen @@ -978,13 +982,13 @@ Over &Qt> - + Device already contained Dialog title - + Exit GUYMAGER Dialog title GUYMAGER Afsluiten @@ -1058,7 +1062,7 @@ Ja - + Rescan devices and update table Herscan de apparaten en ververs de tabel @@ -1069,7 +1073,7 @@ Voeg speciaal apparaat toe - + Open File Open bestand @@ -1261,12 +1265,12 @@ - + Exit after acquisitions completed - + (not used as Guymager currently is configured to use its own EWF module) diff -Nru guymager-0.8.4/guymager.pro guymager-0.8.7/guymager.pro --- guymager-0.8.4/guymager.pro 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/guymager.pro 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ # Qt project file # **************************************************************************** -# Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +# Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +# Guy Voncken # # This file is part of Guymager. # @@ -125,6 +126,7 @@ HEADERS += info.h HEADERS += infofield.h HEADERS += itemdelegate.h +HEADERS += main_private.h HEADERS += mainwindow.h HEADERS += media.h HEADERS += table.h diff -Nru guymager-0.8.4/hash.cpp guymager-0.8.7/hash.cpp --- guymager-0.8.4/hash.cpp 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/hash.cpp 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Hash wrapper functions for uniform hash interface // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/hash.h guymager-0.8.7/hash.h --- guymager-0.8.4/hash.h 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/hash.h 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Hash wrapper functions for uniform hash interface // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/info.cpp guymager-0.8.7/info.cpp --- guymager-0.8.4/info.cpp 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/info.cpp 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Information about the acquisition, creates the info file // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // @@ -203,7 +204,7 @@ rc = QtUtilProcessCommand (Command, &Result); if (rc == ERROR_QTUTIL_COMMAND_TIMEOUT) { - Info += "\r\n" + tr("No information can be displayed as a timeout occured while executing the command."); + Info += "\r\n" + tr("No information can be displayed as a timeout occurred while executing the command."); if (RichText) Info += ""; } diff -Nru guymager-0.8.4/infofield.cpp guymager-0.8.7/infofield.cpp --- guymager-0.8.4/infofield.cpp 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/infofield.cpp 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: The info field area // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/infofield.h guymager-0.8.7/infofield.h --- guymager-0.8.4/infofield.h 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/infofield.h 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: The info field area // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/info.h guymager-0.8.7/info.h --- guymager-0.8.4/info.h 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/info.h 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Information about the acquisition, creates the info file // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/itemdelegate.cpp guymager-0.8.7/itemdelegate.cpp --- guymager-0.8.4/itemdelegate.cpp 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/itemdelegate.cpp 2018-01-05 09:51:46.000000000 +0000 @@ -10,7 +10,8 @@ // in t_Table. // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/itemdelegate.h guymager-0.8.7/itemdelegate.h --- guymager-0.8.4/itemdelegate.h 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/itemdelegate.h 2018-01-05 09:51:46.000000000 +0000 @@ -10,7 +10,8 @@ // in t_Table. // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/main.cpp guymager-0.8.7/main.cpp --- guymager-0.8.4/main.cpp 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/main.cpp 2018-01-05 09:51:46.000000000 +0000 @@ -11,7 +11,8 @@ // deinitialisation. // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // @@ -34,6 +35,7 @@ #include #include #include +#include #include #if (QT_VERSION >= 0x050000) @@ -62,6 +64,7 @@ #include "dlgmessage.h" #include "mainwindow.h" #include "main.h" +#include "main_private.h" // ------------------------------------ @@ -83,7 +86,9 @@ ERROR_MAIN_UNKNOWN_STARTUP_SIZE = ERROR_BASE_MAIN + 1, ERROR_MAIN_INVALID_WINDOW_SIZE, ERROR_MAIN_INVALID_NUMBERSTYLE, - ERROR_MAIN_LIBEWF_VERSION_MISMATCH + ERROR_MAIN_LIBEWF_VERSION_MISMATCH, + ERROR_MAIN_SIGACTION_FAILED, + ERROR_MAIN_SOCKETPAIR_NOT_CREATED }; #define MAIN_SPLASH_PIXMAP "splash.png" @@ -107,19 +112,79 @@ typedef struct // Objects that exist only once for the whole application { - QApplication *pApp; - QLocale *pNumberLocale; // The QLocale for number conversions - t_Log *pLog; - t_MainWindow *pMainWindow; - t_pDeviceList pDeviceList; - bool CriticalInitDone; - char *pCommandLine; + QApplication *pApp; + QLocale *pNumberLocale; // The QLocale for number conversions + t_Log *pLog; + t_MainWindow *pMainWindow; + t_pDeviceList pDeviceList; + bool CriticalInitDone; + char *pCommandLine; + t_MainSystemSignalForwarder *pSystemSignalForwarder; } t_MainLocal; static t_MainLocal MainLocal; // ------------------------------------ -// Signal & error handling +// System signal forwarding +// ------------------------------------ + +// See http://doc.qt.io/qt-5/unix-signals.html for explanantions +// Code of t_MainSystemSignalForwarder mainly has been copied from that web page + +int t_MainSystemSignalForwarder::oArrFileDescHup[2]; + +t_MainSystemSignalForwarder::t_MainSystemSignalForwarder (QObject *parent) + :QObject(parent) +{ + struct sigaction SigActionHup; + + if (::socketpair(AF_UNIX, SOCK_STREAM, 0, oArrFileDescHup)) + CHK_EXIT (ERROR_MAIN_SOCKETPAIR_NOT_CREATED) + + poSocketNotifierHup = new QSocketNotifier (oArrFileDescHup[1], QSocketNotifier::Read, this); + connect (poSocketNotifierHup, SIGNAL(activated(int)), this, SLOT(SlotHup())); + + sigemptyset (&SigActionHup.sa_mask); + SigActionHup.sa_handler = SignalHandlerHup; + SigActionHup.sa_flags = 0; + SigActionHup.sa_flags |= SA_RESTART; + if (sigaction(SIGHUP, &SigActionHup, 0)) + CHK_EXIT (ERROR_MAIN_SIGACTION_FAILED) +} + +t_MainSystemSignalForwarder::~t_MainSystemSignalForwarder () +{ +} + +void t_MainSystemSignalForwarder::SignalHandlerHup (int Signal) // Unix signal handler +{ + if (Signal != SIGHUP) + { + LOG_ERROR ("Unexpected signal %d", Signal) + return; + } + + char Ch = '1'; + if (::write (oArrFileDescHup[0], &Ch, sizeof(Ch)) != 1) + LOG_ERROR ("Write to socket failed") +} + +void t_MainSystemSignalForwarder::SlotHup() +{ + char Ch; + + poSocketNotifierHup->setEnabled(false); + if (::read(oArrFileDescHup[1], &Ch, sizeof(Ch)) != 1) + LOG_ERROR ("Read from socket failed") + +// LOG_INFO ("Signal HUP received (rescan)") + MainLocal.pMainWindow->SlotRescan(); + + poSocketNotifierHup->setEnabled(true); +} + +// ------------------------------------ +// Error handling // ------------------------------------ #if (QT_VERSION >= 0x050000) @@ -261,13 +326,13 @@ (void) oDict.insert (Source, Translation); } - QString translate (const char *pContext, const char *pSourceText, const char *pDisambiguation = 0) const + QString translate (const char *pContext, const char *pSourceText, const char *pDisambiguation = 0, int n = -1) const { QString Source(pSourceText); if (oDict.contains (Source)) return oDict.value (Source); - else return QTranslator::translate (pContext, pSourceText, pDisambiguation); + else return QTranslator::translate (pContext, pSourceText, pDisambiguation, n); } bool isEmpty (void) const @@ -279,6 +344,7 @@ QHash oDict; }; + // ------------------------------------ // Main program // ------------------------------------ @@ -333,6 +399,8 @@ CHK_EXIT (TOOL_ERROR_REGISTER_CODE (ERROR_MAIN_INVALID_WINDOW_SIZE )) CHK_EXIT (TOOL_ERROR_REGISTER_CODE (ERROR_MAIN_INVALID_NUMBERSTYLE )) CHK_EXIT (TOOL_ERROR_REGISTER_CODE (ERROR_MAIN_LIBEWF_VERSION_MISMATCH)) + CHK_EXIT (TOOL_ERROR_REGISTER_CODE (ERROR_MAIN_SIGACTION_FAILED )) + CHK_EXIT (TOOL_ERROR_REGISTER_CODE (ERROR_MAIN_SOCKETPAIR_NOT_CREATED )) CHK_EXIT (ToolErrorSetLogFn (&t_Log::vEntryError)) CHK_EXIT (ToolCfgInit (argc, argv)) @@ -438,7 +506,6 @@ if (!LangDirQt.endsWith ("/")) LangDirQt += "/"; if (!LangDir .endsWith ("/")) LangDir += "/"; - // Select correct Qt language file. We only try once. If this does not // succeed, Qt automatically uses its english language file. @@ -485,9 +552,13 @@ { LOG_INFO ("Language file %s not found in %s. Not using any language file.", QSTR_TO_PSZ(TryName), QSTR_TO_PSZ(TryDir)) } + if (strlen (CONFIG(UserFieldName))) - TranslatorDynamic.Insert (MAINWINDOW_COLUMN_UserField, CONFIG(UserFieldName)); - MainLocal.pApp->installTranslator (&TranslatorDynamic); + TranslatorDynamic.Insert (MAINWINDOW_COLUMN_UserField , CONFIG(UserFieldName)); + if (strlen (CONFIG(AdditionalStateInfoName))) + TranslatorDynamic.Insert (MAINWINDOW_COLUMN_AddStateInfo, CONFIG(AdditionalStateInfoName)); + MainLocal.pApp->installTranslator (&TranslatorDynamic); // TranslatorDynamic is installed last, so it will be queried first + // and its translation will beat all others if ever it has a hit. // Check real and effective user ID // -------------------------------- @@ -525,8 +596,11 @@ } } - // Initialise signal handler - // ------------------------- + // Install system signal handlers + // ------------------------------ + + MainLocal.pSystemSignalForwarder = new t_MainSystemSignalForwarder(); + if (CONFIG (SignalHandling)) CHK_EXIT (ToolSignalInit (MainSignalLog, MainSignalHandler, NULL)) diff -Nru guymager-0.8.4/main.h guymager-0.8.7/main.h --- guymager-0.8.4/main.h 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/main.h 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Main // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/main_private.h guymager-0.8.7/main_private.h --- guymager-0.8.4/main_private.h 1970-01-01 00:00:00.000000000 +0000 +++ guymager-0.8.7/main_private.h 2018-01-05 09:51:46.000000000 +0000 @@ -0,0 +1,57 @@ +// **************************************************************************** +// Project: GUYMAGER +// **************************************************************************** +// Programmer: Guy Voncken +// Police Grand-Ducale +// Service de Police Judiciaire +// Section Nouvelles Technologies +// **************************************************************************** +// Module: Main +// **************************************************************************** + +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken +// +// This file is part of Guymager. +// +// Guymager is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 2 of the License, or +// (at your option) any later version. +// +// Guymager is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Guymager. If not, see . + +#ifndef __MAIN_PRIVATE_H__ +#define __MAIN_PRIVATE_H__ + +#if (QT_VERSION >= 0x050000) + #include //lint !e537 Repeated include +#else + #include //lint !e537 Repeated include +#endif + +class t_MainSystemSignalForwarder: public QObject +{ + Q_OBJECT + + public: + t_MainSystemSignalForwarder(QObject *parent = 0); + ~t_MainSystemSignalForwarder(); + + static void SignalHandlerHup (int unused); // Unix signal handler + + public slots: + void SlotHup(); + + private: + static int oArrFileDescHup[2]; + QSocketNotifier *poSocketNotifierHup; +}; + +#endif diff -Nru guymager-0.8.4/mainwindow.cpp guymager-0.8.7/mainwindow.cpp --- guymager-0.8.4/mainwindow.cpp 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/mainwindow.cpp 2018-01-05 09:51:46.000000000 +0000 @@ -10,7 +10,8 @@ // widget // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // @@ -67,27 +68,27 @@ static t_MainWindowColumn MainWindowColumnArr[] = { - { MAINWINDOW_COLUMN_SerialNr , t_Device::GetSerialNumber , t_ItemDelegate::DISPLAYTYPE_STANDARD }, - { MAINWINDOW_COLUMN_LinuxDevice , t_Device::GetLinuxDevice , t_ItemDelegate::DISPLAYTYPE_STANDARD }, - { MAINWINDOW_COLUMN_Model , t_Device::GetModel , t_ItemDelegate::DISPLAYTYPE_STANDARD }, - { MAINWINDOW_COLUMN_NativePath , t_Device::GetNativePath , t_ItemDelegate::DISPLAYTYPE_STANDARD }, - { MAINWINDOW_COLUMN_ByPath , t_Device::GetByPath , t_ItemDelegate::DISPLAYTYPE_STANDARD }, - { MAINWINDOW_COLUMN_Interface , t_Device::GetInterface , t_ItemDelegate::DISPLAYTYPE_STANDARD }, - { MAINWINDOW_COLUMN_State , t_Device::GetState , t_ItemDelegate::DISPLAYTYPE_STATE }, - { MAINWINDOW_COLUMN_AdditionalStateInfo, t_Device::GetAddStateInfo , t_ItemDelegate::DISPLAYTYPE_STANDARD }, - { MAINWINDOW_COLUMN_Size , t_Device::GetSizeHuman , t_ItemDelegate::DISPLAYTYPE_STANDARD }, - { MAINWINDOW_COLUMN_HiddenAreas , t_Device::GetHiddenAreas , t_ItemDelegate::DISPLAYTYPE_STANDARD }, - { MAINWINDOW_COLUMN_BadSectors , t_Device::GetBadSectorCount, t_ItemDelegate::DISPLAYTYPE_STANDARD }, - { MAINWINDOW_COLUMN_Progress , t_Device::GetProgress , t_ItemDelegate::DISPLAYTYPE_PROGRESS }, - { MAINWINDOW_COLUMN_AverageSpeed , t_Device::GetAverageSpeed , t_ItemDelegate::DISPLAYTYPE_STANDARD }, - { MAINWINDOW_COLUMN_TimeRemaining , t_Device::GetRemaining , t_ItemDelegate::DISPLAYTYPE_STANDARD }, - { MAINWINDOW_COLUMN_FifoUsage , t_Device::GetFifoStatus , t_ItemDelegate::DISPLAYTYPE_STANDARD }, - { MAINWINDOW_COLUMN_SectorSizeLog , t_Device::GetSectorSize , t_ItemDelegate::DISPLAYTYPE_STANDARD }, - { MAINWINDOW_COLUMN_SectorSizePhys , t_Device::GetSectorSizePhys, t_ItemDelegate::DISPLAYTYPE_STANDARD }, - { MAINWINDOW_COLUMN_CurrentSpeed , t_Device::GetCurrentSpeed , t_ItemDelegate::DISPLAYTYPE_STANDARD }, - { MAINWINDOW_COLUMN_UserField , t_Device::GetUserField , t_ItemDelegate::DISPLAYTYPE_STANDARD }, - { MAINWINDOW_COLUMN_Examiner , t_Device::GetExaminer , t_ItemDelegate::DISPLAYTYPE_STANDARD }, - { NULL , NULL , 0 } + { MAINWINDOW_COLUMN_SerialNr , t_Device::GetSerialNumber , t_ItemDelegate::DISPLAYTYPE_STANDARD }, + { MAINWINDOW_COLUMN_LinuxDevice , t_Device::GetLinuxDevice , t_ItemDelegate::DISPLAYTYPE_STANDARD }, + { MAINWINDOW_COLUMN_Model , t_Device::GetModel , t_ItemDelegate::DISPLAYTYPE_STANDARD }, + { MAINWINDOW_COLUMN_NativePath , t_Device::GetNativePath , t_ItemDelegate::DISPLAYTYPE_STANDARD }, + { MAINWINDOW_COLUMN_ByPath , t_Device::GetByPath , t_ItemDelegate::DISPLAYTYPE_STANDARD }, + { MAINWINDOW_COLUMN_Interface , t_Device::GetInterface , t_ItemDelegate::DISPLAYTYPE_STANDARD }, + { MAINWINDOW_COLUMN_State , t_Device::GetState , t_ItemDelegate::DISPLAYTYPE_STATE }, + { MAINWINDOW_COLUMN_AddStateInfo , t_Device::GetAddStateInfo , t_ItemDelegate::DISPLAYTYPE_STANDARD }, + { MAINWINDOW_COLUMN_Size , t_Device::GetSizeHuman , t_ItemDelegate::DISPLAYTYPE_STANDARD }, + { MAINWINDOW_COLUMN_HiddenAreas , t_Device::GetHiddenAreas , t_ItemDelegate::DISPLAYTYPE_STANDARD }, + { MAINWINDOW_COLUMN_BadSectors , t_Device::GetBadSectorCount, t_ItemDelegate::DISPLAYTYPE_STANDARD }, + { MAINWINDOW_COLUMN_Progress , t_Device::GetProgress , t_ItemDelegate::DISPLAYTYPE_PROGRESS }, + { MAINWINDOW_COLUMN_AverageSpeed , t_Device::GetAverageSpeed , t_ItemDelegate::DISPLAYTYPE_STANDARD }, + { MAINWINDOW_COLUMN_TimeRemaining , t_Device::GetRemaining , t_ItemDelegate::DISPLAYTYPE_STANDARD }, + { MAINWINDOW_COLUMN_FifoUsage , t_Device::GetFifoStatus , t_ItemDelegate::DISPLAYTYPE_STANDARD }, + { MAINWINDOW_COLUMN_SectorSizeLog , t_Device::GetSectorSize , t_ItemDelegate::DISPLAYTYPE_STANDARD }, + { MAINWINDOW_COLUMN_SectorSizePhys, t_Device::GetSectorSizePhys, t_ItemDelegate::DISPLAYTYPE_STANDARD }, + { MAINWINDOW_COLUMN_CurrentSpeed , t_Device::GetCurrentSpeed , t_ItemDelegate::DISPLAYTYPE_STANDARD }, + { MAINWINDOW_COLUMN_UserField , t_Device::GetUserField , t_ItemDelegate::DISPLAYTYPE_STANDARD }, + { MAINWINDOW_COLUMN_Examiner , t_Device::GetExaminer , t_ItemDelegate::DISPLAYTYPE_STANDARD }, + { NULL , NULL , 0 } }; t_pMainWindowColumn MainWindowGetColumn (const char *pName) @@ -434,6 +435,12 @@ CHK_EXIT (CheckDisconnectTimeout()) } +void t_MainWindow::SlotRescan (void) +{ + if (pOwn->pActionRescan->isEnabled()) + pOwn->pActionRescan->trigger(); +} + void t_MainWindow::SlotUpdateRunStats (void) { pOwn->pRunStats->Update (); @@ -522,9 +529,11 @@ // Set the state of the device in the current list to Connected. Thus, devices that were temporarly disconnected // will become connected again. // (2) For devices, that only exist in the current list (but no longer in the new list): -// a) delete from the current list if there was no acquisition running -// b) switch to disconnected if there was an acquisition running, thus giving the user a chance to continue to acquistion -// on another device (for instance, if the hard disk had been unpligged from firewrie and plugged to USB) +// a) delete from the current list if there was no acquisition or verifictaion running +// b) switch to disconnected if there was an acquisition or source verification running, thus giving the user a +// chance to continue that acquisition on another device (for instance, if the hard disk had been unplugged from firewire +// and replugged to USB) +// c) Do nothing if there's a verification running where only the image is verified // (3) For devices, that only exist in the new list: // Add to the current list // Remark: Is it quite tricky to compare the devices from both lists, as there devices without a serial number. See @@ -588,7 +597,7 @@ { pNewDev->Checked = true; pNewDev->AddedNow = true; - pNewDeviceList->removeAt (i--); // (3) + pNewDeviceList->removeAt (i--); // (3) pDeviceList->append (pNewDev); } } @@ -600,11 +609,15 @@ { switch (pDev->GetState()) { - case t_Device::Acquire : pDev->SetState (t_Device::AcquirePaused); break; // (2b) - case t_Device::Verify : pDev->SetState (t_Device::VerifyPaused ); break; // (2b) + case t_Device::Acquire : pDev->SetState (t_Device::AcquirePaused); // (2b) + break; + case t_Device::Verify : if (pDev->Acquisition1.VerifySrc) + pDev->SetState (t_Device::VerifyPaused ); // (2b) + // else do nothing // (2c) + break; case t_Device::AcquirePaused: break; case t_Device::VerifyPaused : break; - default : pDeviceList->removeAt (i--); // (2a) + default : pDeviceList->removeAt (i--); // (2a) delete pDev; } } diff -Nru guymager-0.8.4/mainwindow.h guymager-0.8.7/mainwindow.h --- guymager-0.8.4/mainwindow.h 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/mainwindow.h 2018-01-05 09:51:46.000000000 +0000 @@ -7,7 +7,8 @@ // Section Nouvelles Technologies // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // @@ -44,26 +45,26 @@ // Main window table column names // ------------------------------ -#define MAINWINDOW_COLUMN_SerialNr QT_TRANSLATE_NOOP("t_DeviceListModel", "SerialNr" ) -#define MAINWINDOW_COLUMN_LinuxDevice QT_TRANSLATE_NOOP("t_DeviceListModel", "LinuxDevice" ) -#define MAINWINDOW_COLUMN_Model QT_TRANSLATE_NOOP("t_DeviceListModel", "Model" ) -#define MAINWINDOW_COLUMN_NativePath QT_TRANSLATE_NOOP("t_DeviceListModel", "NativePath" ) -#define MAINWINDOW_COLUMN_ByPath QT_TRANSLATE_NOOP("t_DeviceListModel", "ByPath" ) -#define MAINWINDOW_COLUMN_Interface QT_TRANSLATE_NOOP("t_DeviceListModel", "Interface" ) -#define MAINWINDOW_COLUMN_State QT_TRANSLATE_NOOP("t_DeviceListModel", "State" ) -#define MAINWINDOW_COLUMN_AdditionalStateInfo QT_TRANSLATE_NOOP("t_DeviceListModel", "AdditionalStateInfo") -#define MAINWINDOW_COLUMN_Size QT_TRANSLATE_NOOP("t_DeviceListModel", "Size" ) -#define MAINWINDOW_COLUMN_HiddenAreas QT_TRANSLATE_NOOP("t_DeviceListModel", "HiddenAreas" ) -#define MAINWINDOW_COLUMN_BadSectors QT_TRANSLATE_NOOP("t_DeviceListModel", "BadSectors" ) -#define MAINWINDOW_COLUMN_Progress QT_TRANSLATE_NOOP("t_DeviceListModel", "Progress" ) -#define MAINWINDOW_COLUMN_AverageSpeed QT_TRANSLATE_NOOP("t_DeviceListModel", "AverageSpeed" ) -#define MAINWINDOW_COLUMN_TimeRemaining QT_TRANSLATE_NOOP("t_DeviceListModel", "TimeRemaining" ) -#define MAINWINDOW_COLUMN_FifoUsage QT_TRANSLATE_NOOP("t_DeviceListModel", "FifoUsage" ) -#define MAINWINDOW_COLUMN_SectorSizeLog QT_TRANSLATE_NOOP("t_DeviceListModel", "SectorSizeLog" ) -#define MAINWINDOW_COLUMN_SectorSizePhys QT_TRANSLATE_NOOP("t_DeviceListModel", "SectorSizePhys" ) -#define MAINWINDOW_COLUMN_CurrentSpeed QT_TRANSLATE_NOOP("t_DeviceListModel", "CurrentSpeed" ) -#define MAINWINDOW_COLUMN_UserField "UserField" // No automatic Qt translation for this one, see t_MainTranslator -#define MAINWINDOW_COLUMN_Examiner QT_TRANSLATE_NOOP("t_DeviceListModel", "Examiner" ) +#define MAINWINDOW_COLUMN_SerialNr QT_TRANSLATE_NOOP("t_DeviceListModel", "SerialNr" ) +#define MAINWINDOW_COLUMN_LinuxDevice QT_TRANSLATE_NOOP("t_DeviceListModel", "LinuxDevice" ) +#define MAINWINDOW_COLUMN_Model QT_TRANSLATE_NOOP("t_DeviceListModel", "Model" ) +#define MAINWINDOW_COLUMN_NativePath QT_TRANSLATE_NOOP("t_DeviceListModel", "NativePath" ) +#define MAINWINDOW_COLUMN_ByPath QT_TRANSLATE_NOOP("t_DeviceListModel", "ByPath" ) +#define MAINWINDOW_COLUMN_Interface QT_TRANSLATE_NOOP("t_DeviceListModel", "Interface" ) +#define MAINWINDOW_COLUMN_State QT_TRANSLATE_NOOP("t_DeviceListModel", "State" ) +#define MAINWINDOW_COLUMN_AddStateInfo QT_TRANSLATE_NOOP("t_DeviceListModel", "AdditionalStateInfo") +#define MAINWINDOW_COLUMN_Size QT_TRANSLATE_NOOP("t_DeviceListModel", "Size" ) +#define MAINWINDOW_COLUMN_HiddenAreas QT_TRANSLATE_NOOP("t_DeviceListModel", "HiddenAreas" ) +#define MAINWINDOW_COLUMN_BadSectors QT_TRANSLATE_NOOP("t_DeviceListModel", "BadSectors" ) +#define MAINWINDOW_COLUMN_Progress QT_TRANSLATE_NOOP("t_DeviceListModel", "Progress" ) +#define MAINWINDOW_COLUMN_AverageSpeed QT_TRANSLATE_NOOP("t_DeviceListModel", "AverageSpeed" ) +#define MAINWINDOW_COLUMN_TimeRemaining QT_TRANSLATE_NOOP("t_DeviceListModel", "TimeRemaining" ) +#define MAINWINDOW_COLUMN_FifoUsage QT_TRANSLATE_NOOP("t_DeviceListModel", "FifoUsage" ) +#define MAINWINDOW_COLUMN_SectorSizeLog QT_TRANSLATE_NOOP("t_DeviceListModel", "SectorSizeLog" ) +#define MAINWINDOW_COLUMN_SectorSizePhys QT_TRANSLATE_NOOP("t_DeviceListModel", "SectorSizePhys" ) +#define MAINWINDOW_COLUMN_CurrentSpeed QT_TRANSLATE_NOOP("t_DeviceListModel", "CurrentSpeed" ) +#define MAINWINDOW_COLUMN_UserField "UserField" // No automatic Qt translation for this one, see t_MainTranslator +#define MAINWINDOW_COLUMN_Examiner QT_TRANSLATE_NOOP("t_DeviceListModel", "Examiner" ) // Main window classes // ------------------- @@ -89,6 +90,9 @@ protected: void closeEvent (QCloseEvent *pEvent); + public slots: + void SlotRescan (void); + private slots: void SlotAddSpecialDevice (void); void SlotDebug (void); diff -Nru guymager-0.8.4/md5.cpp guymager-0.8.7/md5.cpp --- guymager-0.8.4/md5.cpp 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/md5.cpp 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: MD5 calculation // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/md5.h guymager-0.8.7/md5.h --- guymager-0.8.4/md5.h 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/md5.h 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: MD5 calculation // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/media.cpp guymager-0.8.7/media.cpp --- guymager-0.8.4/media.cpp 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/media.cpp 2018-01-05 09:51:46.000000000 +0000 @@ -11,7 +11,8 @@ // copied from Mark Lord's famous hdparm. // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/media.h guymager-0.8.7/media.h --- guymager-0.8.4/media.h 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/media.h 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Module for special media function, like HPA/DCO and others // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/modules.h guymager-0.8.7/modules.h --- guymager-0.8.4/modules.h 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/modules.h 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Central application error code managment // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/qtutil.cpp guymager-0.8.7/qtutil.cpp --- guymager-0.8.4/qtutil.cpp 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/qtutil.cpp 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Different Qt utility functions // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/qtutil.h guymager-0.8.7/qtutil.h --- guymager-0.8.4/qtutil.h 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/qtutil.h 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Different Qt utility functions // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/runstats.cpp guymager-0.8.7/runstats.cpp --- guymager-0.8.4/runstats.cpp 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/runstats.cpp 2018-01-05 09:51:46.000000000 +0000 @@ -10,7 +10,8 @@ // others // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/runstats.h guymager-0.8.7/runstats.h --- guymager-0.8.4/runstats.h 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/runstats.h 2018-01-05 09:51:46.000000000 +0000 @@ -10,7 +10,8 @@ // others // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/sha1.cpp guymager-0.8.7/sha1.cpp --- guymager-0.8.4/sha1.cpp 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/sha1.cpp 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: SHA1 calculation // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/sha1.h guymager-0.8.7/sha1.h --- guymager-0.8.4/sha1.h 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/sha1.h 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: SHA1 calculation // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/sha256.cpp guymager-0.8.7/sha256.cpp --- guymager-0.8.4/sha256.cpp 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/sha256.cpp 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: SHA256 calculation // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/sha256.h guymager-0.8.7/sha256.h --- guymager-0.8.4/sha256.h 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/sha256.h 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: SHA256 calculation // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/table.cpp guymager-0.8.7/table.cpp --- guymager-0.8.4/table.cpp 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/table.cpp 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: The table widget (central widget of the application) // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/table.h guymager-0.8.7/table.h --- guymager-0.8.4/table.h 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/table.h 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: The table widget (central widget of the application) // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/threadcompress.cpp guymager-0.8.7/threadcompress.cpp --- guymager-0.8.4/threadcompress.cpp 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/threadcompress.cpp 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Multi-threaded compression // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/threadcompress.h guymager-0.8.7/threadcompress.h --- guymager-0.8.4/threadcompress.h 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/threadcompress.h 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Multi-threaded compression // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/thread.cpp guymager-0.8.7/thread.cpp --- guymager-0.8.4/thread.cpp 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/thread.cpp 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Thread base class // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/thread.h guymager-0.8.7/thread.h --- guymager-0.8.4/thread.h 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/thread.h 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Thread base class // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/threadhash.cpp guymager-0.8.7/threadhash.cpp --- guymager-0.8.4/threadhash.cpp 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/threadhash.cpp 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Thread for calculating hashes // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/threadhash.h guymager-0.8.7/threadhash.h --- guymager-0.8.4/threadhash.h 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/threadhash.h 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Thread for calculating hashes // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/threadread.cpp guymager-0.8.7/threadread.cpp --- guymager-0.8.4/threadread.cpp 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/threadread.cpp 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Thread for reading data. // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // @@ -212,6 +213,7 @@ quint64 BytesRead = 0; quint64 RemainingSize; quint64 Sector; + quint64 BadSectorCount; quint64 PrevReadPos; unsigned int ReadTry; APIRET RcRead; @@ -270,8 +272,15 @@ else memset (pBuffer, 0, ReadTry); BytesRead += ReadTry; pBuffer += ReadTry; - LOG_INFO ("[%s] Read error on sector %Ld, bad data replaced by zero block", QSTR_TO_PSZ(pDevice->LinuxDevice), Sector) + pDevice->AddBadSector (Sector); + BadSectorCount = pDevice->GetBadSectorCount (false); + if ( CONFIG(BadSectorLogThreshold) == 0 || // Threshold feature disabled if cfg param is zero + (BadSectorCount <= (quint64) CONFIG(BadSectorLogThreshold)) || + ((BadSectorCount % (quint64) CONFIG(BadSectorLogModulo )) == 0)) + LOG_INFO ("[%s] Read error on sector %Ld, bad data replaced by zero block (%Ld bad sectors up until now)", QSTR_TO_PSZ(pDevice->LinuxDevice), Sector, BadSectorCount) + if (BadSectorCount == (quint64)CONFIG(BadSectorLogThreshold)) + LOG_INFO ("[%s] Bad sector threshold has been reached, only logging every 1000th bad sector from now on.", QSTR_TO_PSZ(pDevice->LinuxDevice), Sector) if (CONFIG(JobMaxBadSectors) && (CONFIG(LimitJobs) != CONFIG_LIMITJOBS_OFF) && diff -Nru guymager-0.8.4/threadread.h guymager-0.8.7/threadread.h --- guymager-0.8.4/threadread.h 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/threadread.h 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Thread for reading data. // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/threadscan.cpp guymager-0.8.7/threadscan.cpp --- guymager-0.8.4/threadscan.cpp 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/threadscan.cpp 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Thread for scanning the connected devices // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/threadscan.h guymager-0.8.7/threadscan.h --- guymager-0.8.4/threadscan.h 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/threadscan.h 2018-01-05 09:51:46.000000000 +0000 @@ -7,7 +7,8 @@ // Section Nouvelles Technologies // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/threadwrite.cpp guymager-0.8.7/threadwrite.cpp --- guymager-0.8.4/threadwrite.cpp 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/threadwrite.cpp 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Thread for writing data. // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // @@ -1483,7 +1484,7 @@ Info = "Deleting " + FileInfo.absoluteFilePath() + " - "; Success = QFile::remove (FileInfo.absoluteFilePath()); if (Success) - Info += "successfull"; + Info += "successful"; else Info += "could not be deleted"; LOG_INFO ("[%s] %s", QSTR_TO_PSZ (pDevice->LinuxDevice), QSTR_TO_PSZ(Info)) } diff -Nru guymager-0.8.4/threadwrite.h guymager-0.8.7/threadwrite.h --- guymager-0.8.4/threadwrite.h 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/threadwrite.h 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Thread for writing data. // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/util.cpp guymager-0.8.7/util.cpp --- guymager-0.8.4/util.cpp 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/util.cpp 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Different utility functions // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. // diff -Nru guymager-0.8.4/util.h guymager-0.8.7/util.h --- guymager-0.8.4/util.h 2017-08-17 07:19:14.000000000 +0000 +++ guymager-0.8.7/util.h 2018-01-05 09:51:46.000000000 +0000 @@ -9,7 +9,8 @@ // Module: Different utility functions // **************************************************************************** -// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Guy Voncken +// Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 +// Guy Voncken // // This file is part of Guymager. //