mirror of
https://github.com/octoleo/syncthing.git
synced 2025-02-08 14:58:26 +00:00
lib/model: Create root directory for paused folders (fixes #4094)
GitHub-Pull-Request: https://github.com/syncthing/syncthing/pull/4095
This commit is contained in:
parent
e9f05d138f
commit
914b09fd1f
@ -815,6 +815,7 @@ func syncthingMain(runtimeOptions RuntimeOptions) {
|
|||||||
// Add and start folders
|
// Add and start folders
|
||||||
for _, folderCfg := range cfg.Folders() {
|
for _, folderCfg := range cfg.Folders() {
|
||||||
if folderCfg.Paused {
|
if folderCfg.Paused {
|
||||||
|
folderCfg.CreateRoot()
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
m.AddFolder(folderCfg)
|
m.AddFolder(folderCfg)
|
||||||
|
@ -104,6 +104,26 @@ func (f *FolderConfiguration) HasMarker() bool {
|
|||||||
return err == nil
|
return err == nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (f *FolderConfiguration) CreateRoot() (err error) {
|
||||||
|
// Directory permission bits. Will be filtered down to something
|
||||||
|
// sane by umask on Unixes.
|
||||||
|
permBits := os.FileMode(0777)
|
||||||
|
if runtime.GOOS == "windows" {
|
||||||
|
// Windows has no umask so we must chose a safer set of bits to
|
||||||
|
// begin with.
|
||||||
|
permBits = 0700
|
||||||
|
}
|
||||||
|
|
||||||
|
if _, err = os.Stat(f.Path()); os.IsNotExist(err) {
|
||||||
|
if err = osutil.MkdirAll(f.Path(), permBits); err != nil {
|
||||||
|
l.Warnf("Creating directory for %v: %v",
|
||||||
|
f.Description(), err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
func (f FolderConfiguration) Description() string {
|
func (f FolderConfiguration) Description() string {
|
||||||
if f.Label == "" {
|
if f.Label == "" {
|
||||||
return f.ID
|
return f.ID
|
||||||
|
@ -231,18 +231,9 @@ func (m *Model) startFolderLocked(folder string) config.FolderType {
|
|||||||
|
|
||||||
// Directory permission bits. Will be filtered down to something
|
// Directory permission bits. Will be filtered down to something
|
||||||
// sane by umask on Unixes.
|
// sane by umask on Unixes.
|
||||||
permBits := os.FileMode(0777)
|
|
||||||
if runtime.GOOS == "windows" {
|
|
||||||
// Windows has no umask so we must chose a safer set of bits to
|
|
||||||
// begin with.
|
|
||||||
permBits = 0700
|
|
||||||
}
|
|
||||||
|
|
||||||
if _, err := os.Stat(cfg.Path()); os.IsNotExist(err) {
|
cfg.CreateRoot()
|
||||||
if err := osutil.MkdirAll(cfg.Path(), permBits); err != nil {
|
|
||||||
l.Warnln("Creating folder:", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if err := cfg.CreateMarker(); err != nil {
|
if err := cfg.CreateMarker(); err != nil {
|
||||||
l.Warnln("Creating folder marker:", err)
|
l.Warnln("Creating folder marker:", err)
|
||||||
}
|
}
|
||||||
@ -2385,6 +2376,7 @@ func (m *Model) CommitConfiguration(from, to config.Configuration) bool {
|
|||||||
// A folder was added.
|
// A folder was added.
|
||||||
if cfg.Paused {
|
if cfg.Paused {
|
||||||
l.Infoln(m, "Paused folder", cfg.Description())
|
l.Infoln(m, "Paused folder", cfg.Description())
|
||||||
|
cfg.CreateRoot()
|
||||||
} else {
|
} else {
|
||||||
l.Infoln(m, "Adding folder", cfg.Description())
|
l.Infoln(m, "Adding folder", cfg.Description())
|
||||||
m.AddFolder(cfg)
|
m.AddFolder(cfg)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user