aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2022-12-30 08:08:05 +0000
committerGopher Robot <gobot@golang.org>2022-12-31 00:01:51 +0000
commitb36040661688bbbde06c38ea80af105ebf21415b (patch)
tree4045331f885d6c215790983bcd69166ec01efe24
parent3086868dc2d50eaf352a77344894e7f099938c59 (diff)
downloadgolang-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.go4
-rw-r--r--unix/gccgo_c.c4
-rw-r--r--unix/ioctl.go4
-rw-r--r--unix/syscall_hurd.go23
-rw-r--r--unix/syscall_hurd_386.go29
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
+}