Commit Graph
24 Commits
Author SHA1 Message Date
klauspost 8a2d7ff2bc Add default cache location for Windows.
Primary place for Windows cache is %APPDATA%\restic.
If that environment variable isn't set, we create a 'restic'
folder in the 'temp' directory.
2015-08-17 14:17:54 +02:00
klauspost 21ab5a488d Allow filter patterns/paths to be both '/' and os.PathSeparator
This converts filepath.Separator to '/', if it isn't already.
This allows both native paths and patterns, as well as a mix of them.
Added tests.
2015-08-17 11:48:24 +02:00
klauspost a3570af500 Create separate disEntry.equals for Windows.
Windows does not have UID/GID the same way as unix,
so we don't attempt to compare them.
2015-08-17 11:10:12 +02:00
klauspost d5dab39a4a Disable FUSE test on Windows. 2015-08-17 11:02:04 +02:00
klauspost 73de59a615 Make check for non-existing paths OS independent. 2015-08-17 11:01:24 +02:00
Klaus Post 35bd8f80c0 Split out process check as separate function.
This will allow the checks to be changed for different operating systems.

Issue #260 is related to this, but this does not change any current behaviour.
2015-08-16 15:30:36 +02:00
Klaus Post 347e800b4e Set output binary name in a variable. 2015-08-16 14:20:37 +02:00
Klaus Post d6935d6625 Fix log message
'inode' isn't tested, so we don't want to imply that in the debug message.
2015-08-16 14:16:40 +02:00
Klaus Post 2291e70322 Match ParseInt return type. 2015-08-16 13:36:21 +02:00
Klaus Post 346c0c0c58 Don't panic on mknod on Windows
Instead return an error.
2015-08-16 13:24:21 +02:00
Klaus Post 3f992c3d6e Remove redundant code. 2015-08-16 13:22:27 +02:00
Klaus Post 458e4bb3f7 Remove empty lines. 2015-08-16 13:21:00 +02:00
Klaus Post e1f6bbac9f Create uid/gid convertion function.
Create separate function to convert user ID / group ID of a user to integer.
Windows is a stub, since this doesn't work on Windows (uid/gid is not a number).
2015-08-16 13:16:02 +02:00
Klaus Post 0e7d0d8dba Create ignoreSigIntProcAttr()
Retrieve the SysProcAttr from a separate function. Completely eliminates syscall from main file.
2015-08-16 12:51:01 +02:00
Klaus Post 520b1b65b0 Create setNewFileMode function.
Create separate files with setNewFileMode to avoid
runtime checks.
2015-08-16 12:39:38 +02:00
Klaus Post dfe232cf46 Add Windows node support.
The syscall.Stat_t doesn't exist on Windows, so it is replaced by an interface,
which Windows can fill out, and field access is replaced by function calls.

Common Unix functionality is put into "node_unix.go", so there is less boilerplate.

Symlinks are skipped on Windows, since they require admin privileges.
2015-08-14 15:57:47 +02:00
Klaus Post 2e7b40baca Make UID/GID '0' on Windows.
We ignore parser errors on Uid/Gid, since they are not numbers on Windows.

UID/GID is usually 'root' on Linux, so I am not sure if 0/0 is a good idea.
Maybe if the type of the fields were changed from uint32 to int, we could set it
to -1 to indicate "no value".
2015-08-14 15:50:14 +02:00
Klaus Post 4dc746dac2 Change repository type detection to first check if path is a directory that exists.
The method of determining if a repository exists doesn't work on Windows, since
the "url.Scheme" will contain the drive letter - "c" in "c:\backup",
so as a first step we check if the URL can be opened as a file,
and if so, we assume it is a 'local' type repository.
2015-08-14 15:39:16 +02:00
Klaus Post fb3778abb6 Disable mount command on Windows.
FUSE does not support Windows, so we disable it on Windows.
2015-08-14 15:33:11 +02:00
Klaus Post 2dcb527828 Only use Setsid on Unix.
Setsid is not a part of syscall.SysProcAttr on Windows, so we only set that on
systems that have it.
2015-08-14 15:32:07 +02:00
Klaus Post 7c84d810d3 Make sure we can delete files on Windows.
Files must be closed on Windows before they can be deleted.
Therefore we keep track of all open files, and closes them before
we delete them.

Also we don't set finished blobs to read-only on Windows, since
that prevents us from deleting them.
2015-08-14 15:30:36 +02:00
Klaus Post 3804bc7493 Use bigger offset in test to avoid random test failures.
Since Windows cannot to a SIGHUP test to check if a process is live,
the test will fail because the lock isn't detected as stale if a process with
that ID exists. Process IDs are re-used agressively on Windows, so add 500000 makes
the test extremely unlikely (if not impossible) to fail.
2015-08-14 15:19:45 +02:00
Klaus Post 3504ea3992 Skip UID/GID and SIGHUP lock-check on Windows
On Windows, User ID/Group ID is not a number, so we ignore any parsing error
that may come from attempting to convert it to an integer. It will simply be '0'.

Don't defer the process Release until we have checked the error.

Skip the SIGHUP connection attempt on Windows. If the process exists, we assume it is running.
2015-08-14 15:13:11 +02:00
Klaus Post 5d5f3de62f Output EXE file on Windows platform. 2015-08-14 15:08:07 +02:00