Просмотр исходного кода

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

Kropekk 7 лет назад
Родитель
Сommit
bc7639b0ff
2 измененных файлов с 6 добавлено и 1 удалено
  1. 1 1
      gui/default/syncthing/folder/editFolderModalView.html
  2. 5 0
      lib/versioner/external.go

+ 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>
               <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>
             <div class="form-group" ng-if="currentFolder.fileVersioningSelector=='external'" ng-class="{'has-error': folderEditor.externalCommand.$invalid && folderEditor.externalCommand.$dirty}">
             <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>
               <label translate for="externalCommand">Command</label>
               <input name="externalCommand" id="externalCommand" class="form-control" type="text" ng-model="currentFolder.externalCommand" required="" aria-required="true" />
               <input name="externalCommand" id="externalCommand" class="form-control" type="text" ng-model="currentFolder.externalCommand" required="" aria-required="true" />
               <p class="help-block">
               <p class="help-block">

+ 5 - 0
lib/versioner/external.go

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