mirror of
https://github.com/kovidgoyal/kitty
synced 2026-07-19 23:14:55 +02:00
Move SSH askpass implementation into kitten
This commit is contained in:
@@ -20,6 +20,9 @@ func AtomicCreateSymlink(oldname, newname string) (err error) {
|
||||
if !errors.Is(err, fs.ErrExist) {
|
||||
return err
|
||||
}
|
||||
if et, err := os.Readlink(newname); err == nil && et == oldname {
|
||||
return nil
|
||||
}
|
||||
for {
|
||||
tempname := newname + RandomFilename()
|
||||
err = os.Symlink(oldname, tempname)
|
||||
|
||||
@@ -52,6 +52,10 @@ type MMap interface {
|
||||
IsFileSystemBacked() bool
|
||||
FileSystemName() string
|
||||
Stat() (fs.FileInfo, error)
|
||||
Flush() error
|
||||
Seek(offset int64, whence int) (int64, error)
|
||||
Read(b []byte) (int, error)
|
||||
ReadWithSize() ([]byte, error)
|
||||
}
|
||||
|
||||
type AccessFlags int
|
||||
|
||||
@@ -13,6 +13,8 @@ import (
|
||||
"runtime"
|
||||
|
||||
"kitty/tools/utils"
|
||||
|
||||
"golang.org/x/sys/unix"
|
||||
)
|
||||
|
||||
var _ = fmt.Print
|
||||
@@ -51,6 +53,22 @@ func (self *file_based_mmap) Name() string {
|
||||
return filepath.Base(self.f.Name())
|
||||
}
|
||||
|
||||
func (self *file_based_mmap) Flush() error {
|
||||
return unix.Msync(self.region, unix.MS_SYNC)
|
||||
}
|
||||
|
||||
func (self *file_based_mmap) Seek(offset int64, whence int) (int64, error) {
|
||||
return self.f.Seek(offset, whence)
|
||||
}
|
||||
|
||||
func (self *file_based_mmap) Read(b []byte) (int, error) {
|
||||
return self.f.Read(b)
|
||||
}
|
||||
|
||||
func (self *file_based_mmap) ReadWithSize() ([]byte, error) {
|
||||
return read_with_size(self.f)
|
||||
}
|
||||
|
||||
func (self *file_based_mmap) FileSystemName() string {
|
||||
return self.f.Name()
|
||||
}
|
||||
|
||||
@@ -92,10 +92,26 @@ func (self *syscall_based_mmap) Stat() (fs.FileInfo, error) {
|
||||
return self.f.Stat()
|
||||
}
|
||||
|
||||
func (self *syscall_based_mmap) Flush() error {
|
||||
return unix.Msync(self.region, unix.MS_SYNC)
|
||||
}
|
||||
|
||||
func (self *syscall_based_mmap) Slice() []byte {
|
||||
return self.region
|
||||
}
|
||||
|
||||
func (self *syscall_based_mmap) Seek(offset int64, whence int) (int64, error) {
|
||||
return self.f.Seek(offset, whence)
|
||||
}
|
||||
|
||||
func (self *syscall_based_mmap) Read(b []byte) (int, error) {
|
||||
return self.f.Read(b)
|
||||
}
|
||||
|
||||
func (self *syscall_based_mmap) ReadWithSize() ([]byte, error) {
|
||||
return read_with_size(self.f)
|
||||
}
|
||||
|
||||
func (self *syscall_based_mmap) Close() (err error) {
|
||||
if self.region != nil {
|
||||
self.f.Close()
|
||||
|
||||
@@ -23,6 +23,10 @@ func TestSHM(t *testing.T) {
|
||||
}
|
||||
|
||||
copy(mm.Slice(), data)
|
||||
err = mm.Flush()
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to msync() with error: %v", err)
|
||||
}
|
||||
err = mm.Close()
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to close with error: %v", err)
|
||||
|
||||
Reference in New Issue
Block a user