a geicko-2 based round robin ranking system designed to test c++ battleship submissions
battleship.dunkirk.sh
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}