diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2022-12-30 08:08:05 +0000 |
---|---|---|
committer | Gopher Robot <gobot@golang.org> | 2022-12-31 00:01:51 +0000 |
commit | b36040661688bbbde06c38ea80af105ebf21415b (patch) | |
tree | 4045331f885d6c215790983bcd69166ec01efe24 | |
parent | 3086868dc2d50eaf352a77344894e7f099938c59 (diff) | |
download | golang-x-sys-b36040661688bbbde06c38ea80af105ebf21415b.tar.gz |
unix: support TIOCGETA on GNU/Hurd
Add minimal support for GNU/Hurd to allow building third party packages
which detect terminal support.
Change-Id: Ia13fe8e9e4880e8ab062f9a2efb581320637f017
GitHub-Last-Rev: f612efbe7da35f618d1bd498a215f4b9da9c4f53
GitHub-Pull-Request: golang/sys#144
Reviewed-on: https://go-review.googlesource.com/c/sys/+/459895
Reviewed-by: Tobias Klauser <tobias.klauser@gmail.com>
Auto-Submit: Ian Lance Taylor <iant@google.com>
Run-TryBot: Ian Lance Taylor <iant@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
-rw-r--r-- | unix/gccgo.go | 4 | ||||
-rw-r--r-- | unix/gccgo_c.c | 4 | ||||
-rw-r--r-- | unix/ioctl.go | 4 | ||||
-rw-r--r-- | unix/syscall_hurd.go | 23 | ||||
-rw-r--r-- | unix/syscall_hurd_386.go | 29 |
5 files changed, 58 insertions, 6 deletions
diff --git a/unix/gccgo.go b/unix/gccgo.go index 0dee232..b06f52d 100644 --- a/unix/gccgo.go +++ b/unix/gccgo.go @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build gccgo && !aix -// +build gccgo,!aix +//go:build gccgo && !aix && !hurd +// +build gccgo,!aix,!hurd package unix diff --git a/unix/gccgo_c.c b/unix/gccgo_c.c index 2cb1fef..c4fce0e 100644 --- a/unix/gccgo_c.c +++ b/unix/gccgo_c.c @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build gccgo -// +build !aix +// +build gccgo,!hurd +// +build !aix,!hurd #include <errno.h> #include <stdint.h> diff --git a/unix/ioctl.go b/unix/ioctl.go index 6c7ad05..1c51b0e 100644 --- a/unix/ioctl.go +++ b/unix/ioctl.go @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris +//go:build aix || darwin || dragonfly || freebsd || hurd || linux || netbsd || openbsd || solaris +// +build aix darwin dragonfly freebsd hurd linux netbsd openbsd solaris package unix diff --git a/unix/syscall_hurd.go b/unix/syscall_hurd.go new file mode 100644 index 0000000..93aa420 --- /dev/null +++ b/unix/syscall_hurd.go @@ -0,0 +1,23 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build hurd +// +build hurd + +package unix + +/* +#include <stdint.h> +int ioctl(int, unsigned long int, uintptr_t); +*/ +import "C" + +func ioctl(fd int, req uint, arg uintptr) (err error) { + r0, er := C.ioctl(C.int(fd), C.ulong(req), C.uintptr_t(arg)) + if r0 == -1 && er != nil { + err = er + } + return +} + diff --git a/unix/syscall_hurd_386.go b/unix/syscall_hurd_386.go new file mode 100644 index 0000000..44f3c4b --- /dev/null +++ b/unix/syscall_hurd_386.go @@ -0,0 +1,29 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build 386 && hurd +// +build 386,hurd + +package unix + +const ( + TIOCGETA = 0x62251713 +) + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} |