]> ruderich.org/simon Gitweb - safcm/safcm.git/blobdiff - remote/sync/files.go
remote: permit syncing relative paths with leading dot
[safcm/safcm.git] / remote / sync / files.go
index 24c59ce1d0bac7f560249f718677922a929dfa25..a11b77e8107d8265ed33dac5acfeaf8aa89a4e6e 100644 (file)
@@ -458,11 +458,12 @@ reopen:
        }
        // To guarantee durability fsync must be called on a parent directory
        // after adding, renaming or removing files therein.
-//
-// Calling sync on the files itself is not enough according to POSIX; man 2
-// fsync: "Calling fsync() does not necessarily ensure that the entry in the
-// directory containing the file has also reached disk. For that an explicit
-// fsync() on a file descriptor for the directory is also needed."
+       //
+       // Calling sync on the files itself is not enough according to POSIX;
+       // man 2 fsync: "Calling fsync() does not necessarily ensure that the
+       // entry in the directory containing the file has also reached disk.
+       // For that an explicit fsync() on a file descriptor for the directory
+       // is also needed."
        err = unix.Fsync(parentFd)
        if err != nil {
                return err
@@ -547,9 +548,12 @@ func OpenParentDirectoryNoSymlinks(path string) (int, string, error) {
                }
                dir = ".."
                parts = []string{filepath.Base(wd)}
-       } else if parts[0] != "." {
+       } else {
                // Relative path: start at the current directory
                dir = "."
+               if parts[0] == "." {
+                       parts = parts[1:]
+               }
        }
 
        dirFd, err := unix.Openat(unix.AT_FDCWD, dir, openReadonlyFlags, 0)