Explorar o código

lib/versioner: Fix external versioner command specification on Windows (fixes #4560)

Kropekk %!s(int64=7) %!d(string=hai) anos
pai
achega
bc7639b0ff

+ 1 - 1
gui/default/syncthing/folder/editFolderModalView.html

@@ -176,7 +176,7 @@
               <p translate class="help-block">Path where versions should be stored (leave empty for the default .stversions directory in the shared folder).</p>
             </div>
             <div class="form-group" ng-if="currentFolder.fileVersioningSelector=='external'" ng-class="{'has-error': folderEditor.externalCommand.$invalid && folderEditor.externalCommand.$dirty}">
-              <p translate class="help-block">An external command handles the versioning. It has to remove the file from the shared folder.</p>
+              <p translate class="help-block">An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.</p>
               <label translate for="externalCommand">Command</label>
               <input name="externalCommand" id="externalCommand" class="form-control" type="text" ng-model="currentFolder.externalCommand" required="" aria-required="true" />
               <p class="help-block">

+ 5 - 0
lib/versioner/external.go

@@ -10,6 +10,7 @@ import (
 	"errors"
 	"os"
 	"os/exec"
+	"runtime"
 	"strings"
 
 	"github.com/syncthing/syncthing/lib/fs"
@@ -30,6 +31,10 @@ type External struct {
 func NewExternal(folderID string, filesystem fs.Filesystem, params map[string]string) Versioner {
 	command := params["command"]
 
+	if runtime.GOOS == "windows" {
+		command = strings.Replace(command, `\`, `\\`, -1)
+	}
+
 	s := External{
 		command:    command,
 		filesystem: filesystem,