By changing to IEnumerable, it is possible to iterate only a portion of the list, which is useful when not all entries are needed (e.g., when testing a connection).
All existing backends have been updated, and any which were able to be changed to yield return results in a straightforward way now do.
Many backends had a try/catch in the List() method. Due to the fact that yield returns can't be placed within a try/catch block, these have been refactored to either scope the try/catch to the parts that (should) be the only places throwing exceptions, so that exceptions are still caught and handled.
Note that lazy evaluation may cause some changes in behavior - exceptions that were previously thrown at the point of invokation of List() may now be thrown while it is being enumerated.
I believe this will not be problematic though, as the only well-known exception seems to be FolderMissingException, which should be thrown by Test(), but TestList() attempts to enumerate the list to force this exception.
Any places that require the legacy behavior can get it by simply converting the lazy enumerable to a List()
It also makes quota enabled backends return an instance of this interface instead of the quota components separately.
This way, getting quota stats requires only a single remote request on backends like Google Drive and OneDrive.
It is now permitted to specify the target or source path, without the file:// prefix, but ONLY if there is also a "backup" or "restore" argument, otherwise it is not possible to infer what to do.
git-svn-id: https://duplicati.googlecode.com/svn/trunk@1538 59da171f-624f-0410-aa54-27559c288bec
Status: fixed
Problem was that the backend also supports urls like: file://user:pass@\\server\path.
Now the username and password is only accepted if it does not contain slash or backslash.
git-svn-id: https://duplicati.googlecode.com/svn/trunk@1197 59da171f-624f-0410-aa54-27559c288bec
This flag allows the backends to provide better testing and warning messages.
Update issue #407
Status: Fixed
The backends now check for existing files in the target directory,
and specially looks for any "duplicati-*" files.
git-svn-id: https://duplicati.googlecode.com/svn/trunk@922 59da171f-624f-0410-aa54-27559c288bec
Changed the non-streaming file-backend interface to use sytem copy calls rather than
manual stream copy.
git-svn-id: https://duplicati.googlecode.com/svn/trunk@654 59da171f-624f-0410-aa54-27559c288bec
Status: Fixed
The logic was attempting to prevent a case where the backup was scheduled to run and "Run backup now" was checked.
In this special case, the "Run backup now" does nothing because the backup will run twice otherwise.
The logic was a bit flawed, so based on some various settings it would detect that it was scheduled to run,
while it was not.
Thanks to your fine description, I was able to reproduce easily and fix it.
With the regards to the other error message, I have reproduced it by doing the following without restarting:
1) create the backup
2) edit the backup
3) delete the backup
I will create a new issue for it, but the bug is deep in the database abstraction layer,
so it is pretty hard to debug.
Update issue #227
Status: Fixed
Now correctly removes the deleted task from the scheduler and updates the display.
I also managed to get a slight speedup on the display update.
git-svn-id: https://duplicati.googlecode.com/svn/trunk@572 59da171f-624f-0410-aa54-27559c288bec