private static Library.Utility.IFilter ApplyFilter(Serialization.Interface.IBackup backup, DuplicatiOperation mode, Library.Utility.IFilter filter, IEnumerable <Library.Utility.IFilter> defaultFilters) { var f2 = backup.Filters; if (f2 != null && f2.Length > 0) { var nf = (from n in f2 let exp = n.Expression.StartsWith("[", StringComparison.Ordinal) && n.Expression.EndsWith("]", StringComparison.Ordinal) ? SpecialFolders.ExpandEnvironmentVariablesRegexp(n.Expression) : SpecialFolders.ExpandEnvironmentVariables(n.Expression) orderby n.Order select(Library.Utility.IFilter)(new Library.Utility.FilterExpression(exp, n.Include))) .Aggregate((a, b) => Library.Utility.FilterExpression.Combine(a, b)); filter = Library.Utility.FilterExpression.Combine(filter, nf); } if (defaultFilters != null && defaultFilters.Any()) { filter = Library.Utility.FilterExpression.Combine(filter, defaultFilters.Aggregate((a, b) => Library.Utility.FilterExpression.Combine(a, b))); } return(filter); }
internal static Dictionary <string, string> GetSourceNames(Serialization.Interface.IBackup backup) { var systemIO = Duplicati.Library.Snapshots.SnapshotUtility.SystemIO; if (backup.Sources == null || backup.Sources.Length == 0) { return(new Dictionary <string, string>()); } var sources = backup.Sources.Distinct().Select(x => { var sp = SpecialFolders.TranslateToDisplayString(x); if (sp != null) { return(new KeyValuePair <string, string>(x, sp)); } x = SpecialFolders.ExpandEnvironmentVariables(x); try { var nx = x; if (nx.EndsWith(System.IO.Path.DirectorySeparatorChar.ToString(), StringComparison.Ordinal)) { nx = nx.Substring(0, nx.Length - 1); } var n = systemIO.PathGetFileName(nx); if (!string.IsNullOrWhiteSpace(n)) { return(new KeyValuePair <string, string>(x, n)); } } catch { } if (x.EndsWith(System.IO.Path.DirectorySeparatorChar.ToString(), StringComparison.Ordinal) && x.Length > 1) { return(new KeyValuePair <string, string>(x, x.Substring(0, x.Length - 1).Substring(x.Substring(0, x.Length - 1).LastIndexOf("/", StringComparison.Ordinal) + 1))); } else { return(new KeyValuePair <string, string>(x, x)); } }); // Handle duplicates var result = new Dictionary <string, string>(); foreach (var x in sources) { result[x.Key] = x.Value; } return(result); }
internal static Dictionary <string, string> GetSourceNames(Serialization.Interface.IBackup backup) { var systemIO = Duplicati.Library.Snapshots.SnapshotUtility.SystemIO; return(backup.Sources.Distinct().Select(x => { var sp = SpecialFolders.TranslateToDisplayString(x); if (sp != null) { return new KeyValuePair <string, string>(x, sp); } x = SpecialFolders.ExpandEnvironmentVariables(x); try { var nx = x; if (nx.EndsWith(System.IO.Path.DirectorySeparatorChar.ToString())) { nx = nx.Substring(0, nx.Length - 1); } var n = systemIO.PathGetFileName(nx); if (!string.IsNullOrWhiteSpace(n)) { return new KeyValuePair <string, string>(x, n); } } catch { } if (x.EndsWith(System.IO.Path.DirectorySeparatorChar.ToString()) && x.Length > 1) { return new KeyValuePair <string, string>(x, x.Substring(0, x.Length - 1).Substring(x.Substring(0, x.Length - 1).LastIndexOf("/") + 1)); } else { return new KeyValuePair <string, string>(x, x); } }).ToDictionary(x => x.Key, x => x.Value)); }