From 6602664fb26801211defa7663b810bd6aa6a0d8e Mon Sep 17 00:00:00 2001 From: BlueBlock Date: Fri, 2 Aug 2019 16:42:18 -0400 Subject: [PATCH 1/4] fix bug in GetLargestPrefix() which adds an ending slash to file name paths for the section of code which handles files, AppendDirSeparator(() is being applied to files when it should n't be at all. This results in all file paths to have an ending slash. This adjusted path causes the sql query to have 0 results. --- .../Library/Main/Database/LocalListDatabase.cs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Duplicati/Library/Main/Database/LocalListDatabase.cs b/Duplicati/Library/Main/Database/LocalListDatabase.cs index 45060dfce..879b3d7cf 100644 --- a/Duplicati/Library/Main/Database/LocalListDatabase.cs +++ b/Duplicati/Library/Main/Database/LocalListDatabase.cs @@ -19,8 +19,8 @@ using System; using System.Linq; using System.Collections.Generic; using System.Text; -using Duplicati.Library.Common.IO; - +using Duplicati.Library.Common.IO; + namespace Duplicati.Library.Main.Database { internal class LocalListDatabase : LocalDatabase @@ -162,11 +162,11 @@ namespace Duplicati.Library.Main.Database while (filecount != foundfiles && maxpath.Length > 0) { - var mp = Util.AppendDirSeparator(maxpath, dirsep); - cmd.SetParameterValue(0, mp.Length); - cmd.SetParameterValue(1, mp); + cmd.SetParameterValue(0, maxpath.Length); + cmd.SetParameterValue(1, maxpath); + foundfiles = cmd.ExecuteScalarInt64(0); - + if (filecount != foundfiles) { var oldlen = maxpath.Length; @@ -190,8 +190,8 @@ namespace Duplicati.Library.Main.Database return roots.Concat(rootsUNC).Select(x => GetLargestPrefix(filter, x).First()).Distinct().ToArray(); } - - return + + return new IFileversion[] { new FileversionFixed { Path = maxpath == "" ? "" : Util.AppendDirSeparator(maxpath, dirsep) } }; From 015513101797fc27a73cbf3b61be57720fa14e0c Mon Sep 17 00:00:00 2001 From: BlueBlock Date: Sat, 3 Aug 2019 19:16:52 -0400 Subject: [PATCH 2/4] add logic to apply fix to Windows only --- .../Library/Main/Database/LocalListDatabase.cs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/Duplicati/Library/Main/Database/LocalListDatabase.cs b/Duplicati/Library/Main/Database/LocalListDatabase.cs index 879b3d7cf..584e1855c 100644 --- a/Duplicati/Library/Main/Database/LocalListDatabase.cs +++ b/Duplicati/Library/Main/Database/LocalListDatabase.cs @@ -19,6 +19,7 @@ using System; using System.Linq; using System.Collections.Generic; using System.Text; +using Duplicati.Library.Common; using Duplicati.Library.Common.IO; namespace Duplicati.Library.Main.Database @@ -162,9 +163,18 @@ namespace Duplicati.Library.Main.Database while (filecount != foundfiles && maxpath.Length > 0) { - cmd.SetParameterValue(0, maxpath.Length); - cmd.SetParameterValue(1, maxpath); - + if (Platform.IsClientWindows) + { + cmd.SetParameterValue(0, maxpath.Length); + cmd.SetParameterValue(1, maxpath); + } + else + { + var mp = Util.AppendDirSeparator(maxpath, dirsep); + cmd.SetParameterValue(0, mp.Length); + cmd.SetParameterValue(1, mp); + } + foundfiles = cmd.ExecuteScalarInt64(0); if (filecount != foundfiles) From 1699d5e759ef73baf094227a6b552fc0c464dde3 Mon Sep 17 00:00:00 2001 From: BlueBlock Date: Sat, 3 Aug 2019 19:25:27 -0400 Subject: [PATCH 3/4] simplified logic --- .../Library/Main/Database/LocalListDatabase.cs | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/Duplicati/Library/Main/Database/LocalListDatabase.cs b/Duplicati/Library/Main/Database/LocalListDatabase.cs index 584e1855c..52904aceb 100644 --- a/Duplicati/Library/Main/Database/LocalListDatabase.cs +++ b/Duplicati/Library/Main/Database/LocalListDatabase.cs @@ -163,17 +163,9 @@ namespace Duplicati.Library.Main.Database while (filecount != foundfiles && maxpath.Length > 0) { - if (Platform.IsClientWindows) - { - cmd.SetParameterValue(0, maxpath.Length); - cmd.SetParameterValue(1, maxpath); - } - else - { - var mp = Util.AppendDirSeparator(maxpath, dirsep); - cmd.SetParameterValue(0, mp.Length); - cmd.SetParameterValue(1, mp); - } + var mp = Platform.IsClientPosix ? Util.AppendDirSeparator(maxpath, dirsep) : maxpath; + cmd.SetParameterValue(0, mp.Length); + cmd.SetParameterValue(1, mp); foundfiles = cmd.ExecuteScalarInt64(0); From fc34f7abbf53a62449e29c0e6f59adb2607894a7 Mon Sep 17 00:00:00 2001 From: BlueBlock Date: Sat, 24 Aug 2019 11:25:15 -0400 Subject: [PATCH 4/4] apply fix to all systems --- Duplicati/Library/Main/Database/LocalListDatabase.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Duplicati/Library/Main/Database/LocalListDatabase.cs b/Duplicati/Library/Main/Database/LocalListDatabase.cs index 52904aceb..cef67a6b5 100644 --- a/Duplicati/Library/Main/Database/LocalListDatabase.cs +++ b/Duplicati/Library/Main/Database/LocalListDatabase.cs @@ -163,9 +163,8 @@ namespace Duplicati.Library.Main.Database while (filecount != foundfiles && maxpath.Length > 0) { - var mp = Platform.IsClientPosix ? Util.AppendDirSeparator(maxpath, dirsep) : maxpath; - cmd.SetParameterValue(0, mp.Length); - cmd.SetParameterValue(1, mp); + cmd.SetParameterValue(0, maxpath.Length); + cmd.SetParameterValue(1, maxpath); foundfiles = cmd.ExecuteScalarInt64(0);