12345678910111213141516171819202122232425262728293031 |
- // Copyright (C) 2015 The Syncthing Authors.
- //
- // This Source Code Form is subject to the terms of the Mozilla Public
- // License, v. 2.0. If a copy of the MPL was not distributed with this file,
- // You can obtain one at https://mozilla.org/MPL/2.0/.
- //go:build linux || android
- // +build linux android
- package fs
- import (
- "os"
- "syscall"
- "time"
- )
- // Lstat is like os.Lstat, except lobotomized for Android. See
- // https://forum.syncthing.net/t/2395
- func (*BasicFilesystem) underlyingLstat(name string) (fi os.FileInfo, err error) {
- for i := 0; i < 10; i++ { // We have to draw the line somewhere
- fi, err = os.Lstat(name)
- if err, ok := err.(*os.PathError); ok && err.Err == syscall.EINTR {
- time.Sleep(time.Duration(i+1) * time.Millisecond)
- continue
- }
- return
- }
- return
- }
|