From afb7e8e2c886c9907f9aee8f9c32baabcbbcf997 Mon Sep 17 00:00:00 2001 From: Simon Ruderich Date: Thu, 13 May 2021 13:40:54 +0200 Subject: [PATCH] safcm: use only slash separated paths for the configuration This change is in preparation to support running synchronizations from Windows systems. However, Windows remotes won't be supported in the foreseeable future. --- cmd/safcm/config/files.go | 7 +++++-- cmd/safcm/sync_sync.go | 4 ++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/cmd/safcm/config/files.go b/cmd/safcm/config/files.go index 8f63770..7ffa8b2 100644 --- a/cmd/safcm/config/files.go +++ b/cmd/safcm/config/files.go @@ -21,7 +21,9 @@ import ( "fmt" "io/fs" "os" + slashpath "path" "path/filepath" + "runtime" "ruderich.org/simon/safcm" ) @@ -84,12 +86,13 @@ via "safcm fixperms". return fmt.Errorf("%q: file type not supported", path) } - // Convert to absolute path as used on the target host + // Convert to absolute and slash-separated path as used on the + // target host x, err := filepath.Rel(basePath, path) if err != nil { return err } - x = filepath.Join("/", x) + x = slashpath.Join("/", filepath.ToSlash(x)) files[x] = &safcm.File{ Path: x, diff --git a/cmd/safcm/sync_sync.go b/cmd/safcm/sync_sync.go index 0d5a722..3f0c30b 100644 --- a/cmd/safcm/sync_sync.go +++ b/cmd/safcm/sync_sync.go @@ -21,7 +21,6 @@ import ( "fmt" "math" "os" - "path/filepath" "sort" "strings" @@ -255,7 +254,8 @@ func resolveFileDirConflicts(files map[string]*safcm.File) { return paths[i] < paths[j] }) - const sep = string(filepath.Separator) + // Slash separated paths are used for the configuration + const sep = "/" // Remove invalid paths which can result from group_priority // overriding paths from another group (e.g. "/foo" as file from one -- 2.45.2