style: gofumpt all the things (#9829)

Literally `gofumpt -w .` from the top level dir. Guaranteed to be minor
style changes only and nothing else.

@imsodin per request?
This commit is contained in:
Jakob Borg
2024-11-19 11:32:56 +01:00
committed by GitHub
parent 4b815fc086
commit e82ed6e3d3
88 changed files with 376 additions and 379 deletions

144
build.go
View File

@@ -97,40 +97,40 @@ var targets = map[string]target{
buildPkgs: []string{"github.com/syncthing/syncthing/cmd/syncthing"}, buildPkgs: []string{"github.com/syncthing/syncthing/cmd/syncthing"},
binaryName: "syncthing", // .exe will be added automatically for Windows builds binaryName: "syncthing", // .exe will be added automatically for Windows builds
archiveFiles: []archiveFile{ archiveFiles: []archiveFile{
{src: "{{binary}}", dst: "{{binary}}", perm: 0755}, {src: "{{binary}}", dst: "{{binary}}", perm: 0o755},
{src: "README.md", dst: "README.txt", perm: 0644}, {src: "README.md", dst: "README.txt", perm: 0o644},
{src: "LICENSE", dst: "LICENSE.txt", perm: 0644}, {src: "LICENSE", dst: "LICENSE.txt", perm: 0o644},
{src: "AUTHORS", dst: "AUTHORS.txt", perm: 0644}, {src: "AUTHORS", dst: "AUTHORS.txt", perm: 0o644},
// All files from etc/ and extra/ added automatically in init(). // All files from etc/ and extra/ added automatically in init().
}, },
systemdService: "syncthing@*.service", systemdService: "syncthing@*.service",
installationFiles: []archiveFile{ installationFiles: []archiveFile{
{src: "{{binary}}", dst: "deb/usr/bin/{{binary}}", perm: 0755}, {src: "{{binary}}", dst: "deb/usr/bin/{{binary}}", perm: 0o755},
{src: "README.md", dst: "deb/usr/share/doc/syncthing/README.txt", perm: 0644}, {src: "README.md", dst: "deb/usr/share/doc/syncthing/README.txt", perm: 0o644},
{src: "LICENSE", dst: "deb/usr/share/doc/syncthing/LICENSE.txt", perm: 0644}, {src: "LICENSE", dst: "deb/usr/share/doc/syncthing/LICENSE.txt", perm: 0o644},
{src: "AUTHORS", dst: "deb/usr/share/doc/syncthing/AUTHORS.txt", perm: 0644}, {src: "AUTHORS", dst: "deb/usr/share/doc/syncthing/AUTHORS.txt", perm: 0o644},
{src: "man/syncthing.1", dst: "deb/usr/share/man/man1/syncthing.1", perm: 0644}, {src: "man/syncthing.1", dst: "deb/usr/share/man/man1/syncthing.1", perm: 0o644},
{src: "man/syncthing-config.5", dst: "deb/usr/share/man/man5/syncthing-config.5", perm: 0644}, {src: "man/syncthing-config.5", dst: "deb/usr/share/man/man5/syncthing-config.5", perm: 0o644},
{src: "man/syncthing-stignore.5", dst: "deb/usr/share/man/man5/syncthing-stignore.5", perm: 0644}, {src: "man/syncthing-stignore.5", dst: "deb/usr/share/man/man5/syncthing-stignore.5", perm: 0o644},
{src: "man/syncthing-device-ids.7", dst: "deb/usr/share/man/man7/syncthing-device-ids.7", perm: 0644}, {src: "man/syncthing-device-ids.7", dst: "deb/usr/share/man/man7/syncthing-device-ids.7", perm: 0o644},
{src: "man/syncthing-event-api.7", dst: "deb/usr/share/man/man7/syncthing-event-api.7", perm: 0644}, {src: "man/syncthing-event-api.7", dst: "deb/usr/share/man/man7/syncthing-event-api.7", perm: 0o644},
{src: "man/syncthing-faq.7", dst: "deb/usr/share/man/man7/syncthing-faq.7", perm: 0644}, {src: "man/syncthing-faq.7", dst: "deb/usr/share/man/man7/syncthing-faq.7", perm: 0o644},
{src: "man/syncthing-networking.7", dst: "deb/usr/share/man/man7/syncthing-networking.7", perm: 0644}, {src: "man/syncthing-networking.7", dst: "deb/usr/share/man/man7/syncthing-networking.7", perm: 0o644},
{src: "man/syncthing-rest-api.7", dst: "deb/usr/share/man/man7/syncthing-rest-api.7", perm: 0644}, {src: "man/syncthing-rest-api.7", dst: "deb/usr/share/man/man7/syncthing-rest-api.7", perm: 0o644},
{src: "man/syncthing-security.7", dst: "deb/usr/share/man/man7/syncthing-security.7", perm: 0644}, {src: "man/syncthing-security.7", dst: "deb/usr/share/man/man7/syncthing-security.7", perm: 0o644},
{src: "man/syncthing-versioning.7", dst: "deb/usr/share/man/man7/syncthing-versioning.7", perm: 0644}, {src: "man/syncthing-versioning.7", dst: "deb/usr/share/man/man7/syncthing-versioning.7", perm: 0o644},
{src: "etc/linux-systemd/system/syncthing@.service", dst: "deb/lib/systemd/system/syncthing@.service", perm: 0644}, {src: "etc/linux-systemd/system/syncthing@.service", dst: "deb/lib/systemd/system/syncthing@.service", perm: 0o644},
{src: "etc/linux-systemd/user/syncthing.service", dst: "deb/usr/lib/systemd/user/syncthing.service", perm: 0644}, {src: "etc/linux-systemd/user/syncthing.service", dst: "deb/usr/lib/systemd/user/syncthing.service", perm: 0o644},
{src: "etc/linux-sysctl/30-syncthing.conf", dst: "deb/usr/lib/sysctl.d/30-syncthing.conf", perm: 0644}, {src: "etc/linux-sysctl/30-syncthing.conf", dst: "deb/usr/lib/sysctl.d/30-syncthing.conf", perm: 0o644},
{src: "etc/firewall-ufw/syncthing", dst: "deb/etc/ufw/applications.d/syncthing", perm: 0644}, {src: "etc/firewall-ufw/syncthing", dst: "deb/etc/ufw/applications.d/syncthing", perm: 0o644},
{src: "etc/linux-desktop/syncthing-start.desktop", dst: "deb/usr/share/applications/syncthing-start.desktop", perm: 0644}, {src: "etc/linux-desktop/syncthing-start.desktop", dst: "deb/usr/share/applications/syncthing-start.desktop", perm: 0o644},
{src: "etc/linux-desktop/syncthing-ui.desktop", dst: "deb/usr/share/applications/syncthing-ui.desktop", perm: 0644}, {src: "etc/linux-desktop/syncthing-ui.desktop", dst: "deb/usr/share/applications/syncthing-ui.desktop", perm: 0o644},
{src: "assets/logo-32.png", dst: "deb/usr/share/icons/hicolor/32x32/apps/syncthing.png", perm: 0644}, {src: "assets/logo-32.png", dst: "deb/usr/share/icons/hicolor/32x32/apps/syncthing.png", perm: 0o644},
{src: "assets/logo-64.png", dst: "deb/usr/share/icons/hicolor/64x64/apps/syncthing.png", perm: 0644}, {src: "assets/logo-64.png", dst: "deb/usr/share/icons/hicolor/64x64/apps/syncthing.png", perm: 0o644},
{src: "assets/logo-128.png", dst: "deb/usr/share/icons/hicolor/128x128/apps/syncthing.png", perm: 0644}, {src: "assets/logo-128.png", dst: "deb/usr/share/icons/hicolor/128x128/apps/syncthing.png", perm: 0o644},
{src: "assets/logo-256.png", dst: "deb/usr/share/icons/hicolor/256x256/apps/syncthing.png", perm: 0644}, {src: "assets/logo-256.png", dst: "deb/usr/share/icons/hicolor/256x256/apps/syncthing.png", perm: 0o644},
{src: "assets/logo-512.png", dst: "deb/usr/share/icons/hicolor/512x512/apps/syncthing.png", perm: 0644}, {src: "assets/logo-512.png", dst: "deb/usr/share/icons/hicolor/512x512/apps/syncthing.png", perm: 0o644},
{src: "assets/logo-only.svg", dst: "deb/usr/share/icons/hicolor/scalable/apps/syncthing.svg", perm: 0644}, {src: "assets/logo-only.svg", dst: "deb/usr/share/icons/hicolor/scalable/apps/syncthing.svg", perm: 0o644},
}, },
}, },
"stdiscosrv": { "stdiscosrv": {
@@ -142,21 +142,21 @@ var targets = map[string]target{
buildPkgs: []string{"github.com/syncthing/syncthing/cmd/stdiscosrv"}, buildPkgs: []string{"github.com/syncthing/syncthing/cmd/stdiscosrv"},
binaryName: "stdiscosrv", // .exe will be added automatically for Windows builds binaryName: "stdiscosrv", // .exe will be added automatically for Windows builds
archiveFiles: []archiveFile{ archiveFiles: []archiveFile{
{src: "{{binary}}", dst: "{{binary}}", perm: 0755}, {src: "{{binary}}", dst: "{{binary}}", perm: 0o755},
{src: "cmd/stdiscosrv/README.md", dst: "README.txt", perm: 0644}, {src: "cmd/stdiscosrv/README.md", dst: "README.txt", perm: 0o644},
{src: "LICENSE", dst: "LICENSE.txt", perm: 0644}, {src: "LICENSE", dst: "LICENSE.txt", perm: 0o644},
{src: "AUTHORS", dst: "AUTHORS.txt", perm: 0644}, {src: "AUTHORS", dst: "AUTHORS.txt", perm: 0o644},
}, },
systemdService: "stdiscosrv.service", systemdService: "stdiscosrv.service",
installationFiles: []archiveFile{ installationFiles: []archiveFile{
{src: "{{binary}}", dst: "deb/usr/bin/{{binary}}", perm: 0755}, {src: "{{binary}}", dst: "deb/usr/bin/{{binary}}", perm: 0o755},
{src: "cmd/stdiscosrv/README.md", dst: "deb/usr/share/doc/syncthing-discosrv/README.txt", perm: 0644}, {src: "cmd/stdiscosrv/README.md", dst: "deb/usr/share/doc/syncthing-discosrv/README.txt", perm: 0o644},
{src: "LICENSE", dst: "deb/usr/share/doc/syncthing-discosrv/LICENSE.txt", perm: 0644}, {src: "LICENSE", dst: "deb/usr/share/doc/syncthing-discosrv/LICENSE.txt", perm: 0o644},
{src: "AUTHORS", dst: "deb/usr/share/doc/syncthing-discosrv/AUTHORS.txt", perm: 0644}, {src: "AUTHORS", dst: "deb/usr/share/doc/syncthing-discosrv/AUTHORS.txt", perm: 0o644},
{src: "man/stdiscosrv.1", dst: "deb/usr/share/man/man1/stdiscosrv.1", perm: 0644}, {src: "man/stdiscosrv.1", dst: "deb/usr/share/man/man1/stdiscosrv.1", perm: 0o644},
{src: "cmd/stdiscosrv/etc/linux-systemd/stdiscosrv.service", dst: "deb/lib/systemd/system/stdiscosrv.service", perm: 0644}, {src: "cmd/stdiscosrv/etc/linux-systemd/stdiscosrv.service", dst: "deb/lib/systemd/system/stdiscosrv.service", perm: 0o644},
{src: "cmd/stdiscosrv/etc/linux-systemd/default", dst: "deb/etc/default/syncthing-discosrv", perm: 0644}, {src: "cmd/stdiscosrv/etc/linux-systemd/default", dst: "deb/etc/default/syncthing-discosrv", perm: 0o644},
{src: "cmd/stdiscosrv/etc/firewall-ufw/stdiscosrv", dst: "deb/etc/ufw/applications.d/stdiscosrv", perm: 0644}, {src: "cmd/stdiscosrv/etc/firewall-ufw/stdiscosrv", dst: "deb/etc/ufw/applications.d/stdiscosrv", perm: 0o644},
}, },
tags: []string{"purego"}, tags: []string{"purego"},
}, },
@@ -169,23 +169,23 @@ var targets = map[string]target{
buildPkgs: []string{"github.com/syncthing/syncthing/cmd/strelaysrv"}, buildPkgs: []string{"github.com/syncthing/syncthing/cmd/strelaysrv"},
binaryName: "strelaysrv", // .exe will be added automatically for Windows builds binaryName: "strelaysrv", // .exe will be added automatically for Windows builds
archiveFiles: []archiveFile{ archiveFiles: []archiveFile{
{src: "{{binary}}", dst: "{{binary}}", perm: 0755}, {src: "{{binary}}", dst: "{{binary}}", perm: 0o755},
{src: "cmd/strelaysrv/README.md", dst: "README.txt", perm: 0644}, {src: "cmd/strelaysrv/README.md", dst: "README.txt", perm: 0o644},
{src: "cmd/strelaysrv/LICENSE", dst: "LICENSE.txt", perm: 0644}, {src: "cmd/strelaysrv/LICENSE", dst: "LICENSE.txt", perm: 0o644},
{src: "LICENSE", dst: "LICENSE.txt", perm: 0644}, {src: "LICENSE", dst: "LICENSE.txt", perm: 0o644},
{src: "AUTHORS", dst: "AUTHORS.txt", perm: 0644}, {src: "AUTHORS", dst: "AUTHORS.txt", perm: 0o644},
}, },
systemdService: "strelaysrv.service", systemdService: "strelaysrv.service",
installationFiles: []archiveFile{ installationFiles: []archiveFile{
{src: "{{binary}}", dst: "deb/usr/bin/{{binary}}", perm: 0755}, {src: "{{binary}}", dst: "deb/usr/bin/{{binary}}", perm: 0o755},
{src: "cmd/strelaysrv/README.md", dst: "deb/usr/share/doc/syncthing-relaysrv/README.txt", perm: 0644}, {src: "cmd/strelaysrv/README.md", dst: "deb/usr/share/doc/syncthing-relaysrv/README.txt", perm: 0o644},
{src: "cmd/strelaysrv/LICENSE", dst: "deb/usr/share/doc/syncthing-relaysrv/LICENSE.txt", perm: 0644}, {src: "cmd/strelaysrv/LICENSE", dst: "deb/usr/share/doc/syncthing-relaysrv/LICENSE.txt", perm: 0o644},
{src: "LICENSE", dst: "deb/usr/share/doc/syncthing-relaysrv/LICENSE.txt", perm: 0644}, {src: "LICENSE", dst: "deb/usr/share/doc/syncthing-relaysrv/LICENSE.txt", perm: 0o644},
{src: "AUTHORS", dst: "deb/usr/share/doc/syncthing-relaysrv/AUTHORS.txt", perm: 0644}, {src: "AUTHORS", dst: "deb/usr/share/doc/syncthing-relaysrv/AUTHORS.txt", perm: 0o644},
{src: "man/strelaysrv.1", dst: "deb/usr/share/man/man1/strelaysrv.1", perm: 0644}, {src: "man/strelaysrv.1", dst: "deb/usr/share/man/man1/strelaysrv.1", perm: 0o644},
{src: "cmd/strelaysrv/etc/linux-systemd/strelaysrv.service", dst: "deb/lib/systemd/system/strelaysrv.service", perm: 0644}, {src: "cmd/strelaysrv/etc/linux-systemd/strelaysrv.service", dst: "deb/lib/systemd/system/strelaysrv.service", perm: 0o644},
{src: "cmd/strelaysrv/etc/linux-systemd/default", dst: "deb/etc/default/syncthing-relaysrv", perm: 0644}, {src: "cmd/strelaysrv/etc/linux-systemd/default", dst: "deb/etc/default/syncthing-relaysrv", perm: 0o644},
{src: "cmd/strelaysrv/etc/firewall-ufw/strelaysrv", dst: "deb/etc/ufw/applications.d/strelaysrv", perm: 0644}, {src: "cmd/strelaysrv/etc/firewall-ufw/strelaysrv", dst: "deb/etc/ufw/applications.d/strelaysrv", perm: 0o644},
}, },
}, },
"strelaypoolsrv": { "strelaypoolsrv": {
@@ -196,16 +196,16 @@ var targets = map[string]target{
buildPkgs: []string{"github.com/syncthing/syncthing/cmd/infra/strelaypoolsrv"}, buildPkgs: []string{"github.com/syncthing/syncthing/cmd/infra/strelaypoolsrv"},
binaryName: "strelaypoolsrv", // .exe will be added automatically for Windows builds binaryName: "strelaypoolsrv", // .exe will be added automatically for Windows builds
archiveFiles: []archiveFile{ archiveFiles: []archiveFile{
{src: "{{binary}}", dst: "{{binary}}", perm: 0755}, {src: "{{binary}}", dst: "{{binary}}", perm: 0o755},
{src: "cmd/infra/strelaypoolsrv/README.md", dst: "README.txt", perm: 0644}, {src: "cmd/infra/strelaypoolsrv/README.md", dst: "README.txt", perm: 0o644},
{src: "cmd/infra/strelaypoolsrv/LICENSE", dst: "LICENSE.txt", perm: 0644}, {src: "cmd/infra/strelaypoolsrv/LICENSE", dst: "LICENSE.txt", perm: 0o644},
{src: "AUTHORS", dst: "AUTHORS.txt", perm: 0644}, {src: "AUTHORS", dst: "AUTHORS.txt", perm: 0o644},
}, },
installationFiles: []archiveFile{ installationFiles: []archiveFile{
{src: "{{binary}}", dst: "deb/usr/bin/{{binary}}", perm: 0755}, {src: "{{binary}}", dst: "deb/usr/bin/{{binary}}", perm: 0o755},
{src: "cmd/infra/strelaypoolsrv/README.md", dst: "deb/usr/share/doc/syncthing-relaypoolsrv/README.txt", perm: 0644}, {src: "cmd/infra/strelaypoolsrv/README.md", dst: "deb/usr/share/doc/syncthing-relaypoolsrv/README.txt", perm: 0o644},
{src: "cmd/infra/strelaypoolsrv/LICENSE", dst: "deb/usr/share/doc/syncthing-relaypoolsrv/LICENSE.txt", perm: 0644}, {src: "cmd/infra/strelaypoolsrv/LICENSE", dst: "deb/usr/share/doc/syncthing-relaypoolsrv/LICENSE.txt", perm: 0o644},
{src: "AUTHORS", dst: "deb/usr/share/doc/syncthing-relaypoolsrv/AUTHORS.txt", perm: 0644}, {src: "AUTHORS", dst: "deb/usr/share/doc/syncthing-relaypoolsrv/AUTHORS.txt", perm: 0o644},
}, },
}, },
"stupgrades": { "stupgrades": {
@@ -244,13 +244,13 @@ func initTargets() {
// and "extra" dirs. // and "extra" dirs.
syncthingPkg := targets["syncthing"] syncthingPkg := targets["syncthing"]
for _, file := range listFiles("etc") { for _, file := range listFiles("etc") {
syncthingPkg.archiveFiles = append(syncthingPkg.archiveFiles, archiveFile{src: file, dst: file, perm: 0644}) syncthingPkg.archiveFiles = append(syncthingPkg.archiveFiles, archiveFile{src: file, dst: file, perm: 0o644})
} }
for _, file := range listFiles("extra") { for _, file := range listFiles("extra") {
syncthingPkg.archiveFiles = append(syncthingPkg.archiveFiles, archiveFile{src: file, dst: file, perm: 0644}) syncthingPkg.archiveFiles = append(syncthingPkg.archiveFiles, archiveFile{src: file, dst: file, perm: 0o644})
} }
for _, file := range listFiles("extra") { for _, file := range listFiles("extra") {
syncthingPkg.installationFiles = append(syncthingPkg.installationFiles, archiveFile{src: file, dst: "deb/usr/share/doc/syncthing/" + filepath.Base(file), perm: 0644}) syncthingPkg.installationFiles = append(syncthingPkg.installationFiles, archiveFile{src: file, dst: "deb/usr/share/doc/syncthing/" + filepath.Base(file), perm: 0o644})
} }
targets["syncthing"] = syncthingPkg targets["syncthing"] = syncthingPkg
} }
@@ -750,7 +750,7 @@ func shouldBuildSyso(dir string) (string, error) {
} }
jsonPath := filepath.Join(dir, "versioninfo.json") jsonPath := filepath.Join(dir, "versioninfo.json")
err = os.WriteFile(jsonPath, bs, 0644) err = os.WriteFile(jsonPath, bs, 0o644)
if err != nil { if err != nil {
return "", errors.New("failed to create " + jsonPath + ": " + err.Error()) return "", errors.New("failed to create " + jsonPath + ": " + err.Error())
} }
@@ -809,7 +809,7 @@ func copyFile(src, dst string, perm os.FileMode) error {
} }
copy: copy:
os.MkdirAll(filepath.Dir(dst), 0777) os.MkdirAll(filepath.Dir(dst), 0o777)
if err := os.WriteFile(dst, in, perm); err != nil { if err := os.WriteFile(dst, in, perm); err != nil {
return err return err
} }
@@ -869,7 +869,7 @@ func buildNextGenGUI() bool {
for _, src := range listFiles("next-gen-gui/dist") { for _, src := range listFiles("next-gen-gui/dist") {
rel, _ := filepath.Rel("next-gen-gui/dist", src) rel, _ := filepath.Rel("next-gen-gui/dist", src)
dst := filepath.Join("gui", rel) dst := filepath.Join("gui", rel)
if err := copyFile(src, dst, 0644); err != nil { if err := copyFile(src, dst, 0o644); err != nil {
fmt.Println("copy:", err) fmt.Println("copy:", err)
os.Exit(1) os.Exit(1)
} }
@@ -930,7 +930,7 @@ func proto() {
path := filepath.Join("repos", "protobuf") path := filepath.Join("repos", "protobuf")
runPrint(goCmd, "install", fmt.Sprintf("github.com/gogo/protobuf/protoc-gen-gogofast@%v", pv)) runPrint(goCmd, "install", fmt.Sprintf("github.com/gogo/protobuf/protoc-gen-gogofast@%v", pv))
os.MkdirAll("repos", 0755) os.MkdirAll("repos", 0o755)
if _, err := os.Stat(path); err != nil { if _, err := os.Stat(path); err != nil {
runPrint("git", "clone", repo, path) runPrint("git", "clone", repo, path)
@@ -1427,7 +1427,7 @@ func windowsCodesign(file string) {
log.Println("Codesign: signing failed: creating temp file:", err) log.Println("Codesign: signing failed: creating temp file:", err)
return return
} }
_ = f.Chmod(0600) // best effort remove other users' access _ = f.Chmod(0o600) // best effort remove other users' access
defer os.Remove(f.Name()) defer os.Remove(f.Name())
if _, err := f.Write(bs); err != nil { if _, err := f.Write(bs); err != nil {
log.Println("Codesign: signing failed: writing temp file:", err) log.Println("Codesign: signing failed: writing temp file:", err)

View File

@@ -71,7 +71,6 @@ func (l *githubSourceCodeLoader) Load(filename string, line, context int) ([][]b
url := urlPrefix + l.version + filename[idx:] url := urlPrefix + l.version + filename[idx:]
resp, err := l.client.Get(url) resp, err := l.client.Get(url)
if err != nil { if err != nil {
fmt.Println("Loading source:", err) fmt.Println("Loading source:", err)
return nil, 0 return nil, 0

View File

@@ -52,5 +52,5 @@ func compressAndWrite(bs []byte, fullPath string) error {
gw.Close() gw.Close()
// Create an output file with the compressed report // Create an output file with the compressed report
return os.WriteFile(fullPath, buf.Bytes(), 0644) return os.WriteFile(fullPath, buf.Bytes(), 0o644)
} }

View File

@@ -68,7 +68,6 @@ func findSession(key string) *session {
ses, ok := pendingSessions[key] ses, ok := pendingSessions[key]
if !ok { if !ok {
return nil return nil
} }
delete(pendingSessions, key) delete(pendingSessions, key)
return ses return ses

View File

@@ -10,6 +10,4 @@ import (
"github.com/syncthing/syncthing/lib/logger" "github.com/syncthing/syncthing/lib/logger"
) )
var ( var l = logger.DefaultLogger.NewFacility("main", "Main package")
l = logger.DefaultLogger.NewFacility("main", "Main package")
)

View File

@@ -140,7 +140,7 @@ func checkNotExist(t *testing.T, name string) {
func TestAutoClosedFile(t *testing.T) { func TestAutoClosedFile(t *testing.T) {
os.RemoveAll("_autoclose") os.RemoveAll("_autoclose")
defer os.RemoveAll("_autoclose") defer os.RemoveAll("_autoclose")
os.Mkdir("_autoclose", 0755) os.Mkdir("_autoclose", 0o755)
file := filepath.FromSlash("_autoclose/tmp") file := filepath.FromSlash("_autoclose/tmp")
data := []byte("hello, world\n") data := []byte("hello, world\n")

View File

@@ -148,7 +148,7 @@ func readBroadcasts(ctx context.Context, outbox chan<- recv, port int) error {
} }
func bcast(ip *net.IPNet) *net.IPNet { func bcast(ip *net.IPNet) *net.IPNet {
var bc = &net.IPNet{} bc := &net.IPNet{}
bc.IP = make([]byte, len(ip.IP)) bc.IP = make([]byte, len(ip.IP))
copy(bc.IP, ip.IP) copy(bc.IP, ip.IP)
bc.Mask = ip.Mask bc.Mask = ip.Mask

View File

@@ -10,6 +10,4 @@ import (
"github.com/syncthing/syncthing/lib/logger" "github.com/syncthing/syncthing/lib/logger"
) )
var ( var l = logger.DefaultLogger.NewFacility("beacon", "Multicast and broadcast discovery")
l = logger.DefaultLogger.NewFacility("beacon", "Multicast and broadcast discovery")
)

View File

@@ -18,6 +18,7 @@ type requiresRestart struct {
func (requiresRestart) VerifyConfiguration(_, _ Configuration) error { func (requiresRestart) VerifyConfiguration(_, _ Configuration) error {
return nil return nil
} }
func (c requiresRestart) CommitConfiguration(_, _ Configuration) bool { func (c requiresRestart) CommitConfiguration(_, _ Configuration) bool {
select { select {
case c.committed <- struct{}{}: case c.committed <- struct{}{}:
@@ -25,6 +26,7 @@ func (c requiresRestart) CommitConfiguration(_, _ Configuration) bool {
} }
return false return false
} }
func (requiresRestart) String() string { func (requiresRestart) String() string {
return "requiresRestart" return "requiresRestart"
} }
@@ -34,9 +36,11 @@ type validationError struct{}
func (validationError) VerifyConfiguration(_, _ Configuration) error { func (validationError) VerifyConfiguration(_, _ Configuration) error {
return errors.New("some error") return errors.New("some error")
} }
func (validationError) CommitConfiguration(_, _ Configuration) bool { func (validationError) CommitConfiguration(_, _ Configuration) bool {
return true return true
} }
func (validationError) String() string { func (validationError) String() string {
return "validationError" return "validationError"
} }

View File

@@ -10,6 +10,4 @@ import (
"github.com/syncthing/syncthing/lib/logger" "github.com/syncthing/syncthing/lib/logger"
) )
var ( var l = logger.DefaultLogger.NewFacility("config", "Configuration loading and saving")
l = logger.DefaultLogger.NewFacility("config", "Configuration loading and saving")
)

View File

@@ -24,7 +24,7 @@ func ParseSize(s string) (Size, error) {
for i := 0; i < len(s) && (s[i] >= '0' && s[i] <= '9' || s[i] == '.' || s[i] == ','); i++ { for i := 0; i < len(s) && (s[i] >= '0' && s[i] <= '9' || s[i] == '.' || s[i] == ','); i++ {
num = s[:i+1] num = s[:i+1]
} }
var i = len(num) i := len(num)
for i < len(s) && s[i] == ' ' { for i < len(s) && s[i] == ' ' {
i++ i++
} }

View File

@@ -10,6 +10,4 @@ import (
"github.com/syncthing/syncthing/lib/logger" "github.com/syncthing/syncthing/lib/logger"
) )
var ( var l = logger.DefaultLogger.NewFacility("connections", "Connection handling")
l = logger.DefaultLogger.NewFacility("connections", "Connection handling")
)

View File

@@ -21,8 +21,10 @@ import (
"golang.org/x/time/rate" "golang.org/x/time/rate"
) )
var device1, device2, device3, device4 protocol.DeviceID var (
var dev1Conf, dev2Conf, dev3Conf, dev4Conf config.DeviceConfiguration device1, device2, device3, device4 protocol.DeviceID
dev1Conf, dev2Conf, dev3Conf, dev4Conf config.DeviceConfiguration
)
func init() { func init() {
device1, _ = protocol.DeviceIDFromString("AIR6LPZ7K4PTTUXQSMUUCPQ5YWOEDFIIQJUG7772YQXXR5YD6AWQ") device1, _ = protocol.DeviceIDFromString("AIR6LPZ7K4PTTUXQSMUUCPQ5YWOEDFIIQJUG7772YQXXR5YD6AWQ")

View File

@@ -11,14 +11,12 @@ import (
"github.com/prometheus/client_golang/prometheus/promauto" "github.com/prometheus/client_golang/prometheus/promauto"
) )
var ( var metricDeviceActiveConnections = promauto.NewGaugeVec(prometheus.GaugeOpts{
metricDeviceActiveConnections = promauto.NewGaugeVec(prometheus.GaugeOpts{ Namespace: "syncthing",
Namespace: "syncthing", Subsystem: "connections",
Subsystem: "connections", Name: "active",
Name: "active", Help: "Number of currently active connections, per device. If value is 0, the device is disconnected.",
Help: "Number of currently active connections, per device. If value is 0, the device is disconnected.", }, []string{"device"})
}, []string{"device"})
)
func registerDeviceMetrics(deviceID string) { func registerDeviceMetrics(deviceID string) {
// Register metrics for this device, so that counters & gauges are present even // Register metrics for this device, so that counters & gauges are present even

View File

@@ -10,6 +10,4 @@ import (
"github.com/syncthing/syncthing/lib/logger" "github.com/syncthing/syncthing/lib/logger"
) )
var ( var l = logger.DefaultLogger.NewFacility("backend", "The database backend")
l = logger.DefaultLogger.NewFacility("backend", "The database backend")
)

View File

@@ -13,8 +13,10 @@ import (
"github.com/syncthing/syncthing/lib/protocol" "github.com/syncthing/syncthing/lib/protocol"
) )
var f1, f2, f3 protocol.FileInfo var (
var folders = []string{"folder1", "folder2"} f1, f2, f3 protocol.FileInfo
folders = []string{"folder1", "folder2"}
)
func init() { func init() {
blocks := genBlocks(30) blocks := genBlocks(30)

View File

@@ -159,7 +159,6 @@ func init() {
func TestUpdate0to3(t *testing.T) { func TestUpdate0to3(t *testing.T) {
ldb, err := openJSONS("testdata/v0.14.45-update0to3.db.jsons") ldb, err := openJSONS("testdata/v0.14.45-update0to3.db.jsons")
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }

View File

@@ -10,9 +10,7 @@ import (
"github.com/syncthing/syncthing/lib/logger" "github.com/syncthing/syncthing/lib/logger"
) )
var ( var l = logger.DefaultLogger.NewFacility("db", "The database layer")
l = logger.DefaultLogger.NewFacility("db", "The database layer")
)
func shouldDebug() bool { func shouldDebug() bool {
return l.ShouldDebug("db") return l.ShouldDebug("db")

View File

@@ -55,6 +55,7 @@ func globalList(t testing.TB, s *db.FileSet) []protocol.FileInfo {
}) })
return fs return fs
} }
func globalListPrefixed(t testing.TB, s *db.FileSet, prefix string) []db.FileInfoTruncated { func globalListPrefixed(t testing.TB, s *db.FileSet, prefix string) []db.FileInfoTruncated {
var fs []db.FileInfoTruncated var fs []db.FileInfoTruncated
snap := snapshot(t, s) snap := snapshot(t, s)

View File

@@ -16,9 +16,7 @@ import (
"golang.org/x/net/proxy" "golang.org/x/net/proxy"
) )
var ( var noFallback = os.Getenv("ALL_PROXY_NO_FALLBACK") != ""
noFallback = os.Getenv("ALL_PROXY_NO_FALLBACK") != ""
)
func init() { func init() {
proxy.RegisterDialerType("socks", socksDialerFunction) proxy.RegisterDialerType("socks", socksDialerFunction)

View File

@@ -10,6 +10,4 @@ import (
"github.com/syncthing/syncthing/lib/logger" "github.com/syncthing/syncthing/lib/logger"
) )
var ( var l = logger.DefaultLogger.NewFacility("discover", "Remote device discovery")
l = logger.DefaultLogger.NewFacility("discover", "Remote device discovery")
)

View File

@@ -244,6 +244,7 @@ type fakeAddressLister struct{}
func (*fakeAddressLister) ExternalAddresses() []string { func (*fakeAddressLister) ExternalAddresses() []string {
return []string{"tcp://0.0.0.0:22000"} return []string{"tcp://0.0.0.0:22000"}
} }
func (*fakeAddressLister) AllAddresses() []string { func (*fakeAddressLister) AllAddresses() []string {
return []string{"tcp://0.0.0.0:22000", "tcp://192.168.0.1:22000"} return []string{"tcp://0.0.0.0:22000", "tcp://192.168.0.1:22000"}
} }

View File

@@ -10,6 +10,4 @@ import (
liblogger "github.com/syncthing/syncthing/lib/logger" liblogger "github.com/syncthing/syncthing/lib/logger"
) )
var ( var dl = liblogger.DefaultLogger.NewFacility("events", "Event generation and logging")
dl = liblogger.DefaultLogger.NewFacility("events", "Event generation and logging")
)

View File

@@ -81,7 +81,6 @@ func TestEventAfterSubscribe(t *testing.T) {
l.Log(DeviceConnected, "foo") l.Log(DeviceConnected, "foo")
ev, err := s.Poll(timeout) ev, err := s.Poll(timeout)
if err != nil { if err != nil {
t.Fatal("Unexpected error:", err) t.Fatal("Unexpected error:", err)
} }

View File

@@ -40,13 +40,13 @@ func (e basicFileInfo) Mode() FileMode {
} }
// Set executable bits on files with executable extensions (.exe, .bat, etc). // Set executable bits on files with executable extensions (.exe, .bat, etc).
if isWindowsExecutable(e.Name()) { if isWindowsExecutable(e.Name()) {
m |= 0111 m |= 0o111
} }
// There is no user/group/others in Windows' read-only attribute, and // There is no user/group/others in Windows' read-only attribute, and
// all "w" bits are set if the file is not read-only. Do not send these // all "w" bits are set if the file is not read-only. Do not send these
// group/others-writable bits to other devices in order to avoid // group/others-writable bits to other devices in order to avoid
// unexpected world-writable files on other platforms. // unexpected world-writable files on other platforms.
m &^= 0022 m &^= 0o022
return FileMode(m) return FileMode(m)
} }

View File

@@ -32,7 +32,7 @@ func readReparseTag(path string) (uint32, error) {
} }
defer syscall.CloseHandle(h) defer syscall.CloseHandle(h)
//https://docs.microsoft.com/windows/win32/api/winbase/ns-winbase-file_attribute_tag_info // https://docs.microsoft.com/windows/win32/api/winbase/ns-winbase-file_attribute_tag_info
const fileAttributeTagInfo = 9 const fileAttributeTagInfo = 9
type FILE_ATTRIBUTE_TAG_INFO struct { type FILE_ATTRIBUTE_TAG_INFO struct {
FileAttributes uint32 FileAttributes uint32
@@ -67,7 +67,7 @@ type dirJunctFileInfo struct {
func (fi *dirJunctFileInfo) Mode() os.FileMode { func (fi *dirJunctFileInfo) Mode() os.FileMode {
// Simulate a directory and not a symlink; also set the execute // Simulate a directory and not a symlink; also set the execute
// bits so the directory can be traversed Unix-side. // bits so the directory can be traversed Unix-side.
return fi.FileInfo.Mode()&^junctionPointModeMask | os.ModeDir | 0111 return fi.FileInfo.Mode()&^junctionPointModeMask | os.ModeDir | 0o111
} }
func (fi *dirJunctFileInfo) IsDir() bool { func (fi *dirJunctFileInfo) IsDir() bool {
@@ -89,7 +89,7 @@ func init() {
} }
func (f *BasicFilesystem) underlyingLstat(name string) (os.FileInfo, error) { func (f *BasicFilesystem) underlyingLstat(name string) (os.FileInfo, error) {
var fi, err = os.Lstat(name) fi, err := os.Lstat(name)
// There are cases where files are tagged as symlink, but they end up being // There are cases where files are tagged as symlink, but they end up being
// something else. Make sure we properly handle those types. // something else. Make sure we properly handle those types.

View File

@@ -34,7 +34,7 @@ func TestChmodFile(t *testing.T) {
fs, dir := setup(t) fs, dir := setup(t)
path := filepath.Join(dir, "file") path := filepath.Join(dir, "file")
defer os.Chmod(path, 0666) defer os.Chmod(path, 0o666)
fd, err := os.Create(path) fd, err := os.Create(path)
if err != nil { if err != nil {
@@ -42,19 +42,19 @@ func TestChmodFile(t *testing.T) {
} }
fd.Close() fd.Close()
if err := os.Chmod(path, 0666); err != nil { if err := os.Chmod(path, 0o666); err != nil {
t.Error(err) t.Error(err)
} }
if stat, err := os.Stat(path); err != nil || stat.Mode()&os.ModePerm != 0666 { if stat, err := os.Stat(path); err != nil || stat.Mode()&os.ModePerm != 0o666 {
t.Errorf("wrong perm: %t %#o", err == nil, stat.Mode()&os.ModePerm) t.Errorf("wrong perm: %t %#o", err == nil, stat.Mode()&os.ModePerm)
} }
if err := fs.Chmod("file", 0444); err != nil { if err := fs.Chmod("file", 0o444); err != nil {
t.Error(err) t.Error(err)
} }
if stat, err := os.Stat(path); err != nil || stat.Mode()&os.ModePerm != 0444 { if stat, err := os.Stat(path); err != nil || stat.Mode()&os.ModePerm != 0o444 {
t.Errorf("wrong perm: %t %#o", err == nil, stat.Mode()&os.ModePerm) t.Errorf("wrong perm: %t %#o", err == nil, stat.Mode()&os.ModePerm)
} }
} }
@@ -74,7 +74,7 @@ func TestChownFile(t *testing.T) {
fs, dir := setup(t) fs, dir := setup(t)
path := filepath.Join(dir, "file") path := filepath.Join(dir, "file")
defer os.Chmod(path, 0666) defer os.Chmod(path, 0o666)
fd, err := os.Create(path) fd, err := os.Create(path)
if err != nil { if err != nil {
@@ -110,9 +110,9 @@ func TestChmodDir(t *testing.T) {
fs, dir := setup(t) fs, dir := setup(t)
path := filepath.Join(dir, "dir") path := filepath.Join(dir, "dir")
mode := os.FileMode(0755) mode := os.FileMode(0o755)
if build.IsWindows { if build.IsWindows {
mode = os.FileMode(0777) mode = os.FileMode(0o777)
} }
defer os.Chmod(path, mode) defer os.Chmod(path, mode)
@@ -129,11 +129,11 @@ func TestChmodDir(t *testing.T) {
t.Errorf("wrong perm: %t %#o", err == nil, stat.Mode()&os.ModePerm) t.Errorf("wrong perm: %t %#o", err == nil, stat.Mode()&os.ModePerm)
} }
if err := fs.Chmod("dir", 0555); err != nil { if err := fs.Chmod("dir", 0o555); err != nil {
t.Error(err) t.Error(err)
} }
if stat, err := os.Stat(path); err != nil || stat.Mode()&os.ModePerm != 0555 { if stat, err := os.Stat(path); err != nil || stat.Mode()&os.ModePerm != 0o555 {
t.Errorf("wrong perm: %t %#o", err == nil, stat.Mode()&os.ModePerm) t.Errorf("wrong perm: %t %#o", err == nil, stat.Mode()&os.ModePerm)
} }
} }
@@ -221,7 +221,7 @@ func TestDirNames(t *testing.T) {
sort.Strings(testCases) sort.Strings(testCases)
for _, sub := range testCases { for _, sub := range testCases {
if err := os.Mkdir(filepath.Join(dir, sub), 0777); err != nil { if err := os.Mkdir(filepath.Join(dir, sub), 0o777); err != nil {
t.Error(err) t.Error(err)
} }
} }
@@ -256,7 +256,7 @@ func TestNames(t *testing.T) {
t.Errorf("incorrect %s != %s (%v)", stat.Name(), expected, err) t.Errorf("incorrect %s != %s (%v)", stat.Name(), expected, err)
} }
if err := fs.Mkdir("dir", 0777); err != nil { if err := fs.Mkdir("dir", 0o777); err != nil {
t.Error(err) t.Error(err)
} }
@@ -286,7 +286,7 @@ func TestGlob(t *testing.T) {
filepath.Join("a", "best", "b"), filepath.Join("a", "best", "b"),
filepath.Join("a", "best", "c"), filepath.Join("a", "best", "c"),
} { } {
if err := fs.MkdirAll(dirToCreate, 0777); err != nil { if err := fs.MkdirAll(dirToCreate, 0o777); err != nil {
t.Error(err) t.Error(err)
} }
} }
@@ -572,7 +572,7 @@ func TestRel(t *testing.T) {
func TestXattr(t *testing.T) { func TestXattr(t *testing.T) {
tfs, _ := setup(t) tfs, _ := setup(t)
if err := tfs.Mkdir("/test", 0755); err != nil { if err := tfs.Mkdir("/test", 0o755); err != nil {
t.Fatal(err) t.Fatal(err)
} }

View File

@@ -198,7 +198,7 @@ func (f *BasicFilesystem) Remove(name string) error {
err = os.Remove(name) err = os.Remove(name)
if os.IsPermission(err) { if os.IsPermission(err) {
// Try to remove the read-only attribute and try again // Try to remove the read-only attribute and try again
if os.Chmod(name, 0600) == nil { if os.Chmod(name, 0o600) == nil {
err = os.Remove(name) err = os.Remove(name)
} }
} }

View File

@@ -40,7 +40,7 @@ func testRealCase(t *testing.T, fsys Filesystem) {
testFs := newCaseFilesystem(fsys) testFs := newCaseFilesystem(fsys)
comps := []string{"Foo", "bar", "BAZ", "bAs"} comps := []string{"Foo", "bar", "BAZ", "bAs"}
path := filepath.Join(comps...) path := filepath.Join(comps...)
testFs.MkdirAll(filepath.Join(comps[:len(comps)-1]...), 0777) testFs.MkdirAll(filepath.Join(comps[:len(comps)-1]...), 0o777)
fd, err := testFs.Create(path) fd, err := testFs.Create(path)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
@@ -93,7 +93,7 @@ func testRealCaseSensitive(t *testing.T, fsys Filesystem) {
names[0] = "foo" names[0] = "foo"
names[1] = strings.ToUpper(names[0]) names[1] = strings.ToUpper(names[0])
for _, n := range names { for _, n := range names {
if err := testFs.MkdirAll(n, 0777); err != nil { if err := testFs.MkdirAll(n, 0o777); err != nil {
if IsErrCaseConflict(err) { if IsErrCaseConflict(err) {
t.Skip("Filesystem is case-insensitive") t.Skip("Filesystem is case-insensitive")
} }

View File

@@ -10,9 +10,7 @@ import (
"github.com/syncthing/syncthing/lib/logger" "github.com/syncthing/syncthing/lib/logger"
) )
var ( var l = logger.DefaultLogger.NewFacility("fs", "Filesystem access")
l = logger.DefaultLogger.NewFacility("fs", "Filesystem access")
)
func init() { func init() {
logger.DefaultLogger.NewFacility("walkfs", "Filesystem access while walking") logger.DefaultLogger.NewFacility("walkfs", "Filesystem access while walking")

View File

@@ -30,6 +30,7 @@ func (fs *errorFilesystem) DirNames(_ string) ([]string, error) { return nil, fs
func (fs *errorFilesystem) GetXattr(_ string, _ XattrFilter) ([]protocol.Xattr, error) { func (fs *errorFilesystem) GetXattr(_ string, _ XattrFilter) ([]protocol.Xattr, error) {
return nil, fs.err return nil, fs.err
} }
func (fs *errorFilesystem) SetXattr(_ string, _ []protocol.Xattr, _ XattrFilter) error { func (fs *errorFilesystem) SetXattr(_ string, _ []protocol.Xattr, _ XattrFilter) error {
return fs.err return fs.err
} }
@@ -60,6 +61,7 @@ func (*errorFilesystem) SameFile(_, _ FileInfo) bool { return false }
func (fs *errorFilesystem) Watch(_ string, _ Matcher, _ context.Context, _ bool) (<-chan Event, <-chan error, error) { func (fs *errorFilesystem) Watch(_ string, _ Matcher, _ context.Context, _ bool) (<-chan Event, <-chan error, error) {
return nil, nil, fs.err return nil, nil, fs.err
} }
func (fs *errorFilesystem) PlatformData(_ string, _, _ bool, _ XattrFilter) (protocol.PlatformData, error) { func (fs *errorFilesystem) PlatformData(_ string, _, _ bool, _ XattrFilter) (protocol.PlatformData, error) {
return protocol.PlatformData{}, fs.err return protocol.PlatformData{}, fs.err
} }

View File

@@ -27,7 +27,7 @@ func TestFakeFS(t *testing.T) {
fs := newFakeFilesystem("/foo/bar/baz") fs := newFakeFilesystem("/foo/bar/baz")
// MkdirAll // MkdirAll
err := fs.MkdirAll("dira/dirb", 0755) err := fs.MkdirAll("dira/dirb", 0o755)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -37,7 +37,7 @@ func TestFakeFS(t *testing.T) {
} }
// Mkdir // Mkdir
err = fs.Mkdir("dira/dirb/dirc", 0755) err = fs.Mkdir("dira/dirb/dirc", 0o755)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -190,7 +190,7 @@ type test struct {
} }
func TestFakeFSCaseSensitive(t *testing.T) { func TestFakeFSCaseSensitive(t *testing.T) {
var tests = []test{ tests := []test{
{"Read", testFakeFSRead}, {"Read", testFakeFSRead},
{"OpenFile", testFakeFSOpenFile}, {"OpenFile", testFakeFSOpenFile},
{"RemoveAll", testFakeFSRemoveAll}, {"RemoveAll", testFakeFSRemoveAll},
@@ -201,7 +201,7 @@ func TestFakeFSCaseSensitive(t *testing.T) {
{"DirNames", testDirNames}, {"DirNames", testDirNames},
{"FileName", testFakeFSFileName}, {"FileName", testFakeFSFileName},
} }
var filesystems = []testFS{ filesystems := []testFS{
{"fakeFS", newFakeFilesystem("/foo")}, {"fakeFS", newFakeFilesystem("/foo")},
} }
@@ -214,7 +214,7 @@ func TestFakeFSCaseSensitive(t *testing.T) {
} }
func TestFakeFSCaseInsensitive(t *testing.T) { func TestFakeFSCaseInsensitive(t *testing.T) {
var tests = []test{ tests := []test{
{"Read", testFakeFSRead}, {"Read", testFakeFSRead},
{"OpenFile", testFakeFSOpenFile}, {"OpenFile", testFakeFSOpenFile},
{"RemoveAll", testFakeFSRemoveAll}, {"RemoveAll", testFakeFSRemoveAll},
@@ -236,7 +236,7 @@ func TestFakeFSCaseInsensitive(t *testing.T) {
{"FileNameInsens", testFakeFSFileNameInsens}, {"FileNameInsens", testFakeFSFileNameInsens},
} }
var filesystems = []testFS{ filesystems := []testFS{
{"fakeFS", newFakeFilesystem("/foobar?insens=true")}, {"fakeFS", newFakeFilesystem("/foobar?insens=true")},
} }
@@ -287,7 +287,7 @@ func runTests(t *testing.T, tests []test, filesystems []testFS) {
func testFakeFSCaseInsensitive(t *testing.T, fs Filesystem) { func testFakeFSCaseInsensitive(t *testing.T, fs Filesystem) {
bs1 := []byte("test") bs1 := []byte("test")
err := fs.Mkdir("/fUbar", 0755) err := fs.Mkdir("/fUbar", 0o755)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -327,12 +327,12 @@ func testFakeFSCaseInsensitive(t *testing.T, fs Filesystem) {
} }
func testFakeFSCaseInsensitiveMkdirAll(t *testing.T, fs Filesystem) { func testFakeFSCaseInsensitiveMkdirAll(t *testing.T, fs Filesystem) {
err := fs.MkdirAll("/fOO/Bar/bAz", 0755) err := fs.MkdirAll("/fOO/Bar/bAz", 0o755)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
fd, err := fs.OpenFile("/foo/BaR/BaZ/tESt", os.O_CREATE, 0644) fd, err := fs.OpenFile("/foo/BaR/BaZ/tESt", os.O_CREATE, 0o644)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -430,7 +430,7 @@ func testFakeFSStatInsens(t *testing.T, fs Filesystem) {
} }
func testFakeFSFileName(t *testing.T, fs Filesystem) { func testFakeFSFileName(t *testing.T, fs Filesystem) {
var testCases = []struct { testCases := []struct {
create string create string
open string open string
}{ }{
@@ -458,7 +458,7 @@ func testFakeFSFileName(t *testing.T, fs Filesystem) {
} }
func testFakeFSFileNameInsens(t *testing.T, fs Filesystem) { func testFakeFSFileNameInsens(t *testing.T, fs Filesystem) {
var testCases = []struct { testCases := []struct {
create string create string
open string open string
}{ }{
@@ -486,7 +486,7 @@ func testFakeFSFileNameInsens(t *testing.T, fs Filesystem) {
} }
func testFakeFSRename(t *testing.T, fs Filesystem) { func testFakeFSRename(t *testing.T, fs Filesystem) {
if err := fs.MkdirAll("/foo/bar/baz", 0755); err != nil { if err := fs.MkdirAll("/foo/bar/baz", 0o755); err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -500,7 +500,7 @@ func testFakeFSRename(t *testing.T, fs Filesystem) {
t.Errorf("rename to non-existent dir gave no error") t.Errorf("rename to non-existent dir gave no error")
} }
if err := fs.MkdirAll("/baz/bar/foo", 0755); err != nil { if err := fs.MkdirAll("/baz/bar/foo", 0o755); err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -508,7 +508,7 @@ func testFakeFSRename(t *testing.T, fs Filesystem) {
t.Fatal(err) t.Fatal(err)
} }
var dirs = []struct { dirs := []struct {
dir string dir string
files []string files []string
}{ }{
@@ -531,11 +531,11 @@ func testFakeFSRename(t *testing.T, fs Filesystem) {
} }
func testFakeFSRenameInsensitive(t *testing.T, fs Filesystem) { func testFakeFSRenameInsensitive(t *testing.T, fs Filesystem) {
if err := fs.MkdirAll("/baz/bar/foo", 0755); err != nil { if err := fs.MkdirAll("/baz/bar/foo", 0o755); err != nil {
t.Fatal(err) t.Fatal(err)
} }
if err := fs.MkdirAll("/foO/baR/baZ", 0755); err != nil { if err := fs.MkdirAll("/foO/baR/baZ", 0o755); err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -550,7 +550,7 @@ func testFakeFSRenameInsensitive(t *testing.T, fs Filesystem) {
t.Fatal(err) t.Fatal(err)
} }
var dirs = []struct { dirs := []struct {
dir string dir string
files []string files []string
}{ }{
@@ -582,7 +582,7 @@ func testFakeFSRenameInsensitive(t *testing.T, fs Filesystem) {
} }
func testFakeFSMkdir(t *testing.T, fs Filesystem) { func testFakeFSMkdir(t *testing.T, fs Filesystem) {
if err := fs.Mkdir("/foo", 0755); err != nil { if err := fs.Mkdir("/foo", 0o755); err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -590,13 +590,13 @@ func testFakeFSMkdir(t *testing.T, fs Filesystem) {
t.Fatal(err) t.Fatal(err)
} }
if err := fs.Mkdir("/foo", 0755); err == nil { if err := fs.Mkdir("/foo", 0o755); err == nil {
t.Errorf("got no error while creating existing directory") t.Errorf("got no error while creating existing directory")
} }
} }
func testFakeFSMkdirInsens(t *testing.T, fs Filesystem) { func testFakeFSMkdirInsens(t *testing.T, fs Filesystem) {
if err := fs.Mkdir("/foo", 0755); err != nil { if err := fs.Mkdir("/foo", 0o755); err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -604,37 +604,37 @@ func testFakeFSMkdirInsens(t *testing.T, fs Filesystem) {
t.Fatal(err) t.Fatal(err)
} }
if err := fs.Mkdir("/FOO", 0755); err == nil { if err := fs.Mkdir("/FOO", 0o755); err == nil {
t.Errorf("got no error while creating existing directory") t.Errorf("got no error while creating existing directory")
} }
} }
func testFakeFSOpenFile(t *testing.T, fs Filesystem) { func testFakeFSOpenFile(t *testing.T, fs Filesystem) {
fd, err := fs.OpenFile("foobar", os.O_RDONLY, 0664) fd, err := fs.OpenFile("foobar", os.O_RDONLY, 0o664)
if err == nil { if err == nil {
fd.Close() fd.Close()
t.Fatalf("got no error opening a non-existing file") t.Fatalf("got no error opening a non-existing file")
} }
fd, err = fs.OpenFile("foobar", os.O_RDWR|os.O_CREATE, 0664) fd, err = fs.OpenFile("foobar", os.O_RDWR|os.O_CREATE, 0o664)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
fd.Close() fd.Close()
fd, err = fs.OpenFile("foobar", os.O_RDWR|os.O_CREATE|os.O_EXCL, 0664) fd, err = fs.OpenFile("foobar", os.O_RDWR|os.O_CREATE|os.O_EXCL, 0o664)
if err == nil { if err == nil {
fd.Close() fd.Close()
t.Fatalf("created an existing file while told not to") t.Fatalf("created an existing file while told not to")
} }
fd, err = fs.OpenFile("foobar", os.O_RDWR|os.O_CREATE, 0664) fd, err = fs.OpenFile("foobar", os.O_RDWR|os.O_CREATE, 0o664)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
fd.Close() fd.Close()
fd, err = fs.OpenFile("foobar", os.O_RDWR, 0664) fd, err = fs.OpenFile("foobar", os.O_RDWR, 0o664)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -642,31 +642,31 @@ func testFakeFSOpenFile(t *testing.T, fs Filesystem) {
} }
func testFakeFSOpenFileInsens(t *testing.T, fs Filesystem) { func testFakeFSOpenFileInsens(t *testing.T, fs Filesystem) {
fd, err := fs.OpenFile("FooBar", os.O_RDONLY, 0664) fd, err := fs.OpenFile("FooBar", os.O_RDONLY, 0o664)
if err == nil { if err == nil {
fd.Close() fd.Close()
t.Fatalf("got no error opening a non-existing file") t.Fatalf("got no error opening a non-existing file")
} }
fd, err = fs.OpenFile("fOObar", os.O_RDWR|os.O_CREATE, 0664) fd, err = fs.OpenFile("fOObar", os.O_RDWR|os.O_CREATE, 0o664)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
fd.Close() fd.Close()
fd, err = fs.OpenFile("fOoBaR", os.O_RDWR|os.O_CREATE|os.O_EXCL, 0664) fd, err = fs.OpenFile("fOoBaR", os.O_RDWR|os.O_CREATE|os.O_EXCL, 0o664)
if err == nil { if err == nil {
fd.Close() fd.Close()
t.Fatalf("created an existing file while told not to") t.Fatalf("created an existing file while told not to")
} }
fd, err = fs.OpenFile("FoObAr", os.O_RDWR|os.O_CREATE, 0664) fd, err = fs.OpenFile("FoObAr", os.O_RDWR|os.O_CREATE, 0o664)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
fd.Close() fd.Close()
fd, err = fs.OpenFile("FOOBAR", os.O_RDWR, 0664) fd, err = fs.OpenFile("FOOBAR", os.O_RDWR, 0o664)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -674,7 +674,7 @@ func testFakeFSOpenFileInsens(t *testing.T, fs Filesystem) {
} }
func testFakeFSRemoveAll(t *testing.T, fs Filesystem) { func testFakeFSRemoveAll(t *testing.T, fs Filesystem) {
if err := fs.Mkdir("/foo", 0755); err != nil { if err := fs.Mkdir("/foo", 0o755); err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -702,7 +702,7 @@ func testFakeFSRemoveAll(t *testing.T, fs Filesystem) {
} }
func testFakeFSRemoveAllInsens(t *testing.T, fs Filesystem) { func testFakeFSRemoveAllInsens(t *testing.T, fs Filesystem) {
if err := fs.Mkdir("/Foo", 0755); err != nil { if err := fs.Mkdir("/Foo", 0o755); err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -729,7 +729,7 @@ func testFakeFSRemoveAllInsens(t *testing.T, fs Filesystem) {
} }
func testFakeFSRemove(t *testing.T, fs Filesystem) { func testFakeFSRemove(t *testing.T, fs Filesystem) {
if err := fs.Mkdir("/Foo", 0755); err != nil { if err := fs.Mkdir("/Foo", 0o755); err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -754,7 +754,7 @@ func testFakeFSRemove(t *testing.T, fs Filesystem) {
} }
func testFakeFSRemoveInsens(t *testing.T, fs Filesystem) { func testFakeFSRemoveInsens(t *testing.T, fs Filesystem) {
if err := fs.Mkdir("/Foo", 0755); err != nil { if err := fs.Mkdir("/Foo", 0o755); err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -778,7 +778,7 @@ func testFakeFSRemoveInsens(t *testing.T, fs Filesystem) {
} }
func testFakeFSSameFile(t *testing.T, fs Filesystem) { func testFakeFSSameFile(t *testing.T, fs Filesystem) {
if err := fs.Mkdir("/Foo", 0755); err != nil { if err := fs.Mkdir("/Foo", 0o755); err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -810,7 +810,7 @@ func testFakeFSSameFile(t *testing.T, fs Filesystem) {
} }
func testFakeFSSameFileInsens(t *testing.T, fs Filesystem) { func testFakeFSSameFileInsens(t *testing.T, fs Filesystem) {
if err := fs.Mkdir("/Foo", 0755); err != nil { if err := fs.Mkdir("/Foo", 0o755); err != nil {
t.Fatal(err) t.Fatal(err)
} }

View File

@@ -104,7 +104,7 @@ func TestCanonicalize(t *testing.T) {
} }
func TestFileModeString(t *testing.T) { func TestFileModeString(t *testing.T) {
var fm FileMode = 0777 var fm FileMode = 0o777
exp := "-rwxrwxrwx" exp := "-rwxrwxrwx"
if fm.String() != exp { if fm.String() != exp {
t.Fatalf("Got %v, expected %v", fm.String(), exp) t.Fatalf("Got %v, expected %v", fm.String(), exp)

View File

@@ -23,10 +23,10 @@ func testWalkSkipSymlink(t *testing.T, fsType FilesystemType, uri string) {
fs := NewFilesystem(fsType, uri) fs := NewFilesystem(fsType, uri)
if err := fs.MkdirAll("target/foo", 0755); err != nil { if err := fs.MkdirAll("target/foo", 0o755); err != nil {
t.Fatal(err) t.Fatal(err)
} }
if err := fs.Mkdir("towalk", 0755); err != nil { if err := fs.Mkdir("towalk", 0o755); err != nil {
t.Fatal(err) t.Fatal(err)
} }
if err := fs.CreateSymlink("target", "towalk/symlink"); err != nil { if err := fs.CreateSymlink("target", "towalk/symlink"); err != nil {

View File

@@ -7,10 +7,11 @@
package model package model
import ( import (
"sort"
"github.com/syncthing/syncthing/lib/config" "github.com/syncthing/syncthing/lib/config"
"github.com/syncthing/syncthing/lib/protocol" "github.com/syncthing/syncthing/lib/protocol"
"github.com/syncthing/syncthing/lib/rand" "github.com/syncthing/syncthing/lib/rand"
"sort"
) )
type blockPullReorderer interface { type blockPullReorderer interface {

View File

@@ -14,9 +14,7 @@ import (
"github.com/syncthing/syncthing/lib/protocol" "github.com/syncthing/syncthing/lib/protocol"
) )
var ( var someBlocks = []protocol.BlockInfo{{Offset: 1}, {Offset: 2}, {Offset: 3}}
someBlocks = []protocol.BlockInfo{{Offset: 1}, {Offset: 2}, {Offset: 3}}
)
func Test_chunk(t *testing.T) { func Test_chunk(t *testing.T) {
type args struct { type args struct {

View File

@@ -10,9 +10,7 @@ import (
"github.com/syncthing/syncthing/lib/logger" "github.com/syncthing/syncthing/lib/logger"
) )
var ( var l = logger.DefaultLogger.NewFacility("model", "The root hub")
l = logger.DefaultLogger.NewFacility("model", "The root hub")
)
func shouldDebug() bool { func shouldDebug() bool {
return l.ShouldDebug("model") return l.ShouldDebug("model")

View File

@@ -33,55 +33,56 @@ func TestDeviceDownloadState(t *testing.T) {
shouldHaveIndexesFrom []protocol.FileDownloadProgressUpdate shouldHaveIndexesFrom []protocol.FileDownloadProgressUpdate
shouldNotHaveIndexesFrom []protocol.FileDownloadProgressUpdate shouldNotHaveIndexesFrom []protocol.FileDownloadProgressUpdate
}{ }{
{ //1 { // 1
[]protocol.FileDownloadProgressUpdate{f1v1p1}, []protocol.FileDownloadProgressUpdate{f1v1p1},
[]protocol.FileDownloadProgressUpdate{f1v1p1}, []protocol.FileDownloadProgressUpdate{f1v1p1},
[]protocol.FileDownloadProgressUpdate{f1v1p2, f1v2p1, f1v2p2}, []protocol.FileDownloadProgressUpdate{f1v1p2, f1v2p1, f1v2p2},
}, },
{ //2 { // 2
[]protocol.FileDownloadProgressUpdate{f1v1p1, f1v1p2}, []protocol.FileDownloadProgressUpdate{f1v1p1, f1v1p2},
[]protocol.FileDownloadProgressUpdate{f1v1p1, f1v1p2}, []protocol.FileDownloadProgressUpdate{f1v1p1, f1v1p2},
[]protocol.FileDownloadProgressUpdate{f1v2p1, f1v2p2}, []protocol.FileDownloadProgressUpdate{f1v2p1, f1v2p2},
}, },
{ //3 { // 3
[]protocol.FileDownloadProgressUpdate{f1v1p1, f1v1p2, f1v1del}, []protocol.FileDownloadProgressUpdate{f1v1p1, f1v1p2, f1v1del},
nil, nil,
[]protocol.FileDownloadProgressUpdate{f1v1p1, f1v1p2, f1v2p1, f1v2p2}}, []protocol.FileDownloadProgressUpdate{f1v1p1, f1v1p2, f1v2p1, f1v2p2},
{ //4 },
{ // 4
[]protocol.FileDownloadProgressUpdate{f1v1p1, f1v1p2, f1v2del}, []protocol.FileDownloadProgressUpdate{f1v1p1, f1v1p2, f1v2del},
[]protocol.FileDownloadProgressUpdate{f1v1p1, f1v1p2}, []protocol.FileDownloadProgressUpdate{f1v1p1, f1v1p2},
[]protocol.FileDownloadProgressUpdate{f1v2p1, f1v2p2}, []protocol.FileDownloadProgressUpdate{f1v2p1, f1v2p2},
}, },
{ //5 { // 5
// v2 replaces old v1 data // v2 replaces old v1 data
[]protocol.FileDownloadProgressUpdate{f1v1p1, f1v1p2, f1v2p1}, []protocol.FileDownloadProgressUpdate{f1v1p1, f1v1p2, f1v2p1},
[]protocol.FileDownloadProgressUpdate{f1v2p1}, []protocol.FileDownloadProgressUpdate{f1v2p1},
[]protocol.FileDownloadProgressUpdate{f1v1p1, f1v1p2, f1v2p2}, []protocol.FileDownloadProgressUpdate{f1v1p1, f1v1p2, f1v2p2},
}, },
{ //6 { // 6
// v1 delete on v2 data does nothing // v1 delete on v2 data does nothing
[]protocol.FileDownloadProgressUpdate{f1v1p1, f1v1p2, f1v2p1, f1v1del}, []protocol.FileDownloadProgressUpdate{f1v1p1, f1v1p2, f1v2p1, f1v1del},
[]protocol.FileDownloadProgressUpdate{f1v2p1}, []protocol.FileDownloadProgressUpdate{f1v2p1},
[]protocol.FileDownloadProgressUpdate{f1v1p1, f1v1p2, f1v2p2}, []protocol.FileDownloadProgressUpdate{f1v1p1, f1v1p2, f1v2p2},
}, },
{ //7 { // 7
// v2 replacees v1, v2 gets deleted, and v2 part 2 gets added. // v2 replacees v1, v2 gets deleted, and v2 part 2 gets added.
[]protocol.FileDownloadProgressUpdate{f1v1p1, f1v1p2, f1v2p1, f1v2del, f1v2p2}, []protocol.FileDownloadProgressUpdate{f1v1p1, f1v1p2, f1v2p1, f1v2del, f1v2p2},
[]protocol.FileDownloadProgressUpdate{f1v2p2}, []protocol.FileDownloadProgressUpdate{f1v2p2},
[]protocol.FileDownloadProgressUpdate{f1v1p1, f1v1p2, f1v2p1}, []protocol.FileDownloadProgressUpdate{f1v1p1, f1v1p2, f1v2p1},
}, },
// Multiple files in one go // Multiple files in one go
{ //8 { // 8
[]protocol.FileDownloadProgressUpdate{f1v1p1, f2v1p1}, []protocol.FileDownloadProgressUpdate{f1v1p1, f2v1p1},
[]protocol.FileDownloadProgressUpdate{f1v1p1, f2v1p1}, []protocol.FileDownloadProgressUpdate{f1v1p1, f2v1p1},
[]protocol.FileDownloadProgressUpdate{f1v1p2, f2v1p2}, []protocol.FileDownloadProgressUpdate{f1v1p2, f2v1p2},
}, },
{ //9 { // 9
[]protocol.FileDownloadProgressUpdate{f1v1p1, f2v1p1, f2v1del}, []protocol.FileDownloadProgressUpdate{f1v1p1, f2v1p1, f2v1del},
[]protocol.FileDownloadProgressUpdate{f1v1p1}, []protocol.FileDownloadProgressUpdate{f1v1p1},
[]protocol.FileDownloadProgressUpdate{f2v1p1, f2v1p1}, []protocol.FileDownloadProgressUpdate{f2v1p1, f2v1p1},
}, },
{ //10 { // 10
[]protocol.FileDownloadProgressUpdate{f1v1p1, f2v1del, f2v1p1}, []protocol.FileDownloadProgressUpdate{f1v1p1, f2v1del, f2v1p1},
[]protocol.FileDownloadProgressUpdate{f1v1p1, f2v1p1}, []protocol.FileDownloadProgressUpdate{f1v1p1, f2v1p1},
[]protocol.FileDownloadProgressUpdate{f1v1p2, f2v1p2}, []protocol.FileDownloadProgressUpdate{f1v1p2, f2v1p2},

View File

@@ -10,6 +10,4 @@ import (
"github.com/syncthing/syncthing/lib/logger" "github.com/syncthing/syncthing/lib/logger"
) )
var ( var l = logger.DefaultLogger.NewFacility("nat", "NAT discovery and port mapping")
l = logger.DefaultLogger.NewFacility("nat", "NAT discovery and port mapping")
)

View File

@@ -101,7 +101,7 @@ func (w *AtomicWriter) Close() error {
// On Windows, we might not be allowed to rename over the file // On Windows, we might not be allowed to rename over the file
// because it's read-only. Get us some write permissions and try // because it's read-only. Get us some write permissions and try
// again. // again.
_ = w.fs.Chmod(w.path, 0644) _ = w.fs.Chmod(w.path, 0o644)
err = w.fs.Rename(w.next.Name(), w.path) err = w.fs.Rename(w.next.Name(), w.path)
} }
if err != nil { if err != nil {

View File

@@ -17,7 +17,7 @@ func TestCreateAtomicCreate(t *testing.T) {
os.RemoveAll("testdata") os.RemoveAll("testdata")
defer os.RemoveAll("testdata") defer os.RemoveAll("testdata")
if err := os.Mkdir("testdata", 0755); err != nil { if err := os.Mkdir("testdata", 0o755); err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -52,10 +52,11 @@ func TestCreateAtomicCreate(t *testing.T) {
} }
func TestCreateAtomicReplace(t *testing.T) { func TestCreateAtomicReplace(t *testing.T) {
testCreateAtomicReplace(t, 0666) testCreateAtomicReplace(t, 0o666)
} }
func TestCreateAtomicReplaceReadOnly(t *testing.T) { func TestCreateAtomicReplaceReadOnly(t *testing.T) {
testCreateAtomicReplace(t, 0444) // windows compatible read-only bits testCreateAtomicReplace(t, 0o444) // windows compatible read-only bits
} }
func testCreateAtomicReplace(t *testing.T, oldPerms os.FileMode) { func testCreateAtomicReplace(t *testing.T, oldPerms os.FileMode) {
@@ -66,7 +67,7 @@ func testCreateAtomicReplace(t *testing.T, oldPerms os.FileMode) {
os.RemoveAll(testdir) os.RemoveAll(testdir)
if err := os.Mkdir(testdir, 0755); err != nil { if err := os.Mkdir(testdir, 0o755); err != nil {
t.Fatal(err) t.Fatal(err)
} }

View File

@@ -38,7 +38,7 @@ func TestTempFilePermissions(t *testing.T) {
// The temp file should have 0600 permissions at the most, or we have a // The temp file should have 0600 permissions at the most, or we have a
// security problem in CreateAtomic. // security problem in CreateAtomic.
t.Logf("Got 0%03o", info.Mode()) t.Logf("Got 0%03o", info.Mode())
if info.Mode()&^0600 != 0 { if info.Mode()&^0o600 != 0 {
t.Errorf("Permission 0%03o is too generous", info.Mode()) t.Errorf("Permission 0%03o is too generous", info.Mode())
} }
} }

View File

@@ -84,14 +84,14 @@ func Copy(method fs.CopyRangeMethod, src, dst fs.Filesystem, from, to string) (e
func withPreparedTarget(filesystem fs.Filesystem, from, to string, f func() error) error { func withPreparedTarget(filesystem fs.Filesystem, from, to string, f func() error) error {
// Make sure the destination directory is writeable // Make sure the destination directory is writeable
toDir := filepath.Dir(to) toDir := filepath.Dir(to)
if info, err := filesystem.Stat(toDir); err == nil && info.IsDir() && info.Mode()&0200 == 0 { if info, err := filesystem.Stat(toDir); err == nil && info.IsDir() && info.Mode()&0o200 == 0 {
filesystem.Chmod(toDir, 0755) filesystem.Chmod(toDir, 0o755)
defer filesystem.Chmod(toDir, info.Mode()) defer filesystem.Chmod(toDir, info.Mode())
} }
// On Windows, make sure the destination file is writeable (or we can't delete it) // On Windows, make sure the destination file is writeable (or we can't delete it)
if build.IsWindows { if build.IsWindows {
filesystem.Chmod(to, 0666) filesystem.Chmod(to, 0o666)
if !strings.EqualFold(from, to) { if !strings.EqualFold(from, to) {
err := filesystem.Remove(to) err := filesystem.Remove(to)
if err != nil && !fs.IsNotExist(err) { if err != nil && !fs.IsNotExist(err) {

View File

@@ -16,8 +16,10 @@ import (
"github.com/syncthing/syncthing/lib/fs" "github.com/syncthing/syncthing/lib/fs"
) )
var rand uint32 var (
var randmu sync.Mutex rand uint32
randmu sync.Mutex
)
func reseed() uint32 { func reseed() uint32 {
return uint32(time.Now().UnixNano() + int64(os.Getpid())) return uint32(time.Now().UnixNano() + int64(os.Getpid()))
@@ -48,7 +50,7 @@ func TempFile(filesystem fs.Filesystem, dir, prefix string) (f fs.File, err erro
nconflict := 0 nconflict := 0
for i := 0; i < 10000; i++ { for i := 0; i < 10000; i++ {
name := filepath.Join(dir, prefix+nextSuffix()) name := filepath.Join(dir, prefix+nextSuffix())
f, err = filesystem.OpenFile(name, fs.OptReadWrite|fs.OptCreate|fs.OptExclusive, 0600) f, err = filesystem.OpenFile(name, fs.OptReadWrite|fs.OptCreate|fs.OptExclusive, 0o600)
if fs.IsExist(err) { if fs.IsExist(err) {
if nconflict++; nconflict > 10 { if nconflict++; nconflict > 10 {
randmu.Lock() randmu.Lock()

View File

@@ -10,6 +10,4 @@ import (
"github.com/syncthing/syncthing/lib/logger" "github.com/syncthing/syncthing/lib/logger"
) )
var ( var l = logger.DefaultLogger.NewFacility("pmp", "NAT-PMP discovery and port mapping")
l = logger.DefaultLogger.NewFacility("pmp", "NAT-PMP discovery and port mapping")
)

View File

@@ -317,10 +317,10 @@ func PermsEqual(a, b uint32) bool {
if build.IsWindows { if build.IsWindows {
// There is only writeable and read only, represented for user, group // There is only writeable and read only, represented for user, group
// and other equally. We only compare against user. // and other equally. We only compare against user.
return a&0600 == b&0600 return a&0o600 == b&0o600
} }
// All bits count // All bits count
return a&0777 == b&0777 return a&0o777 == b&0o777
} }
// BlocksEqual returns true when the two files have identical block lists. // BlocksEqual returns true when the two files have identical block lists.

View File

@@ -6,6 +6,4 @@ import (
"github.com/syncthing/syncthing/lib/logger" "github.com/syncthing/syncthing/lib/logger"
) )
var ( var l = logger.DefaultLogger.NewFacility("protocol", "The BEP protocol")
l = logger.DefaultLogger.NewFacility("protocol", "The BEP protocol")
)

View File

@@ -4,19 +4,21 @@ package protocol
import "testing" import "testing"
var formatted = "P56IOI7-MZJNU2Y-IQGDREY-DM2MGTI-MGL3BXN-PQ6W5BM-TBBZ4TJ-XZWICQ2" var (
var formatCases = []string{ formatted = "P56IOI7-MZJNU2Y-IQGDREY-DM2MGTI-MGL3BXN-PQ6W5BM-TBBZ4TJ-XZWICQ2"
"P56IOI-7MZJNU-2IQGDR-EYDM2M-GTMGL3-BXNPQ6-W5BTBB-Z4TJXZ-WICQ", formatCases = []string{
"P56IOI-7MZJNU2Y-IQGDR-EYDM2M-GTI-MGL3-BXNPQ6-W5BM-TBB-Z4TJXZ-WICQ2", "P56IOI-7MZJNU-2IQGDR-EYDM2M-GTMGL3-BXNPQ6-W5BTBB-Z4TJXZ-WICQ",
"P56IOI7 MZJNU2I QGDREYD M2MGTMGL 3BXNPQ6W 5BTB BZ4T JXZWICQ", "P56IOI-7MZJNU2Y-IQGDR-EYDM2M-GTI-MGL3-BXNPQ6-W5BM-TBB-Z4TJXZ-WICQ2",
"P56IOI7 MZJNU2Y IQGDREY DM2MGTI MGL3BXN PQ6W5BM TBBZ4TJ XZWICQ2", "P56IOI7 MZJNU2I QGDREYD M2MGTMGL 3BXNPQ6W 5BTB BZ4T JXZWICQ",
"P56IOI7MZJNU2IQGDREYDM2MGTMGL3BXNPQ6W5BTBBZ4TJXZWICQ", "P56IOI7 MZJNU2Y IQGDREY DM2MGTI MGL3BXN PQ6W5BM TBBZ4TJ XZWICQ2",
"p56ioi7mzjnu2iqgdreydm2mgtmgl3bxnpq6w5btbbz4tjxzwicq", "P56IOI7MZJNU2IQGDREYDM2MGTMGL3BXNPQ6W5BTBBZ4TJXZWICQ",
"P56IOI7MZJNU2YIQGDREYDM2MGTIMGL3BXNPQ6W5BMTBBZ4TJXZWICQ2", "p56ioi7mzjnu2iqgdreydm2mgtmgl3bxnpq6w5btbbz4tjxzwicq",
"P561017MZJNU2YIQGDREYDM2MGTIMGL3BXNPQ6W5BMT88Z4TJXZWICQ2", "P56IOI7MZJNU2YIQGDREYDM2MGTIMGL3BXNPQ6W5BMTBBZ4TJXZWICQ2",
"p56ioi7mzjnu2yiqgdreydm2mgtimgl3bxnpq6w5bmtbbz4tjxzwicq2", "P561017MZJNU2YIQGDREYDM2MGTIMGL3BXNPQ6W5BMT88Z4TJXZWICQ2",
"p561017mzjnu2yiqgdreydm2mgtimgl3bxnpq6w5bmt88z4tjxzwicq2", "p56ioi7mzjnu2yiqgdreydm2mgtimgl3bxnpq6w5bmtbbz4tjxzwicq2",
} "p561017mzjnu2yiqgdreydm2mgtimgl3bxnpq6w5bmt88z4tjxzwicq2",
}
)
func TestFormatDeviceID(t *testing.T) { func TestFormatDeviceID(t *testing.T) {
for i, tc := range formatCases { for i, tc := range formatCases {

View File

@@ -10,6 +10,4 @@ import (
"github.com/syncthing/syncthing/lib/logger" "github.com/syncthing/syncthing/lib/logger"
) )
var ( var l = logger.DefaultLogger.NewFacility("rc", "Remote control package")
l = logger.DefaultLogger.NewFacility("rc", "Remote control package")
)

View File

@@ -6,6 +6,4 @@ import (
"github.com/syncthing/syncthing/lib/logger" "github.com/syncthing/syncthing/lib/logger"
) )
var ( var l = logger.DefaultLogger.NewFacility("relay", "")
l = logger.DefaultLogger.NewFacility("relay", "")
)

View File

@@ -29,9 +29,11 @@ type header struct {
messageLength int32 messageLength int32
} }
type Ping struct{} type (
type Pong struct{} Ping struct{}
type RelayFull struct{} Pong struct{}
RelayFull struct{}
)
type JoinRelayRequest struct { type JoinRelayRequest struct {
Token string Token string

View File

@@ -60,6 +60,7 @@ func (o *header) UnmarshalXDR(bs []byte) error {
u := &xdr.Unmarshaller{Data: bs} u := &xdr.Unmarshaller{Data: bs}
return o.UnmarshalXDRFrom(u) return o.UnmarshalXDRFrom(u)
} }
func (o *header) UnmarshalXDRFrom(u *xdr.Unmarshaller) error { func (o *header) UnmarshalXDRFrom(u *xdr.Unmarshaller) error {
o.magic = u.UnmarshalUint32() o.magic = u.UnmarshalUint32()
o.messageType = int32(u.UnmarshalUint32()) o.messageType = int32(u.UnmarshalUint32())
@@ -81,6 +82,7 @@ struct Ping {
func (Ping) XDRSize() int { func (Ping) XDRSize() int {
return 0 return 0
} }
func (Ping) MarshalXDR() ([]byte, error) { func (Ping) MarshalXDR() ([]byte, error) {
return nil, nil return nil, nil
} }
@@ -115,6 +117,7 @@ struct Pong {
func (Pong) XDRSize() int { func (Pong) XDRSize() int {
return 0 return 0
} }
func (Pong) MarshalXDR() ([]byte, error) { func (Pong) MarshalXDR() ([]byte, error) {
return nil, nil return nil, nil
} }
@@ -149,6 +152,7 @@ struct RelayFull {
func (RelayFull) XDRSize() int { func (RelayFull) XDRSize() int {
return 0 return 0
} }
func (RelayFull) MarshalXDR() ([]byte, error) { func (RelayFull) MarshalXDR() ([]byte, error) {
return nil, nil return nil, nil
} }
@@ -215,6 +219,7 @@ func (o *JoinRelayRequest) UnmarshalXDR(bs []byte) error {
u := &xdr.Unmarshaller{Data: bs} u := &xdr.Unmarshaller{Data: bs}
return o.UnmarshalXDRFrom(u) return o.UnmarshalXDRFrom(u)
} }
func (o *JoinRelayRequest) UnmarshalXDRFrom(u *xdr.Unmarshaller) error { func (o *JoinRelayRequest) UnmarshalXDRFrom(u *xdr.Unmarshaller) error {
o.Token = u.UnmarshalString() o.Token = u.UnmarshalString()
return u.Error return u.Error
@@ -269,6 +274,7 @@ func (o *JoinSessionRequest) UnmarshalXDR(bs []byte) error {
u := &xdr.Unmarshaller{Data: bs} u := &xdr.Unmarshaller{Data: bs}
return o.UnmarshalXDRFrom(u) return o.UnmarshalXDRFrom(u)
} }
func (o *JoinSessionRequest) UnmarshalXDRFrom(u *xdr.Unmarshaller) error { func (o *JoinSessionRequest) UnmarshalXDRFrom(u *xdr.Unmarshaller) error {
o.Key = u.UnmarshalBytesMax(32) o.Key = u.UnmarshalBytesMax(32)
return u.Error return u.Error
@@ -325,6 +331,7 @@ func (o *Response) UnmarshalXDR(bs []byte) error {
u := &xdr.Unmarshaller{Data: bs} u := &xdr.Unmarshaller{Data: bs}
return o.UnmarshalXDRFrom(u) return o.UnmarshalXDRFrom(u)
} }
func (o *Response) UnmarshalXDRFrom(u *xdr.Unmarshaller) error { func (o *Response) UnmarshalXDRFrom(u *xdr.Unmarshaller) error {
o.Code = int32(u.UnmarshalUint32()) o.Code = int32(u.UnmarshalUint32())
o.Message = u.UnmarshalString() o.Message = u.UnmarshalString()
@@ -380,6 +387,7 @@ func (o *ConnectRequest) UnmarshalXDR(bs []byte) error {
u := &xdr.Unmarshaller{Data: bs} u := &xdr.Unmarshaller{Data: bs}
return o.UnmarshalXDRFrom(u) return o.UnmarshalXDRFrom(u)
} }
func (o *ConnectRequest) UnmarshalXDRFrom(u *xdr.Unmarshaller) error { func (o *ConnectRequest) UnmarshalXDRFrom(u *xdr.Unmarshaller) error {
o.ID = u.UnmarshalBytesMax(32) o.ID = u.UnmarshalBytesMax(32)
return u.Error return u.Error
@@ -462,6 +470,7 @@ func (o *SessionInvitation) UnmarshalXDR(bs []byte) error {
u := &xdr.Unmarshaller{Data: bs} u := &xdr.Unmarshaller{Data: bs}
return o.UnmarshalXDRFrom(u) return o.UnmarshalXDRFrom(u)
} }
func (o *SessionInvitation) UnmarshalXDRFrom(u *xdr.Unmarshaller) error { func (o *SessionInvitation) UnmarshalXDRFrom(u *xdr.Unmarshaller) error {
o.From = u.UnmarshalBytesMax(32) o.From = u.UnmarshalBytesMax(32)
o.Key = u.UnmarshalBytesMax(32) o.Key = u.UnmarshalBytesMax(32)

View File

@@ -27,43 +27,67 @@ var blocksTestData = []struct {
hash []string hash []string
weakhash []uint32 weakhash []uint32
}{ }{
{[]byte(""), 1024, []string{ {
"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"}, []byte(""), 1024,
[]string{
"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
},
[]uint32{0}, []uint32{0},
}, },
{[]byte("contents"), 1024, []string{ {
"d1b2a59fbea7e20077af9f91b27e95e865061b270be03ff539ab3b73587882e8"}, []byte("contents"), 1024,
[]string{
"d1b2a59fbea7e20077af9f91b27e95e865061b270be03ff539ab3b73587882e8",
},
[]uint32{0x0f3a036f}, []uint32{0x0f3a036f},
}, },
{[]byte("contents"), 9, []string{ {
"d1b2a59fbea7e20077af9f91b27e95e865061b270be03ff539ab3b73587882e8"}, []byte("contents"), 9,
[]string{
"d1b2a59fbea7e20077af9f91b27e95e865061b270be03ff539ab3b73587882e8",
},
[]uint32{0x0f3a036f}, []uint32{0x0f3a036f},
}, },
{[]byte("contents"), 8, []string{ {
"d1b2a59fbea7e20077af9f91b27e95e865061b270be03ff539ab3b73587882e8"}, []byte("contents"), 8,
[]string{
"d1b2a59fbea7e20077af9f91b27e95e865061b270be03ff539ab3b73587882e8",
},
[]uint32{0x0f3a036f}, []uint32{0x0f3a036f},
}, },
{[]byte("contents"), 7, []string{ {
"ed7002b439e9ac845f22357d822bac1444730fbdb6016d3ec9432297b9ec9f73", []byte("contents"), 7,
"043a718774c572bd8a25adbeb1bfcd5c0256ae11cecf9f9c3f925d0e52beaf89"}, []string{
"ed7002b439e9ac845f22357d822bac1444730fbdb6016d3ec9432297b9ec9f73",
"043a718774c572bd8a25adbeb1bfcd5c0256ae11cecf9f9c3f925d0e52beaf89",
},
[]uint32{0x0bcb02fc, 0x00740074}, []uint32{0x0bcb02fc, 0x00740074},
}, },
{[]byte("contents"), 3, []string{ {
"1143da2bc54c495c4be31d3868785d39ffdfd56df5668f0645d8f14d47647952", []byte("contents"), 3,
"e4432baa90819aaef51d2a7f8e148bf7e679610f3173752fabb4dcb2d0f418d3", []string{
"44ad63f60af0f6db6fdde6d5186ef78176367df261fa06be3079b6c80c8adba4"}, "1143da2bc54c495c4be31d3868785d39ffdfd56df5668f0645d8f14d47647952",
"e4432baa90819aaef51d2a7f8e148bf7e679610f3173752fabb4dcb2d0f418d3",
"44ad63f60af0f6db6fdde6d5186ef78176367df261fa06be3079b6c80c8adba4",
},
[]uint32{0x02780141, 0x02970148, 0x015d00e8}, []uint32{0x02780141, 0x02970148, 0x015d00e8},
}, },
{[]byte("conconts"), 3, []string{ {
"1143da2bc54c495c4be31d3868785d39ffdfd56df5668f0645d8f14d47647952", []byte("conconts"), 3,
"1143da2bc54c495c4be31d3868785d39ffdfd56df5668f0645d8f14d47647952", []string{
"44ad63f60af0f6db6fdde6d5186ef78176367df261fa06be3079b6c80c8adba4"}, "1143da2bc54c495c4be31d3868785d39ffdfd56df5668f0645d8f14d47647952",
"1143da2bc54c495c4be31d3868785d39ffdfd56df5668f0645d8f14d47647952",
"44ad63f60af0f6db6fdde6d5186ef78176367df261fa06be3079b6c80c8adba4",
},
[]uint32{0x02780141, 0x02780141, 0x015d00e8}, []uint32{0x02780141, 0x02780141, 0x015d00e8},
}, },
{[]byte("contenten"), 3, []string{ {
"1143da2bc54c495c4be31d3868785d39ffdfd56df5668f0645d8f14d47647952", []byte("contenten"), 3,
"e4432baa90819aaef51d2a7f8e148bf7e679610f3173752fabb4dcb2d0f418d3", []string{
"e4432baa90819aaef51d2a7f8e148bf7e679610f3173752fabb4dcb2d0f418d3"}, "1143da2bc54c495c4be31d3868785d39ffdfd56df5668f0645d8f14d47647952",
"e4432baa90819aaef51d2a7f8e148bf7e679610f3173752fabb4dcb2d0f418d3",
"e4432baa90819aaef51d2a7f8e148bf7e679610f3173752fabb4dcb2d0f418d3",
},
[]uint32{0x02780141, 0x02970148, 0x02970148}, []uint32{0x02780141, 0x02970148, 0x02970148},
}, },
} }
@@ -72,7 +96,6 @@ func TestBlocks(t *testing.T) {
for testNo, test := range blocksTestData { for testNo, test := range blocksTestData {
buf := bytes.NewBuffer(test.data) buf := bytes.NewBuffer(test.data)
blocks, err := Blocks(context.TODO(), buf, test.blocksize, -1, nil, true) blocks, err := Blocks(context.TODO(), buf, test.blocksize, -1, nil, true)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }

View File

@@ -10,6 +10,4 @@ import (
"github.com/syncthing/syncthing/lib/logger" "github.com/syncthing/syncthing/lib/logger"
) )
var ( var l = logger.DefaultLogger.NewFacility("scanner", "File change detection and hashing")
l = logger.DefaultLogger.NewFacility("scanner", "File change detection and hashing")
)

View File

@@ -10,6 +10,4 @@ import (
"github.com/syncthing/syncthing/lib/logger" "github.com/syncthing/syncthing/lib/logger"
) )
var ( var l = logger.DefaultLogger.NewFacility("stats", "Persistent device and folder statistics")
l = logger.DefaultLogger.NewFacility("stats", "Persistent device and folder statistics")
)

View File

@@ -10,6 +10,4 @@ import (
"github.com/syncthing/syncthing/lib/logger" "github.com/syncthing/syncthing/lib/logger"
) )
var ( var l = logger.DefaultLogger.NewFacility("stun", "STUN functionality")
l = logger.DefaultLogger.NewFacility("stun", "STUN functionality")
)

View File

@@ -10,9 +10,7 @@ import (
"github.com/syncthing/syncthing/lib/logger" "github.com/syncthing/syncthing/lib/logger"
) )
var ( var l = logger.DefaultLogger.NewFacility("app", "Main run facility")
l = logger.DefaultLogger.NewFacility("app", "Main run facility")
)
func shouldDebug() bool { func shouldDebug() bool {
return l.ShouldDebug("app") return l.ShouldDebug("app")

View File

@@ -33,7 +33,7 @@ func EnsureDir(dir string, mode fs.FileMode) error {
// Apparently the stat may fail even though the mkdirall passed. If it // Apparently the stat may fail even though the mkdirall passed. If it
// does, we'll just assume things are in order and let other things // does, we'll just assume things are in order and let other things
// fail (like loading or creating the config...). // fail (like loading or creating the config...).
currentMode := fi.Mode() & 0777 currentMode := fi.Mode() & 0o777
if currentMode != mode { if currentMode != mode {
err := fs.Chmod(".", mode) err := fs.Chmod(".", mode)
// This can fail on crappy filesystems, nothing we can do about it. // This can fail on crappy filesystems, nothing we can do about it.
@@ -139,7 +139,7 @@ func copyFile(src, dst string) error {
return err return err
} }
if err := os.WriteFile(dst, bs, 0600); err != nil { if err := os.WriteFile(dst, bs, 0o600); err != nil {
// Attempt to clean up // Attempt to clean up
os.Remove(dst) os.Remove(dst)
return err return err

View File

@@ -10,6 +10,4 @@ import (
"github.com/syncthing/syncthing/lib/logger" "github.com/syncthing/syncthing/lib/logger"
) )
var ( var l = logger.DefaultLogger.NewFacility("upgrade", "Binary upgrades")
l = logger.DefaultLogger.NewFacility("upgrade", "Binary upgrades")
)

View File

@@ -10,6 +10,4 @@ import (
"github.com/syncthing/syncthing/lib/logger" "github.com/syncthing/syncthing/lib/logger"
) )
var ( var l = logger.DefaultLogger.NewFacility("upnp", "UPnP discovery and port mapping")
l = logger.DefaultLogger.NewFacility("upnp", "UPnP discovery and port mapping")
)

View File

@@ -210,7 +210,6 @@ USER-AGENT: syncthing/%s
proto = "udp6" proto = "udp6"
} }
socket, err := net.ListenMulticastUDP(proto, intf, &net.UDPAddr{IP: ssdp.IP}) socket, err := net.ListenMulticastUDP(proto, intf, &net.UDPAddr{IP: ssdp.IP})
if err != nil { if err != nil {
if runtime.GOOS == "windows" && ip6 { if runtime.GOOS == "windows" && ip6 {
// Requires https://github.com/golang/go/issues/63529 to be fixed. // Requires https://github.com/golang/go/issues/63529 to be fixed.
@@ -257,7 +256,7 @@ loop:
if e, ok := err.(net.Error); ok && e.Timeout() { if e, ok := err.(net.Error); ok && e.Timeout() {
continue // continue reading continue // continue reading
} }
l.Infoln("UPnP read:", err) //legitimate error, not a timeout. l.Infoln("UPnP read:", err) // legitimate error, not a timeout.
break break
} }
@@ -411,7 +410,6 @@ func localIPv4Fallback(ctx context.Context, url *url.URL) (net.IP, error) {
defer cancel() defer cancel()
conn, err := dialer.DialContext(timeoutCtx, "udp4", url.Host) conn, err := dialer.DialContext(timeoutCtx, "udp4", url.Host)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@@ -13,8 +13,7 @@ import (
) )
func TestExternalIPParsing(t *testing.T) { func TestExternalIPParsing(t *testing.T) {
soapResponse := soapResponse := []byte(`<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
[]byte(`<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body> <s:Body>
<u:GetExternalIPAddressResponse xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1"> <u:GetExternalIPAddressResponse xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1">
<NewExternalIPAddress>1.2.3.4</NewExternalIPAddress> <NewExternalIPAddress>1.2.3.4</NewExternalIPAddress>
@@ -34,8 +33,7 @@ func TestExternalIPParsing(t *testing.T) {
} }
func TestSoapFaultParsing(t *testing.T) { func TestSoapFaultParsing(t *testing.T) {
soapResponse := soapResponse := []byte(`<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
[]byte(`<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body> <s:Body>
<s:Fault> <s:Fault>
<faultcode>s:Client</faultcode> <faultcode>s:Client</faultcode>

View File

@@ -10,6 +10,4 @@ import (
"github.com/syncthing/syncthing/lib/logger" "github.com/syncthing/syncthing/lib/logger"
) )
var ( var l = logger.DefaultLogger.NewFacility("ur", "Usage reporting")
l = logger.DefaultLogger.NewFacility("ur", "Usage reporting")
)

View File

@@ -10,6 +10,4 @@ import (
"github.com/syncthing/syncthing/lib/logger" "github.com/syncthing/syncthing/lib/logger"
) )
var ( var l = logger.DefaultLogger.NewFacility("versioner", "File versioning")
l = logger.DefaultLogger.NewFacility("versioner", "File versioning")
)

View File

@@ -27,7 +27,7 @@ import (
// └── remove21 // └── remove21
// └── remove22 // └── remove22
func TestEmptyDirs(t *testing.T) { func TestEmptyDirs(t *testing.T) {
var paths = []struct { paths := []struct {
path string path string
isFile bool isFile bool
}{ }{
@@ -44,7 +44,7 @@ func TestEmptyDirs(t *testing.T) {
{"remove2/remove21/remove22", false}, {"remove2/remove21/remove22", false},
} }
var expected = []string{ expected := []string{
"remove2/remove21/remove22", "remove2/remove21/remove22",
"remove2/remove21", "remove2/remove21",
"remove2", "remove2",

View File

@@ -81,10 +81,10 @@ func prepForRemoval(t *testing.T, file string) {
t.Fatal(err) t.Fatal(err)
} }
if err := os.MkdirAll(filepath.Dir(file), 0755); err != nil { if err := os.MkdirAll(filepath.Dir(file), 0o755); err != nil {
t.Fatal(err) t.Fatal(err)
} }
if err := os.WriteFile(file, []byte("hello\n"), 0644); err != nil { if err := os.WriteFile(file, []byte("hello\n"), 0o644); err != nil {
t.Fatal(err) t.Fatal(err)
} }
} }

View File

@@ -30,7 +30,7 @@ type simple struct {
} }
func newSimple(cfg config.FolderConfiguration) Versioner { func newSimple(cfg config.FolderConfiguration) Versioner {
var keep, err = strconv.Atoi(cfg.Versioning.Params["keep"]) keep, err := strconv.Atoi(cfg.Versioning.Params["keep"])
cleanoutDays, _ := strconv.Atoi(cfg.Versioning.Params["cleanoutDays"]) cleanoutDays, _ := strconv.Atoi(cfg.Versioning.Params["cleanoutDays"])
// On error we default to 0, "do not clean out the versioned items" // On error we default to 0, "do not clean out the versioned items"

View File

@@ -134,7 +134,7 @@ func TestCreateVersionPath(t *testing.T) {
// Create a test dir and file // Create a test dir and file
tmpDir := t.TempDir() tmpDir := t.TempDir()
if err := os.WriteFile(filepath.Join(tmpDir, archiveFile), []byte("sup"), 0644); err != nil { if err := os.WriteFile(filepath.Join(tmpDir, archiveFile), []byte("sup"), 0o644); err != nil {
t.Fatal(err) t.Fatal(err)
} }

View File

@@ -182,7 +182,7 @@ func readFile(t *testing.T, filesystem fs.Filesystem, name string) string {
} }
func writeFile(t *testing.T, filesystem fs.Filesystem, name, content string) { func writeFile(t *testing.T, filesystem fs.Filesystem, name, content string) {
fd, err := filesystem.OpenFile(name, fs.OptReadWrite|fs.OptCreate, 0777) fd, err := filesystem.OpenFile(name, fs.OptReadWrite|fs.OptCreate, 0o777)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -213,7 +213,7 @@ func TestTrashcanCleanOut(t *testing.T) {
v := newTrashcan(cfg) v := newTrashcan(cfg)
var testcases = map[string]bool{ testcases := map[string]bool{
".stversions/file1": false, ".stversions/file1": false,
".stversions/file2": true, ".stversions/file2": true,
".stversions/keep1/file1": false, ".stversions/keep1/file1": false,
@@ -229,7 +229,7 @@ func TestTrashcanCleanOut(t *testing.T) {
t.Run("trashcan versioner trashcan clean up", func(t *testing.T) { t.Run("trashcan versioner trashcan clean up", func(t *testing.T) {
oldTime := time.Now().Add(-8 * 24 * time.Hour) oldTime := time.Now().Add(-8 * 24 * time.Hour)
for file, shouldRemove := range testcases { for file, shouldRemove := range testcases {
fs.MkdirAll(filepath.Dir(file), 0777) fs.MkdirAll(filepath.Dir(file), 0o777)
writeFile(t, fs, file, "some content") writeFile(t, fs, file, "some content")

View File

@@ -10,6 +10,4 @@ import (
"github.com/syncthing/syncthing/lib/logger" "github.com/syncthing/syncthing/lib/logger"
) )
var ( var l = logger.DefaultLogger.NewFacility("watchaggregator", "Filesystem event watcher")
l = logger.DefaultLogger.NewFacility("watchaggregator", "Filesystem event watcher")
)

View File

@@ -23,8 +23,10 @@ import (
"github.com/chmduquesne/rollinghash/buzhash64" "github.com/chmduquesne/rollinghash/buzhash64"
) )
const testFile = "../model/testdata/tmpfile" const (
const size = 128 << 10 testFile = "../model/testdata/tmpfile"
size = 128 << 10
)
func BenchmarkFind1MFile(b *testing.B) { func BenchmarkFind1MFile(b *testing.B) {
b.ReportAllocs() b.ReportAllocs()
@@ -96,7 +98,6 @@ func BenchmarkBlock(b *testing.B) {
bbb.SetBytes(testSize) bbb.SetBytes(testSize)
bbb.ReportAllocs() bbb.ReportAllocs()
}) })
}) })
} }
} }
@@ -144,7 +145,6 @@ func BenchmarkRoll(b *testing.B) {
bbb.SetBytes(testSize) bbb.SetBytes(testSize)
bbb.ReportAllocs() bbb.ReportAllocs()
}) })
}) })
} }
} }

View File

@@ -65,5 +65,4 @@ func walk(w *csv.Writer, prefix string, data interface{}) {
}) })
} }
} }
} }

View File

@@ -119,7 +119,7 @@ func main() {
bs := readAll(htmlFile) bs := readAll(htmlFile)
bs = authorsRe.ReplaceAll(bs, []byte("id=\"contributor-list\">\n"+replacement+"\n </div>")) bs = authorsRe.ReplaceAll(bs, []byte("id=\"contributor-list\">\n"+replacement+"\n </div>"))
if err := os.WriteFile(htmlFile, bs, 0644); err != nil { if err := os.WriteFile(htmlFile, bs, 0o644); err != nil {
log.Fatal(err) log.Fatal(err)
} }

View File

@@ -21,9 +21,11 @@ import (
"golang.org/x/net/html" "golang.org/x/net/html"
) )
var trans = make(map[string]interface{}) var (
var attrRe = regexp.MustCompile(`\{\{\s*'([^']+)'\s+\|\s+translate\s*\}\}`) trans = make(map[string]interface{})
var attrReCond = regexp.MustCompile(`\{\{.+\s+\?\s+'([^']+)'\s+:\s+'([^']+)'\s+\|\s+translate\s*\}\}`) attrRe = regexp.MustCompile(`\{\{\s*'([^']+)'\s+\|\s+translate\s*\}\}`)
attrReCond = regexp.MustCompile(`\{\{.+\s+\?\s+'([^']+)'\s+:\s+'([^']+)'\s+\|\s+translate\s*\}\}`)
)
// Find both $translate.instant("…") and $translate.instant("…",…) in JS. // Find both $translate.instant("…") and $translate.instant("…",…) in JS.
// Consider single quote variants too. // Consider single quote variants too.
@@ -204,7 +206,7 @@ func main() {
} }
fd.Close() fd.Close()
var guiDir = os.Args[2] guiDir := os.Args[2]
filepath.Walk(guiDir, walkerFor(guiDir)) filepath.Walk(guiDir, walkerFor(guiDir))
collectThemes(guiDir) collectThemes(guiDir)

View File

@@ -23,7 +23,7 @@ func TestCLIReset(t *testing.T) {
// Create directories that reset will remove // Create directories that reset will remove
for _, dir := range dirs { for _, dir := range dirs {
err := os.Mkdir(dir, 0755) err := os.Mkdir(dir, 0o755)
if err != nil && !os.IsExist(err) { if err != nil && !os.IsExist(err) {
t.Fatal(err) t.Fatal(err)
} }

View File

@@ -87,7 +87,7 @@ func TestConflictsDefault(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
fd, err = os.OpenFile("s1/testfile.txt", os.O_WRONLY|os.O_APPEND, 0644) fd, err = os.OpenFile("s1/testfile.txt", os.O_WRONLY|os.O_APPEND, 0o644)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -100,7 +100,7 @@ func TestConflictsDefault(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
fd, err = os.OpenFile("s2/testfile.txt", os.O_WRONLY|os.O_APPEND, 0644) fd, err = os.OpenFile("s2/testfile.txt", os.O_WRONLY|os.O_APPEND, 0o644)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -150,7 +150,7 @@ func TestConflictsDefault(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
fd, err = os.OpenFile("s2/testfile.txt", os.O_WRONLY|os.O_APPEND, 0644) fd, err = os.OpenFile("s2/testfile.txt", os.O_WRONLY|os.O_APPEND, 0o644)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -204,37 +204,37 @@ func TestConflictsInitialMerge(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
err = os.Mkdir("s1", 0755) err = os.Mkdir("s1", 0o755)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
err = os.Mkdir("s2", 0755) err = os.Mkdir("s2", 0o755)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
// File 1 is a conflict // File 1 is a conflict
err = os.WriteFile("s1/file1", []byte("hello\n"), 0644) err = os.WriteFile("s1/file1", []byte("hello\n"), 0o644)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
err = os.WriteFile("s2/file1", []byte("goodbye\n"), 0644) err = os.WriteFile("s2/file1", []byte("goodbye\n"), 0o644)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
// File 2 exists on s1 only // File 2 exists on s1 only
err = os.WriteFile("s1/file2", []byte("hello\n"), 0644) err = os.WriteFile("s1/file2", []byte("hello\n"), 0o644)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
// File 3 exists on s2 only // File 3 exists on s2 only
err = os.WriteFile("s2/file3", []byte("goodbye\n"), 0644) err = os.WriteFile("s2/file3", []byte("goodbye\n"), 0o644)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -303,26 +303,26 @@ func TestConflictsIndexReset(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
err = os.Mkdir("s1", 0755) err = os.Mkdir("s1", 0o755)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
err = os.Mkdir("s2", 0755) err = os.Mkdir("s2", 0o755)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
// Three files on s1 // Three files on s1
err = os.WriteFile("s1/file1", []byte("hello\n"), 0644) err = os.WriteFile("s1/file1", []byte("hello\n"), 0o644)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
err = os.WriteFile("s1/file2", []byte("hello\n"), 0644) err = os.WriteFile("s1/file2", []byte("hello\n"), 0o644)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
err = os.WriteFile("s2/file3", []byte("hello\n"), 0644) err = os.WriteFile("s2/file3", []byte("hello\n"), 0o644)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -370,7 +370,7 @@ func TestConflictsIndexReset(t *testing.T) {
// locally after we rest the index, unless we have a fix for that. // locally after we rest the index, unless we have a fix for that.
for i := 0; i < 5; i++ { for i := 0; i < 5; i++ {
err = os.WriteFile("s2/file2", []byte("hello1\n"), 0644) err = os.WriteFile("s2/file2", []byte("hello1\n"), 0o644)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -392,7 +392,7 @@ func TestConflictsIndexReset(t *testing.T) {
// s1/file1 (remote) changes while receiver is down // s1/file1 (remote) changes while receiver is down
err = os.WriteFile("s1/file1", []byte("goodbye\n"), 0644) err = os.WriteFile("s1/file1", []byte("goodbye\n"), 0o644)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -405,7 +405,7 @@ func TestConflictsIndexReset(t *testing.T) {
// s2/file2 (local) changes while receiver is down // s2/file2 (local) changes while receiver is down
err = os.WriteFile("s2/file2", []byte("goodbye\n"), 0644) err = os.WriteFile("s2/file2", []byte("goodbye\n"), 0o644)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -456,33 +456,33 @@ func TestConflictsSameContent(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
err = os.Mkdir("s1", 0755) err = os.Mkdir("s1", 0o755)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
err = os.Mkdir("s2", 0755) err = os.Mkdir("s2", 0o755)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
// Two files on s1 // Two files on s1
err = os.WriteFile("s1/file1", []byte("hello\n"), 0644) err = os.WriteFile("s1/file1", []byte("hello\n"), 0o644)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
err = os.WriteFile("s1/file2", []byte("hello\n"), 0644) err = os.WriteFile("s1/file2", []byte("hello\n"), 0o644)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
// Two files on s2, content differs in file1 only, timestamps differ on both. // Two files on s2, content differs in file1 only, timestamps differ on both.
err = os.WriteFile("s2/file1", []byte("goodbye\n"), 0644) err = os.WriteFile("s2/file1", []byte("goodbye\n"), 0o644)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
err = os.WriteFile("s2/file2", []byte("hello\n"), 0644) err = os.WriteFile("s2/file2", []byte("hello\n"), 0o644)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }

View File

@@ -31,7 +31,7 @@ func TestRescanWithDelay(t *testing.T) {
} }
log.Println("Generating .stignore...") log.Println("Generating .stignore...")
err = os.WriteFile("s1/.stignore", []byte("some ignore data\n"), 0644) err = os.WriteFile("s1/.stignore", []byte("some ignore data\n"), 0o644)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }

View File

@@ -90,14 +90,14 @@ func testFileTypeChange(t *testing.T) {
// A directory that we will replace with a file later // A directory that we will replace with a file later
err = os.Mkdir("s1/emptyDirToReplace", 0755) err = os.Mkdir("s1/emptyDirToReplace", 0o755)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
// A directory with files that we will replace with a file later // A directory with files that we will replace with a file later
err = os.Mkdir("s1/dirToReplace", 0755) err = os.Mkdir("s1/dirToReplace", 0o755)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -141,7 +141,7 @@ func testFileTypeChange(t *testing.T) {
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
err = os.Mkdir("s1/fileToReplace", 0755) err = os.Mkdir("s1/fileToReplace", 0o755)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }

View File

@@ -223,7 +223,7 @@ func setupAPIBench() *rc.Process {
panic(err) panic(err)
} }
err = os.WriteFile("s1/knownfile", []byte("somedatahere"), 0644) err = os.WriteFile("s1/knownfile", []byte("somedatahere"), 0o644)
if err != nil { if err != nil {
panic(err) panic(err)
} }

View File

@@ -35,7 +35,7 @@ func TestIgnores(t *testing.T) {
files := []string{"f1", "f2", "f3", "f4", "f11", "f12", "f13", "f14", "d1/f1.TXT"} files := []string{"f1", "f2", "f3", "f4", "f11", "f12", "f13", "f14", "d1/f1.TXT"}
for _, dir := range dirs { for _, dir := range dirs {
err := os.Mkdir(filepath.Join("s1", dir), 0755) err := os.Mkdir(filepath.Join("s1", dir), 0o755)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -68,7 +68,7 @@ func TestIgnores(t *testing.T) {
err = os.WriteFile("s1/.stignore", err = os.WriteFile("s1/.stignore",
[]byte("f1*\nf2\nd1*\nd2\ns1*\ns2\n(?i)*.txt"), // [fds][34] only non-ignored items []byte("f1*\nf2\nd1*\nd2\ns1*\ns2\n(?i)*.txt"), // [fds][34] only non-ignored items
0644) 0o644)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -91,7 +91,7 @@ func TestIgnores(t *testing.T) {
// Change the pattern to include some of the files and dirs previously ignored // Change the pattern to include some of the files and dirs previously ignored
time.Sleep(1100 * time.Millisecond) time.Sleep(1100 * time.Millisecond)
err = os.WriteFile("s1/.stignore", []byte("f2\nd2\ns2\n"), 0644) err = os.WriteFile("s1/.stignore", []byte("f2\nd2\ns2\n"), 0o644)
// Rescan and verify that we see them // Rescan and verify that we see them

View File

@@ -90,7 +90,7 @@ func TestOverride(t *testing.T) {
log.Println("Changing file on sendRecv side...") log.Println("Changing file on sendRecv side...")
fd, err = os.OpenFile("s2/testfile.txt", os.O_WRONLY|os.O_APPEND, 0644) fd, err = os.OpenFile("s2/testfile.txt", os.O_WRONLY|os.O_APPEND, 0o644)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }

View File

@@ -31,7 +31,7 @@ func TestRescanInParallel(t *testing.T) {
} }
log.Println("Generating .stignore...") log.Println("Generating .stignore...")
err = os.WriteFile("s1/.stignore", []byte("some ignore data\n"), 0644) err = os.WriteFile("s1/.stignore", []byte("some ignore data\n"), 0o644)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }

View File

@@ -28,7 +28,7 @@ func TestReset(t *testing.T) {
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
if err := os.Mkdir("s1", 0755); err != nil { if err := os.Mkdir("s1", 0o755); err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -53,7 +53,7 @@ func TestReset(t *testing.T) {
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
if err := os.Mkdir("s1", 0755); err != nil { if err := os.Mkdir("s1", 0o755); err != nil {
t.Fatal(err) t.Fatal(err)
} }
if fd, err := os.Create("s1/.stfolder"); err != nil { if fd, err := os.Create("s1/.stfolder"); err != nil {
@@ -146,7 +146,7 @@ func createFiles(t *testing.T) int {
const n = 8 const n = 8
for i := 0; i < n; i++ { for i := 0; i < n; i++ {
file := fmt.Sprintf("f%d", i) file := fmt.Sprintf("f%d", i)
if err := os.WriteFile(filepath.Join("s1", file), []byte("data"), 0644); err != nil { if err := os.WriteFile(filepath.Join("s1", file), []byte("data"), 0o644); err != nil {
t.Fatal(err) t.Fatal(err)
} }
} }

View File

@@ -82,7 +82,7 @@ func TestScanSubdir(t *testing.T) {
// 2 // 2
log.Println("Creating a file in an unknown directory") log.Println("Creating a file in an unknown directory")
os.MkdirAll("s1/filetest", 0755) os.MkdirAll("s1/filetest", 0o755)
if fd, err := os.Create("s1/filetest/file1.txt"); err != nil { if fd, err := os.Create("s1/filetest/file1.txt"); err != nil {
t.Fatal(err) t.Fatal(err)
} else { } else {
@@ -101,7 +101,7 @@ func TestScanSubdir(t *testing.T) {
// 3 // 3
log.Println("Creating a file in an unknown deep directory") log.Println("Creating a file in an unknown deep directory")
os.MkdirAll("s1/filetest/1/2/3/4/5/6/7", 0755) os.MkdirAll("s1/filetest/1/2/3/4/5/6/7", 0o755)
if fd, err := os.Create("s1/filetest/1/2/3/4/5/6/7/file1.txt"); err != nil { if fd, err := os.Create("s1/filetest/1/2/3/4/5/6/7/file1.txt"); err != nil {
t.Fatal(err) t.Fatal(err)
} else { } else {
@@ -120,7 +120,7 @@ func TestScanSubdir(t *testing.T) {
// 4 // 4
log.Println("Creating a directory in an unknown directory") log.Println("Creating a directory in an unknown directory")
err = os.MkdirAll("s1/dirtest/1/2/3/4/5/6/7", 0755) err = os.MkdirAll("s1/dirtest/1/2/3/4/5/6/7", 0o755)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }

View File

@@ -102,7 +102,7 @@ func testSymlinks(t *testing.T) {
// A directory that we will replace with a symlink later // A directory that we will replace with a symlink later
err = os.Mkdir("s1/dirToReplace", 0755) err = os.Mkdir("s1/dirToReplace", 0o755)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -121,7 +121,7 @@ func testSymlinks(t *testing.T) {
// A directory and a symlink to that directory // A directory and a symlink to that directory
err = os.Mkdir("s1/dir", 0755) err = os.Mkdir("s1/dir", 0o755)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -218,7 +218,7 @@ func testSymlinks(t *testing.T) {
log.Fatal(err) log.Fatal(err)
} }
err = os.Mkdir("s1/repDirLink", 0755) err = os.Mkdir("s1/repDirLink", 0o755)
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }

View File

@@ -203,7 +203,7 @@ func TestSyncCluster(t *testing.T) {
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
fd, err := os.OpenFile("s1/test-appendfile", os.O_APPEND|os.O_WRONLY, 0644) fd, err := os.OpenFile("s1/test-appendfile", os.O_APPEND|os.O_WRONLY, 0o644)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -326,7 +326,7 @@ func TestSyncSparseFile(t *testing.T) {
log.Println("Generating files...") log.Println("Generating files...")
if err := os.Mkdir("s1", 0755); err != nil { if err := os.Mkdir("s1", 0o755); err != nil {
t.Fatal(err) t.Fatal(err)
} }

View File

@@ -26,18 +26,23 @@ func TestBenchmarkTransferManyFiles(t *testing.T) {
func TestBenchmarkTransferLargeFile1G(t *testing.T) { func TestBenchmarkTransferLargeFile1G(t *testing.T) {
setupAndBenchmarkTransfer(t, 1, 30) setupAndBenchmarkTransfer(t, 1, 30)
} }
func TestBenchmarkTransferLargeFile2G(t *testing.T) { func TestBenchmarkTransferLargeFile2G(t *testing.T) {
setupAndBenchmarkTransfer(t, 1, 31) setupAndBenchmarkTransfer(t, 1, 31)
} }
func TestBenchmarkTransferLargeFile4G(t *testing.T) { func TestBenchmarkTransferLargeFile4G(t *testing.T) {
setupAndBenchmarkTransfer(t, 1, 32) setupAndBenchmarkTransfer(t, 1, 32)
} }
func TestBenchmarkTransferLargeFile8G(t *testing.T) { func TestBenchmarkTransferLargeFile8G(t *testing.T) {
setupAndBenchmarkTransfer(t, 1, 33) setupAndBenchmarkTransfer(t, 1, 33)
} }
func TestBenchmarkTransferLargeFile16G(t *testing.T) { func TestBenchmarkTransferLargeFile16G(t *testing.T) {
setupAndBenchmarkTransfer(t, 1, 34) setupAndBenchmarkTransfer(t, 1, 34)
} }
func TestBenchmarkTransferLargeFile32G(t *testing.T) { func TestBenchmarkTransferLargeFile32G(t *testing.T) {
setupAndBenchmarkTransfer(t, 1, 35) setupAndBenchmarkTransfer(t, 1, 35)
} }
@@ -54,7 +59,7 @@ func setupAndBenchmarkTransfer(t *testing.T, files, sizeExp int) {
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
err = os.MkdirAll("s1", 0755) err = os.MkdirAll("s1", 0o755)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }

View File

@@ -60,7 +60,7 @@ func generateFilesWithTime(dir string, files, maxexp int, srcname string, t0 tim
} }
p0 := filepath.Join(dir, string(n[0]), n[0:2]) p0 := filepath.Join(dir, string(n[0]), n[0:2])
err = os.MkdirAll(p0, 0755) err = os.MkdirAll(p0, 0o755)
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
@@ -99,7 +99,7 @@ func generateOneFile(fd io.ReadSeeker, p1 string, s int64, t0 time.Time) error {
return err return err
} }
os.Chmod(p1, os.FileMode(rand.Intn(0777)|0400)) os.Chmod(p1, os.FileMode(rand.Intn(0o777)|0o400))
t := t0.Add(-time.Duration(rand.Intn(30*86400)) * time.Second) t := t0.Add(-time.Duration(rand.Intn(30*86400)) * time.Second)
err = os.Chtimes(p1, t, t) err = os.Chtimes(p1, t, t)
@@ -149,15 +149,15 @@ func alterFiles(dir string) error {
return removeAll(path) return removeAll(path)
case r == 1 && info.Mode().IsRegular(): case r == 1 && info.Mode().IsRegular():
if info.Mode()&0200 != 0200 { if info.Mode()&0o200 != 0o200 {
// Not owner writable. Fix. // Not owner writable. Fix.
if err = os.Chmod(path, 0644); err != nil { if err = os.Chmod(path, 0o644); err != nil {
return err return err
} }
} }
// Overwrite a random kilobyte of every tenth file // Overwrite a random kilobyte of every tenth file
fd, err := os.OpenFile(path, os.O_RDWR, 0644) fd, err := os.OpenFile(path, os.O_RDWR, 0o644)
if err != nil { if err != nil {
return err return err
} }
@@ -291,8 +291,8 @@ func removeAll(dirs ...string) error {
if err != nil { if err != nil {
return err return err
} }
if info.Mode()&0700 != 0700 { if info.Mode()&0o700 != 0o700 {
os.Chmod(path, 0777) os.Chmod(path, 0o777)
} }
return nil return nil
}) })