summaryrefslogtreecommitdiff
path: root/freefilesync/debian
diff options
context:
space:
mode:
Diffstat (limited to 'freefilesync/debian')
-rw-r--r--freefilesync/debian/changelog20
-rw-r--r--freefilesync/debian/control3
-rw-r--r--freefilesync/debian/freefilesync+devuan.dsc6
-rw-r--r--freefilesync/debian/freefilesync.sharedmimeinfo154
-rw-r--r--freefilesync/debian/patches/ffs_desktop_notifications.patch53
-rw-r--r--freefilesync/debian/patches/ffs_no_check_updates.patch284
-rw-r--r--freefilesync/debian/patches/revert_zenju_aggressive_upstreamisms.patch95
-rw-r--r--freefilesync/debian/patches/series1
8 files changed, 532 insertions, 84 deletions
diff --git a/freefilesync/debian/changelog b/freefilesync/debian/changelog
index bb65c17..47308de 100644
--- a/freefilesync/debian/changelog
+++ b/freefilesync/debian/changelog
@@ -1,3 +1,23 @@
+freefilesync (11.10-1+devuan) obs; urgency=medium
+
+ * Upstream updates
+ - Fixed comparison results cleared after mouse-scrolling the first folder pair
+ - Stricter base folder existence checks before synchronization
+ - Disable all file pairs when base folder status cannot be determined
+ - Fixed sync statistics if base folder existence test failed
+ - Work around glitch in grid scrollbar size calculation
+ - Fixed folder drag and drop failing after locale conflict (macOS)
+ - Fixed incorrect mime permissions after installation (Linux)
+ - Stricter server response validation during update check
+ - Fixed incomplete item path in log if source item is missing
+ - Fixed installation error when running ConEmu
+ - Support starting FreeFileSync as root login user (Linux)
+ * [bgstack15]
+ - improve ffs_no_check_updates.patch
+ - add ffs_desktop_notifications.patch
+
+ -- B. Stack <bgstack15@gmail.com> Mon, 10 May 2021 08:16:31 -0400
+
freefilesync (11.9-1+devuan) obs; urgency=medium
* Upstream updates
diff --git a/freefilesync/debian/control b/freefilesync/debian/control
index 17ed18d..3911ad5 100644
--- a/freefilesync/debian/control
+++ b/freefilesync/debian/control
@@ -1,12 +1,13 @@
Source: freefilesync
Section: utils
Priority: optional
-Maintainer: B Stack <bgstack15@gmail.com>
+Maintainer: B. Stack <bgstack15@gmail.com>
Build-Depends: debhelper (>=12~),
imagemagick,
g++-10,
libbrotli-dev,
libcurl4-openssl-dev (>=7.68.0),
+ libglibmm-2.4-dev,
libssh2-1-dev,
libssl-dev,
wx3.0-headers,
diff --git a/freefilesync/debian/freefilesync+devuan.dsc b/freefilesync/debian/freefilesync+devuan.dsc
index 9fb345a..2a21568 100644
--- a/freefilesync/debian/freefilesync+devuan.dsc
+++ b/freefilesync/debian/freefilesync+devuan.dsc
@@ -2,11 +2,11 @@ Format: 3.0 (quilt)
Source: freefilesync
Binary: freefilesync
Architecture: any
-Version: 11.9-1+devuan
-Maintainer: B Stack <bgstack15@gmail.com>
+Version: 11.10-1+devuan
+Maintainer: B. Stack <bgstack15@gmail.com>
Homepage: https://freefilesync.org/
Standards-Version: 4.1.4
-Build-Depends: debhelper (>= 12~), g++-10, imagemagick, libbrotli-dev, libcurl4-openssl-dev, libssh2-1-dev, libssl-dev, wx3.0-headers, unzip, libgtk-3-dev, libwxgtk3.0-gtk3-dev, libfontconfig-dev
+Build-Depends: debhelper (>= 12~), g++-10, imagemagick, libbrotli-dev, libcurl4-openssl-dev, libglibmm-2.4-dev, libssh2-1-dev, libssl-dev, wx3.0-headers, unzip, libgtk-3-dev, libwxgtk3.0-gtk3-dev, libfontconfig-dev
Package-List:
freefilesync deb utils optional arch=any
Files:
diff --git a/freefilesync/debian/freefilesync.sharedmimeinfo b/freefilesync/debian/freefilesync.sharedmimeinfo
index d54523f..99f459d 100644
--- a/freefilesync/debian/freefilesync.sharedmimeinfo
+++ b/freefilesync/debian/freefilesync.sharedmimeinfo
@@ -1,18 +1,150 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
- <mime-type type="application/x-freefilesync-ffs">
- <comment>FreeFileSync configuration file</comment>
- <comment xml:lang="fr">Fichier de configuration FreeFileSync</comment>
+ <mime-type type="application/x-freefilesync-gui">
<glob pattern="*.ffs_gui"/>
+ <comment>FreeFileSync Configuration</comment>
+ <comment xml:lang="ar">إعداد FreeFileSync</comment>
+ <comment xml:lang="bg">Конфигурация на FreeFileSync</comment>
+ <comment xml:lang="cs">Nastavení FreeFileSync</comment>
+ <comment xml:lang="da">FreeFileSync indstillinger</comment>
+ <comment xml:lang="de">FreeFileSync Konfiguration</comment>
+ <comment xml:lang="el">Ρυθμίσεις του FreeFileSync</comment>
+ <comment xml:lang="en_GB">FreeFileSync Configuration</comment>
+ <comment xml:lang="es">Configuración de FreeFileSync</comment>
+ <comment xml:lang="fi">FreeFileSync määrittelyt</comment>
+ <comment xml:lang="fr">Configuration de FreeFileSync</comment>
+ <comment xml:lang="he">תצורת FreeFileSync</comment>
+ <comment xml:lang="hi">FreeFileSync कॉन्फ़िगरेशन</comment>
+ <comment xml:lang="hr">FreeFileSync Postavke</comment>
+ <comment xml:lang="hu">FreeFileSync konfigurálása</comment>
+ <comment xml:lang="it">Configurazione FreeFileSync</comment>
+ <comment xml:lang="ja">FreeFileSync 構成設定</comment>
+ <comment xml:lang="ko">FreeFileSync 환경설정</comment>
+ <comment xml:lang="lt">FreeFileSync Konfigūracijos</comment>
+ <comment xml:lang="nl">FreeFileSync configuratie</comment>
+ <comment xml:lang="no">FreeFileSync konfigurering</comment>
+ <comment xml:lang="pl">Konfiguracja FreeFileSync</comment>
+ <comment xml:lang="pt">Configuração do FreeFileSync</comment>
+ <comment xml:lang="pt_BR">Configuração do FreeFileSync</comment>
+ <comment xml:lang="ro">Configurație FreeFileSync</comment>
+ <comment xml:lang="ru">Конфигурация FreeFileSync</comment>
+ <comment xml:lang="sk">FreeFileSync konfigurácia</comment>
+ <comment xml:lang="sl">Nastavitve FreeFileSync</comment>
+ <comment xml:lang="sv">FreeFileSync Konfiguration</comment>
+ <comment xml:lang="tr">FreeFileSync Yapılandırması</comment>
+ <comment xml:lang="vi">Cấu hình FreeFileSync</comment>
+ <comment xml:lang="zh">FreeFileSync 配置</comment>
+ <comment xml:lang="zh_TW">FreeFileSync配置</comment>
</mime-type>
- <mime-type type="application/x-freefilesync-real">
- <comment>RealTimeSync configuration file</comment>
- <comment xml:lang="fr">Fichier de configuration RealTimeSync</comment>
- <glob pattern="*.ffs_real"/>
- </mime-type>
+
<mime-type type="application/x-freefilesync-batch">
- <comment>FreeFileSync batch file</comment>
- <comment xml:lang="fr">Fichier de batch FreeFileSync</comment>
<glob pattern="*.ffs_batch"/>
+ <comment>FreeFileSync Batch File</comment>
+ <comment xml:lang="ar">الملف الدفعي الخاص بـ FreeFileSync</comment>
+ <comment xml:lang="bg">Пакетен Файл на FreeFileSync</comment>
+ <comment xml:lang="cs">Dávka FreeFileSync</comment>
+ <comment xml:lang="da">FreeFileSync batchfil</comment>
+ <comment xml:lang="de">FreeFileSync Batchdatei</comment>
+ <comment xml:lang="el">Δέσμη Ενεργειών του FreeFileSync</comment>
+ <comment xml:lang="en_GB">FreeFileSync Batch File</comment>
+ <comment xml:lang="es">Archivo por lotes de FreeFileSync</comment>
+ <comment xml:lang="fi">FreeFileSync eräajo</comment>
+ <comment xml:lang="fr">Fichiers batch de FreeFileSync</comment>
+ <comment xml:lang="he">קובץ אצווה של FreeFileSync</comment>
+ <comment xml:lang="hi">FreeFileSync बॅच फ़ाइल</comment>
+ <comment xml:lang="hr">FreeFileSync slijedna datoteka</comment>
+ <comment xml:lang="hu">FreeFileSync kötegelt állomány</comment>
+ <comment xml:lang="it">File Batch FreeFileSync</comment>
+ <comment xml:lang="ja">FreeFileSync 一括ファイル</comment>
+ <comment xml:lang="ko">FreeFileSync 배치(일괄) 파일</comment>
+ <comment xml:lang="lt">FreeFileSync Failų Paketas</comment>
+ <comment xml:lang="nl">FreeFileSync batch bestand</comment>
+ <comment xml:lang="no">FreeFileSync batchfil</comment>
+ <comment xml:lang="pl">Plik wsadowy FreeFileSync</comment>
+ <comment xml:lang="pt">Ficheiro Batch FreeFileSync</comment>
+ <comment xml:lang="pt_BR">Arquivo em Lotes do FreeFileSync</comment>
+ <comment xml:lang="ro">Fișier Set [Batch] FreeFileSync</comment>
+ <comment xml:lang="ru">Файл пакетного задания FreeFileSync</comment>
+ <comment xml:lang="sk">Dávkový súbor FreeFileSync</comment>
+ <comment xml:lang="sl">FreeFileSync paketna datoteka</comment>
+ <comment xml:lang="sv">FreeFileSync Batch-fil</comment>
+ <comment xml:lang="tr">FreeFileSync Toplu İşlem Dosyası</comment>
+ <comment xml:lang="vi">Tập tin thực thi FreeFileSync</comment>
+ <comment xml:lang="zh">FreeFileSync 批处理文件</comment>
+ <comment xml:lang="zh_TW">FreeFileSync批次檔</comment>
+ </mime-type>
+
+ <mime-type type="application/x-freefilesync-db">
+ <glob pattern="*.ffs_db"/>
+ <comment>FreeFileSync Synchronization Database</comment>
+ <comment xml:lang="ar">قاعدة بيانات مزامنة FreeFileSync</comment>
+ <comment xml:lang="bg">Синхронизираща База Данни на FreeFileSync</comment>
+ <comment xml:lang="cs">Synchronizační databáze FreeFileSync</comment>
+ <comment xml:lang="da">FreeFileSync synkroniseringsdatabase</comment>
+ <comment xml:lang="de">FreeFileSync Synchronisationsdatenbank</comment>
+ <comment xml:lang="el">Βάση Δεδομένων Συγχρονισμού του FreeFileSync</comment>
+ <comment xml:lang="en_GB">FreeFileSync Synchronisation Database</comment>
+ <comment xml:lang="es">Base de datos de sincronización de FreeFileSync</comment>
+ <comment xml:lang="fi">FreeFileSync Synkronoinnin tietokanta</comment>
+ <comment xml:lang="fr">Base de données de synchronisation de FreeFileSync</comment>
+ <comment xml:lang="he">בסיס נתוני סנכרון של FreeFileSync</comment>
+ <comment xml:lang="hi">FreeFileSync सिंक्रनाइज़ेशन डेटाबेस</comment>
+ <comment xml:lang="hr">FreeFileSync sinkronizacijska baza podataka</comment>
+ <comment xml:lang="hu">FreeFileSync szinkronizációs adatbázis</comment>
+ <comment xml:lang="it">Database sincronizzazione FreeFileSync</comment>
+ <comment xml:lang="ja">FreeFileSync 同期データベース</comment>
+ <comment xml:lang="ko">FreeFileSync 동기화 데이터베이스</comment>
+ <comment xml:lang="lt">FreeFileSync Suvienodinimo duomenų bazė</comment>
+ <comment xml:lang="nl">FreeFileSync synchronisatie database</comment>
+ <comment xml:lang="no">FreeFileSync synkronisering database</comment>
+ <comment xml:lang="pl">Baza danych FreeFileSync</comment>
+ <comment xml:lang="pt">Base de Dados de Sincronização FreeFileSync</comment>
+ <comment xml:lang="pt_BR">Banco de Dados de Sincronização do FreeFileSync</comment>
+ <comment xml:lang="ro">Bază de Date pentru Sincronizare FreeFileSync</comment>
+ <comment xml:lang="ru">База данных синхронизации FreeFileSync</comment>
+ <comment xml:lang="sk">Synchronizačná databáza FreeFileSync</comment>
+ <comment xml:lang="sl">FreeFileSync sinhronizacijska baza podatkov</comment>
+ <comment xml:lang="sv">FreeFileSync Synkroniseringsdatabas</comment>
+ <comment xml:lang="tr">FreeFileSync Eşitleme Veritabanı</comment>
+ <comment xml:lang="vi">FreeFileSync đồng bộ cơ sở dữ liệu</comment>
+ <comment xml:lang="zh">FreeFileSync 同步数据库</comment>
+ <comment xml:lang="zh_TW">FreeFileSync同步資料庫</comment>
+ </mime-type>
+
+ <mime-type type="application/x-freefilesync-real">
+ <glob pattern="*.ffs_real"/>
+ <comment>RealTimeSync Configuration</comment>
+ <comment xml:lang="ar">إعداد RealTimeSync</comment>
+ <comment xml:lang="bg">Конфигурация на RealTimeSync</comment>
+ <comment xml:lang="cs">Nastavení RealTimeSync</comment>
+ <comment xml:lang="da">RealTimeSync indstillinger</comment>
+ <comment xml:lang="de">RealTimeSync Konfiguration</comment>
+ <comment xml:lang="el">Ρυθμίσεις του RealTimeSync</comment>
+ <comment xml:lang="en_GB">RealTimeSync Configuration</comment>
+ <comment xml:lang="es">Configuración de RealTimeSync</comment>
+ <comment xml:lang="fi">RealTimeSync määrittelyt</comment>
+ <comment xml:lang="fr">Configuration de RealTimeSync</comment>
+ <comment xml:lang="he">תצורת RealTimeSync</comment>
+ <comment xml:lang="hi">RealTimeSync कॉन्फ़िगरेशन</comment>
+ <comment xml:lang="hr">RealTimeSync postavke</comment>
+ <comment xml:lang="hu">RealTimeSync konfigurálása</comment>
+ <comment xml:lang="it">Configurazione RealTimeSync</comment>
+ <comment xml:lang="ja">RealTimeSync 構成設定</comment>
+ <comment xml:lang="ko">RealTimeSync 환경설정</comment>
+ <comment xml:lang="lt">RealTimeSync Nustatymai</comment>
+ <comment xml:lang="nl">RealTimeSync configuratie</comment>
+ <comment xml:lang="no">RealTimeSync konfigurering</comment>
+ <comment xml:lang="pl">Konfiguracja RealTimeSync</comment>
+ <comment xml:lang="pt">Configuração do RealTimeSync</comment>
+ <comment xml:lang="pt_BR">Configuração do RealTimeSync</comment>
+ <comment xml:lang="ro">Configurație RealTimeSync</comment>
+ <comment xml:lang="ru">Конфигурация RealTimeSync</comment>
+ <comment xml:lang="sk">Konfigurácia RealTimeSync</comment>
+ <comment xml:lang="sl">RealTimeSync nastavitve</comment>
+ <comment xml:lang="sv">RealTimeSync Konfiguration</comment>
+ <comment xml:lang="tr">RealTimeSync Yapılandırması</comment>
+ <comment xml:lang="vi">RealTimeSync Cấu hình đồng bộ thời gian thực</comment>
+ <comment xml:lang="zh">RealTimeSync 配置</comment>
+ <comment xml:lang="zh_TW">RealTimeSync配置</comment>
</mime-type>
</mime-info>
diff --git a/freefilesync/debian/patches/ffs_desktop_notifications.patch b/freefilesync/debian/patches/ffs_desktop_notifications.patch
new file mode 100644
index 0000000..5610fd1
--- /dev/null
+++ b/freefilesync/debian/patches/ffs_desktop_notifications.patch
@@ -0,0 +1,53 @@
+diff -aur 11.9-1/FreeFileSync/Source/Makefile 11.9-2/FreeFileSync/Source/Makefile
+--- 11.9-1/FreeFileSync/Source/Makefile 2021-05-06 16:24:53.987902373 -0400
++++ 11.9-2/FreeFileSync/Source/Makefile 2021-05-06 17:09:31.512474440 -0400
+@@ -21,6 +22,13 @@
+ #treat as system headers so that warnings are hidden:
+ cxxFlags += -isystem/usr/include/gtk-3.0
+
++with_notifications ?= NO
++ifeq ($(with_notifications),YES)
++# package libglibmm-2.4-dev or glibmm24-devel
++cxxFlags += `pkg-config --cflags giomm-2.4` -Dwith_notifications
++linkFlags += `pkg-config --libs giomm-2.4`
++endif
++
+ #support for SELinux (optional)
+ SELINUX_EXISTING=$(shell pkg-config --exists libselinux && echo YES)
+ ifeq ($(SELINUX_EXISTING),YES)
+diff -aur 11.9-1/FreeFileSync/Source/ui/progress_indicator.cpp 11.9-2/FreeFileSync/Source/ui/progress_indicator.cpp
+--- 11.9-1/FreeFileSync/Source/ui/progress_indicator.cpp 2021-05-06 15:20:34.286831934 -0400
++++ 11.9-2/FreeFileSync/Source/ui/progress_indicator.cpp 2021-05-06 17:11:45.486004158 -0400
+@@ -32,6 +32,9 @@
+ #include "../perf_check.h"
+ #include "../icon_buffer.h"
+
++#ifdef with_notifications
++#include<giomm-2.4/giomm.h>
++#endif
+
+ using namespace zen;
+ using namespace fff;
+@@ -1359,6 +1362,22 @@
+ pnl_.m_staticTextPhase->SetLabel(getSyncResultLabel(syncResult));
+ //pnl_.m_bitmapStatus->SetToolTip(); -> redundant
+
++#ifdef with_notifications
++ // Desktop notification for Linux
++ char title[] = "FreeFileSync";
++ // from https://stackoverflow.com/a/12097772
++ std::wstring ssR {getSyncResultLabel(syncResult)};
++ std::string body;
++ std::transform(ssR.begin(), ssR.end(), std::back_inserter(body), [] (wchar_t c){ return (char)c;});
++ char icon[] = "freefilesync";
++ auto Application = Gio::Application::create("org.zenju.freefilesync", Gio::APPLICATION_FLAGS_NONE);
++ Application->register_application();
++ auto Notification = Gio::Notification::create(title);
++ Notification->set_body(body);
++ auto Icon = Gio::ThemedIcon::create(icon);
++ Notification->set_icon (Icon);
++ Application->send_notification(Notification);
++#endif
+ //show status on Windows 7 taskbar
+ if (taskbar_.get())
+ switch (syncResult)
diff --git a/freefilesync/debian/patches/ffs_no_check_updates.patch b/freefilesync/debian/patches/ffs_no_check_updates.patch
index d90bf7d..c0c4fc2 100644
--- a/freefilesync/debian/patches/ffs_no_check_updates.patch
+++ b/freefilesync/debian/patches/ffs_no_check_updates.patch
@@ -1,44 +1,177 @@
-diff -Naur -x '*.orig' -x '*.rej' -x '*.git*' 11.4-0/FreeFileSync/Source/ui/main_dlg.cpp 11.4-1/FreeFileSync/Source/ui/main_dlg.cpp
---- 11.4-0/FreeFileSync/Source/ui/main_dlg.cpp 2020-12-08 08:15:29.432156507 -0500
-+++ 11.4-1/FreeFileSync/Source/ui/main_dlg.cpp 2020-12-08 18:29:47.210277596 -0500
-@@ -5552,7 +5552,7 @@
- globalCfg_.lastUpdateCheck = 0; //reset to GlobalSettings.xml default value!
+Version: 11.10
+Message: This is a major rewrite of the ffs_no_check_updates patch from before 11.10 which disabled only a few technical www interactions. This current version completely deletes all logic associated with checking the version of the program.
+Date: 2021-05-10
+Author: bgstack15
+diff -aur 11.10-1/FreeFileSync/Source/ui/gui_generated.cpp 11.10-2/FreeFileSync/Source/ui/gui_generated.cpp
+--- 11.10-1/FreeFileSync/Source/ui/gui_generated.cpp 2021-05-10 08:10:14.747776591 -0400
++++ 11.10-2/FreeFileSync/Source/ui/gui_generated.cpp 2021-05-10 10:41:28.446374196 -0400
+@@ -109,17 +109,6 @@
+ m_menuItemHelp = new wxMenuItem( m_menuHelp, wxID_HELP, wxString( _("&View help") ) + wxT('\t') + wxT("F1"), wxEmptyString, wxITEM_NORMAL );
+ m_menuHelp->Append( m_menuItemHelp );
- m_menuItemCheckVersionAuto->Check(updateCheckActive(globalCfg_.lastUpdateCheck));
+- m_menuHelp->AppendSeparator();
-
-+ /*
- if (shouldRunAutomaticUpdateCheck(globalCfg_.lastUpdateCheck))
+- m_menuItemCheckVersionNow = new wxMenuItem( m_menuHelp, wxID_ANY, wxString( _("&Check for updates now") ), wxEmptyString, wxITEM_NORMAL );
+- m_menuHelp->Append( m_menuItemCheckVersionNow );
+-
+- m_menuItemCheckVersionAuto = new wxMenuItem( m_menuHelp, wxID_ANY, wxString( _("Check &automatically once a week") ), wxEmptyString, wxITEM_CHECK );
+- m_menuHelp->Append( m_menuItemCheckVersionAuto );
+- m_menuItemCheckVersionAuto->Check( true );
+-
+- m_menuHelp->AppendSeparator();
+-
+ m_menuItemAbout = new wxMenuItem( m_menuHelp, wxID_ABOUT, wxString( _("&About") ) + wxT('\t') + wxT("Shift+F1"), wxEmptyString, wxITEM_NORMAL );
+ m_menuHelp->Append( m_menuItemAbout );
+
+@@ -1140,8 +1129,6 @@
+ m_menuTools->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onMenuExportFileList ), this, m_menuItemExportList->GetId());
+ m_menuTools->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onMenuResetLayout ), this, m_menuItem51->GetId());
+ m_menuHelp->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onShowHelp ), this, m_menuItemHelp->GetId());
+- m_menuHelp->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onMenuCheckVersion ), this, m_menuItemCheckVersionNow->GetId());
+- m_menuHelp->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onMenuCheckVersionAutomatically ), this, m_menuItemCheckVersionAuto->GetId());
+ m_menuHelp->Bind(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainDialogGenerated::onMenuAbout ), this, m_menuItemAbout->GetId());
+ m_bpButtonCmpConfig->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::onCmpSettings ), NULL, this );
+ m_bpButtonCmpConfig->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::onCompSettingsContextMouse ), NULL, this );
+diff -aur 11.10-1/FreeFileSync/Source/ui/gui_generated.h 11.10-2/FreeFileSync/Source/ui/gui_generated.h
+--- 11.10-1/FreeFileSync/Source/ui/gui_generated.h 2021-05-10 08:10:14.747776591 -0400
++++ 11.10-2/FreeFileSync/Source/ui/gui_generated.h 2021-05-10 10:52:32.132708289 -0400
+@@ -92,8 +92,6 @@
+ wxMenuItem* m_menuItemShowOverview;
+ wxMenu* m_menuHelp;
+ wxMenuItem* m_menuItemHelp;
+- wxMenuItem* m_menuItemCheckVersionNow;
+- wxMenuItem* m_menuItemCheckVersionAuto;
+ wxMenuItem* m_menuItemAbout;
+ wxBoxSizer* bSizerPanelHolder;
+ wxPanel* m_panelTopButtons;
+@@ -228,8 +226,6 @@
+ virtual void onMenuExportFileList( wxCommandEvent& event ) { event.Skip(); }
+ virtual void onMenuResetLayout( wxCommandEvent& event ) { event.Skip(); }
+ virtual void onShowHelp( wxCommandEvent& event ) { event.Skip(); }
+- virtual void onMenuCheckVersion( wxCommandEvent& event ) { event.Skip(); }
+- virtual void onMenuCheckVersionAutomatically( wxCommandEvent& event ) { event.Skip(); }
+ virtual void onMenuAbout( wxCommandEvent& event ) { event.Skip(); }
+ virtual void onCompSettingsContextMouse( wxMouseEvent& event ) { event.Skip(); }
+ virtual void onCompSettingsContext( wxCommandEvent& event ) { event.Skip(); }
+diff -aur 11.10-1/FreeFileSync/Source/ui/main_dlg.cpp 11.10-2/FreeFileSync/Source/ui/main_dlg.cpp
+--- 11.10-1/FreeFileSync/Source/ui/main_dlg.cpp 2021-05-10 10:43:26.103497095 -0400
++++ 11.10-2/FreeFileSync/Source/ui/main_dlg.cpp 2021-05-10 10:52:37.904763378 -0400
+@@ -706,7 +706,6 @@
+
+ m_menuItemHelp ->SetBitmap(loadImage("help_sicon"));
+ m_menuItemAbout->SetBitmap(loadImage("about_sicon"));
+- m_menuItemCheckVersionNow->SetBitmap(loadImage("update_check_sicon"));
+
+ auto fixMenuIcons = [](wxMenu& menu) //GTK: image must be set *before* adding wxMenuItem to menu or it won't show
{
- flashStatusInformation(_("Searching for program updates..."));
-@@ -5560,6 +5560,7 @@
- automaticUpdateCheckEval(this, globalCfg_.lastUpdateCheck, globalCfg_.lastOnlineVersion,
- automaticUpdateCheckRunAsync(automaticUpdateCheckPrepare(*this).get()).get());
- }
-+ */
- }
+@@ -825,9 +824,6 @@
+ //mainly to update row label sizes...
+ updateGui();
+- //register regular check for update on next idle event
+- Bind(wxEVT_IDLE, &MainDialog::onStartupUpdateCheck, this);
+-
+ //asynchronous call to wxWindow::Layout(): fix superfluous frame on right and bottom when FFS is started in fullscreen mode
+ Bind(wxEVT_IDLE, &MainDialog::onLayoutWindowAsync, this);
+ wxCommandEvent evtDummy; //call once before onLayoutWindowAsync()
+@@ -1078,8 +1074,6 @@
+ auiMgr_.GetPane(m_panelSearch).Hide(); //no need to show it on startup
+ auiMgr_.GetPane(m_panelLog ).Hide(); //
-@@ -5583,7 +5584,7 @@
- m_menubar->Append(menu, blackStar + L' ' + replaceCpy(_("FreeFileSync %x is available!"), L"%x", utfTo<std::wstring>(globalCfg_.lastOnlineVersion)) + L' ' + blackStar);
- }
- };
+- m_menuItemCheckVersionAuto->Check(updateCheckActive(globalCfg_.lastUpdateCheck));
-
-+ /*
- if (shouldRunAutomaticUpdateCheck(globalCfg_.lastUpdateCheck))
- {
- flashStatusInformation(_("Searching for program updates..."));
-@@ -5600,6 +5601,7 @@
+ auiMgr_.Update();
+ }
+
+@@ -5601,72 +5595,6 @@
}
- else
- showNewVersionReminder();
-+ */
}
-
-diff -aur 11.7-0/FreeFileSync/Source/ui/version_check.cpp 11.7-1/FreeFileSync/Source/ui/version_check.cpp
---- 11.7-0/FreeFileSync/Source/ui/version_check.cpp 2021-03-02 17:21:26.820360086 -0500
-+++ 11.7-1/FreeFileSync/Source/ui/version_check.cpp 2021-03-02 17:49:29.535590111 -0500
-@@ -70,6 +70,8 @@
+-
+-void MainDialog::onMenuCheckVersion(wxCommandEvent& event)
+-{
+- checkForUpdateNow(*this, globalCfg_.lastOnlineVersion);
+-}
+-
+-
+-void MainDialog::onMenuCheckVersionAutomatically(wxCommandEvent& event)
+-{
+- if (updateCheckActive(globalCfg_.lastUpdateCheck))
+- disableUpdateCheck(globalCfg_.lastUpdateCheck);
+- else
+- globalCfg_.lastUpdateCheck = 0; //reset to GlobalSettings.xml default value!
+-
+- m_menuItemCheckVersionAuto->Check(updateCheckActive(globalCfg_.lastUpdateCheck));
+-
+- if (shouldRunAutomaticUpdateCheck(globalCfg_.lastUpdateCheck))
+- {
+- flashStatusInformation(_("Searching for program updates..."));
+- //synchronous update check is sufficient here:
+- automaticUpdateCheckEval(this, globalCfg_.lastUpdateCheck, globalCfg_.lastOnlineVersion,
+- automaticUpdateCheckRunAsync(automaticUpdateCheckPrepare(*this).get()).get());
+- }
+-}
+-
+-
+-void MainDialog::onStartupUpdateCheck(wxIdleEvent& event)
+-{
+- //execute just once per startup!
+- [[maybe_unused]] bool ubOk = Unbind(wxEVT_IDLE, &MainDialog::onStartupUpdateCheck, this);
+- assert(ubOk);
+-
+- auto showNewVersionReminder = [this]
+- {
+- if (!globalCfg_.lastOnlineVersion.empty() && haveNewerVersionOnline(globalCfg_.lastOnlineVersion))
+- {
+- auto menu = new wxMenu();
+- wxMenuItem* newItem = new wxMenuItem(menu, wxID_ANY, _("&Show details"));
+- Bind(wxEVT_COMMAND_MENU_SELECTED, [this](wxCommandEvent&) { checkForUpdateNow(*this, globalCfg_.lastOnlineVersion); }, newItem->GetId());
+- //show changelog + handle Donation Edition auto-updater (including expiration)
+- menu->Append(newItem); //pass ownership
+-
+- const std::wstring& blackStar = utfTo<std::wstring>("★");
+- m_menubar->Append(menu, blackStar + L' ' + replaceCpy(_("FreeFileSync %x is available!"), L"%x", utfTo<std::wstring>(globalCfg_.lastOnlineVersion)) + L' ' + blackStar);
+- }
+- };
+-
+- if (shouldRunAutomaticUpdateCheck(globalCfg_.lastUpdateCheck))
+- {
+- flashStatusInformation(_("Searching for program updates..."));
+-
+- std::shared_ptr<const UpdateCheckResultPrep> resultPrep = automaticUpdateCheckPrepare(*this); //run on main thread:
+-
+- guiQueue_.processAsync([resultPrep] { return automaticUpdateCheckRunAsync(resultPrep.get()); }, //run on worker thread: (long-running part of the check)
+- [this, showNewVersionReminder] (std::shared_ptr<const UpdateCheckResult>&& resultAsync)
+- {
+- automaticUpdateCheckEval(this, globalCfg_.lastUpdateCheck, globalCfg_.lastOnlineVersion,
+- resultAsync.get()); //run on main thread:
+- showNewVersionReminder();
+- });
+- }
+- else
+- showNewVersionReminder();
+-}
+-
+-
+ void MainDialog::onLayoutWindowAsync(wxIdleEvent& event)
+ {
+ //execute just once per startup!
+diff -aur 11.10-1/FreeFileSync/Source/ui/main_dlg.h 11.10-2/FreeFileSync/Source/ui/main_dlg.h
+--- 11.10-1/FreeFileSync/Source/ui/main_dlg.h 2021-05-10 08:02:46.059494398 -0400
++++ 11.10-2/FreeFileSync/Source/ui/main_dlg.h 2021-05-10 10:52:28.108669884 -0400
+@@ -266,8 +266,6 @@
+ void onMenuExportFileList (wxCommandEvent& event) override;
+ void onMenuResetLayout (wxCommandEvent& event) override { resetLayout(); }
+ void onMenuFindItem (wxCommandEvent& event) override { showFindPanel(true /*show*/); } //CTRL + F
+- void onMenuCheckVersion (wxCommandEvent& event) override;
+- void onMenuCheckVersionAutomatically(wxCommandEvent& event) override;
+ void onMenuAbout (wxCommandEvent& event) override;
+ void onShowHelp (wxCommandEvent& event) override { wxLaunchDefaultBrowser(L"https://freefilesync.org/manual.php?topic=freefilesync"); }
+ void onMenuQuit (wxCommandEvent& event) override { Close(); }
+diff -aur 11.10-1/FreeFileSync/Source/ui/version_check.cpp 11.10-2/FreeFileSync/Source/ui/version_check.cpp
+--- 11.10-1/FreeFileSync/Source/ui/version_check.cpp 2021-05-10 08:10:14.751776629 -0400
++++ 11.10-2/FreeFileSync/Source/ui/version_check.cpp 2021-05-10 10:50:08.595338399 -0400
+@@ -73,6 +73,8 @@
bool fff::shouldRunAutomaticUpdateCheck(time_t lastUpdateCheck)
{
@@ -47,7 +180,7 @@ diff -aur 11.7-0/FreeFileSync/Source/ui/version_check.cpp 11.7-1/FreeFileSync/So
if (lastUpdateCheck == getVersionCheckInactiveId())
return false;
-@@ -159,8 +161,7 @@
+@@ -158,8 +160,7 @@
std::wstring updateDetailsMsg;
try
{
@@ -57,31 +190,86 @@ diff -aur 11.7-0/FreeFileSync/Source/ui/version_check.cpp 11.7-1/FreeFileSync/So
}
catch (const SysError& e) { updateDetailsMsg = _("Failed to retrieve update information.") + + L"\n\n" + e.toString(); }
-@@ -178,8 +179,7 @@
+@@ -182,8 +183,8 @@
std::string getOnlineVersion(const std::vector<std::pair<std::string, std::string>>& postParams) //throw SysError
{
- const std::string response = sendHttpPost(Zstr("https://api.freefilesync.org/latest_version"), postParams,
- ffsUpdateCheckUserAgent, nullptr /*caCertFilePath*/, nullptr /*notifyUnbufferedIO*/).readAll(); //throw SysError
+ const std::string response = "";
- return trimCpy(response);
++ return trimCpy(response);
+
+ if (response.empty() ||
+ !std::all_of(response.begin(), response.end(), [](char c) { return isDigit(c) || c == FFS_VERSION_SEPARATOR; }) ||
+@@ -226,58 +227,6 @@
}
-@@ -226,13 +226,13 @@
- const std::string onlineVersion = getOnlineVersion(geHttpPostParameters(parent)); //throw SysError
- lastOnlineVersion = onlineVersion;
+-void fff::checkForUpdateNow(wxWindow& parent, std::string& lastOnlineVersion)
+-{
+- try
+- {
+- const std::string onlineVersion = getOnlineVersion(geHttpPostParameters(parent)); //throw SysError
+- lastOnlineVersion = onlineVersion;
+-
- if (haveNewerVersionOnline(onlineVersion))
- showUpdateAvailableDialog(&parent, onlineVersion);
- else
-+ //if (haveNewerVersionOnline(onlineVersion))
-+ // showUpdateAvailableDialog(&parent, onlineVersion);
-+ //else
- showNotificationDialog(&parent, DialogInfoType::info, PopupDialogCfg().
- setIcon(loadImage("update_check")).
- setTitle(_("Check for Program Updates")).
+- showNotificationDialog(&parent, DialogInfoType::info, PopupDialogCfg().
+- setIcon(loadImage("update_check")).
+- setTitle(_("Check for Program Updates")).
- setMainInstructions(_("FreeFileSync is up to date.")));
-+ setMainInstructions(_("Use your package manager for any updates to FreeFileSync.")));
- }
- catch (const SysError& e)
- {
+- }
+- catch (const SysError& e)
+- {
+- if (internetIsAlive())
+- {
+- lastOnlineVersion = "Unknown";
+-
+- switch (showConfirmationDialog(&parent, DialogInfoType::error, PopupDialogCfg().
+- setTitle(_("Check for Program Updates")).
+- setMainInstructions(_("Cannot find current FreeFileSync version number online. A newer version is likely available. Check manually now?")).
+- setDetailInstructions(e.toString()), _("&Check"), _("&Retry")))
+- {
+- case ConfirmationButton2::accept:
+- wxLaunchDefaultBrowser(L"https://freefilesync.org/get_latest.php");
+- break;
+- case ConfirmationButton2::accept2: //retry
+- checkForUpdateNow(parent, lastOnlineVersion); //note: retry via recursion!!!
+- break;
+- case ConfirmationButton2::cancel:
+- break;
+- }
+- }
+- else
+- switch (showConfirmationDialog(&parent, DialogInfoType::error, PopupDialogCfg().
+- setTitle(_("Check for Program Updates")).
+- setMainInstructions(replaceCpy(_("Unable to connect to %x."), L"%x", L"freefilesync.org")).
+- setDetailInstructions(e.toString()), _("&Retry")))
+- {
+- case ConfirmationButton::accept: //retry
+- checkForUpdateNow(parent, lastOnlineVersion); //note: retry via recursion!!!
+- break;
+- case ConfirmationButton::cancel:
+- break;
+- }
+- }
+-}
+-
+-
+ struct fff::UpdateCheckResultPrep
+ {
+ std::vector<std::pair<std::string, std::string>> postParameters;
+diff -aur 11.10-1/FreeFileSync/Source/ui/version_check.h 11.10-2/FreeFileSync/Source/ui/version_check.h
+--- 11.10-1/FreeFileSync/Source/ui/version_check.h 2021-05-10 08:02:46.067494474 -0400
++++ 11.10-2/FreeFileSync/Source/ui/version_check.h 2021-05-10 10:50:22.035466671 -0400
+@@ -32,9 +32,6 @@
+ void automaticUpdateCheckEval(wxWindow* parent, time_t& lastUpdateCheck, std::string& lastOnlineVersion,
+ const UpdateCheckResult* asyncResult);
+ //----------------------------------------------------------------------------
+-//call from main thread:
+-void checkForUpdateNow(wxWindow& parent, std::string& lastOnlineVersion);
+-//----------------------------------------------------------------------------
+ }
+
+ #endif //VERSION_CHECK_H_324872374893274983275
diff --git a/freefilesync/debian/patches/revert_zenju_aggressive_upstreamisms.patch b/freefilesync/debian/patches/revert_zenju_aggressive_upstreamisms.patch
index 6cae409..de8d5e9 100644
--- a/freefilesync/debian/patches/revert_zenju_aggressive_upstreamisms.patch
+++ b/freefilesync/debian/patches/revert_zenju_aggressive_upstreamisms.patch
@@ -1,3 +1,6 @@
+Message: Some of these can be traced back to version 10.23 which was the last to not use <unordered_map>
+Date: 2021-05-10
+Version: 11.10
diff -x '*.rej' -x '*.orig' -x '*.git*' -Naur 10.24-0/wx+/choice_enum.h 10.24-1/wx+/choice_enum.h
--- 10.24-0/wx+/choice_enum.h 2020-05-17 18:30:59.441499418 -0400
+++ 10.24-1/wx+/choice_enum.h 2020-05-17 18:53:59.893685507 -0400
@@ -9,37 +12,32 @@ diff -x '*.rej' -x '*.orig' -x '*.git*' -Naur 10.24-0/wx+/choice_enum.h 10.24-1/
#include <vector>
#include <wx/choice.h>
-@@ -44,11 +43,8 @@
- descrList.push_back({value, {text, tooltip}});
- return *this;
- }
--
+@@ -47,8 +46,6 @@
+
using DescrList = std::vector<std::pair<Enum, std::pair<wxString, wxString>>>;
DescrList descrList;
-
-- std::unordered_map<const wxChoice*, std::vector<wxString>> itemsSetLast;
+- std::unordered_map<const wxChoice*, std::vector<wxString>> labelsSetLast;
};
template <class Enum> void setEnumVal(const EnumDescrList<Enum>& mapping, wxChoice& ctrl, Enum value);
template <class Enum> Enum getEnumVal(const EnumDescrList<Enum>& mapping, const wxChoice& ctrl);
-@@ -69,34 +65,26 @@
-
- //--------------- impelementation -------------------------------------------
+@@ -71,32 +68,24 @@
template <class Enum>
--void setEnumVal(EnumDescrList<Enum>& mapping, wxChoice& ctrl, Enum value)
-+void setEnumVal(const EnumDescrList<Enum>& mapping, wxChoice& ctrl, Enum value)
+ void setEnumVal(EnumDescrList<Enum>& mapping, wxChoice& ctrl, Enum value)
{
-- auto& itemsSetLast = mapping.itemsSetLast[&ctrl];
+- auto& labelsSetLast = mapping.labelsSetLast[&ctrl];
+-
+- std::vector<wxString> labels;
+- for (const auto& [val, texts] : mapping.descrList)
+- labels.push_back(texts.first);
+ ctrl.Clear();
-- std::vector<wxString> items;
+- if (labels != labelsSetLast)
+ int selectedPos = 0;
- for (auto it = mapping.descrList.begin(); it != mapping.descrList.end(); ++it)
-- items.push_back(it->second.first);
--
-- if (items != itemsSetLast)
++ for (auto it = mapping.descrList.begin(); it != mapping.descrList.end(); ++it)
{
-- ctrl.Set(items); //expensive as fuck! => only call when absolutely needed!
-- itemsSetLast = std::move(items);
+- ctrl.Set(labels); //expensive as fuck! => only call when absolutely needed!
+- labelsSetLast = std::move(labels);
+ ctrl.Append(it->second.first);
+ if (it->first == value)
+ {
@@ -52,7 +50,7 @@ diff -x '*.rej' -x '*.orig' -x '*.git*' -Naur 10.24-0/wx+/choice_enum.h 10.24-1/
+ }
}
- //-----------------------------------------------------------------
--
+
- const auto it = std::find_if(mapping.descrList.begin(), mapping.descrList.end(), [&](const auto& mapItem) { return mapItem.first == value; });
- if (it != mapping.descrList.end())
- {
@@ -61,7 +59,7 @@ diff -x '*.rej' -x '*.orig' -x '*.git*' -Naur 10.24-0/wx+/choice_enum.h 10.24-1/
- ctrl.SetToolTip(tooltip);
- else
- ctrl.UnsetToolTip();
-
+-
- const int selectedPos = it - mapping.descrList.begin();
- ctrl.SetSelection(selectedPos);
- }
@@ -305,3 +303,58 @@ diff -Naur -x '*.orig' -x '*.rej' -x '*.git*' 11.4-1/wx+/no_flicker.h 11.4-2/wx+
//get rid of margins and space between text blocks/"paragraphs"
richCtrl.SetMargins({0, 0});
+Message: Revert __cpp_lib_atomic_wait which is not yet implemented in g++-10 or clang++-11 on Debian
+How does Zenju compile this?!
+Date: 2021-05-10
+--- 11.9-0/zen/globals.h 2021-05-10 08:10:14.755776667 -0400
++++ 11.9-1/zen/globals.h 2021-05-10 09:17:25.122241641 -0400
+@@ -223,7 +223,11 @@
+ void PodSpinMutex::lock()
+ {
+ while (!tryLock())
++#ifdef __cpp_lib_atomic_wait
+ flag_.wait(true, std::memory_order_relaxed);
++#else
++ ;
++#endif
+ }
+
+
+@@ -231,7 +235,9 @@
+ void PodSpinMutex::unlock()
+ {
+ flag_.clear(std::memory_order_release);
++#ifdef __cpp_lib_atomic_wait
+ flag_.notify_one();
++#endif
+ }
+
+
+Message: This one should work; it's a c++17 specification, but it doesn't work.
+Date: 2021-05-10
+diff -aur 11.10-0/zen/legacy_compiler.cpp 11.10-1/zen/legacy_compiler.cpp
+--- 11.10-0/zen/legacy_compiler.cpp 2021-05-10 08:10:14.755776667 -0400
++++ 11.10-1/zen/legacy_compiler.cpp 2021-05-10 10:06:01.998079701 -0400
+@@ -14,15 +14,17 @@
+
+ double zen::fromChars(const char* first, const char* last)
+ {
+- double num = 0;
+- [[maybe_unused]] const std::from_chars_result rv = std::from_chars(first, last, num);
+- return num;
++ return std::strtod(std::string(first, last).c_str(), nullptr);
+ }
+
+
+ const char* zen::toChars(char* first, char* last, double num)
+ {
+- const std::to_chars_result rv = std::to_chars(first, last, num);
+- return rv.ec == std::errc{} ? rv.ptr : first;
++ const size_t bufSize = last - first;
++ const int charsWritten = std::snprintf(first, bufSize, "%g", num);
++ //C99: returns number of chars written if successful, < 0 or >= bufferSize on failure
++
++ return 0 <= charsWritten && charsWritten < static_cast<int>(bufSize) ?
++ first + charsWritten : first;
+ }
+
diff --git a/freefilesync/debian/patches/series b/freefilesync/debian/patches/series
index 7896b6e..7a709ef 100644
--- a/freefilesync/debian/patches/series
+++ b/freefilesync/debian/patches/series
@@ -9,3 +9,4 @@ ffs_curl.patch
revert_zenju_aggressive_upstreamisms.patch
ffs_gcc.patch
ffs_traditional_view.patch
+ffs_desktop_notifications.patch
bgstack15