a geicko-2 based round robin ranking system designed to test c++ battleship submissions battleship.dunkirk.sh
at main 918 B view raw
1//go:build !plan9 2// +build !plan9 3 4package sftp 5 6import ( 7 "os" 8 "syscall" 9) 10 11const EBADF = syscall.EBADF 12 13func wrapPathError(filepath string, err error) error { 14 if errno, ok := err.(syscall.Errno); ok { 15 return &os.PathError{Path: filepath, Err: errno} 16 } 17 return err 18} 19 20// translateErrno translates a syscall error number to a SFTP error code. 21func translateErrno(errno syscall.Errno) uint32 { 22 switch errno { 23 case 0: 24 return sshFxOk 25 case syscall.ENOENT: 26 return sshFxNoSuchFile 27 case syscall.EACCES, syscall.EPERM: 28 return sshFxPermissionDenied 29 } 30 31 return sshFxFailure 32} 33 34func translateSyscallError(err error) (uint32, bool) { 35 switch e := err.(type) { 36 case syscall.Errno: 37 return translateErrno(e), true 38 case *os.PathError: 39 debug("statusFromError,pathError: error is %T %#v", e.Err, e.Err) 40 if errno, ok := e.Err.(syscall.Errno); ok { 41 return translateErrno(errno), true 42 } 43 } 44 return 0, false 45}