From 955821b5abe8673d276f797489f77acbcb2249cd Mon Sep 17 00:00:00 2001 From: Sean Chittenden Date: Tue, 31 Jan 2017 22:56:31 -0800 Subject: [PATCH] Add Go-native structs for Darwin/386 and FreeBSD/arm --- README.rst | 4 ++-- host/host_darwin_386.go | 19 +++++++++++++++++ host/host_freebsd_arm.go | 44 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 65 insertions(+), 2 deletions(-) create mode 100644 host/host_darwin_386.go create mode 100644 host/host_freebsd_arm.go diff --git a/README.rst b/README.rst index 6eb0d85..68c133b 100644 --- a/README.rst +++ b/README.rst @@ -44,10 +44,10 @@ Taged at every end of month, but there are only a few commits, it can be skipped Available Architectures ------------------------------------ -- FreeBSD i386/amd64 +- FreeBSD i386/amd64/arm - Linux i386/amd64/arm(raspberry pi) - Windows/amd64 -- Darwin/amd64 +- Darwin i386/amd64 - OpenBDS amd64 (Thank you @mpfz0r!) All works are implemented without cgo by porting c struct to golang struct. diff --git a/host/host_darwin_386.go b/host/host_darwin_386.go new file mode 100644 index 0000000..c3596f9 --- /dev/null +++ b/host/host_darwin_386.go @@ -0,0 +1,19 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs types_darwin.go + +package host + +type Utmpx struct { + User [256]int8 + ID [4]int8 + Line [32]int8 + Pid int32 + Type int16 + Pad_cgo_0 [6]byte + Tv Timeval + Host [256]int8 + Pad [16]uint32 +} +type Timeval struct { + Sec int32 +} diff --git a/host/host_freebsd_arm.go b/host/host_freebsd_arm.go new file mode 100644 index 0000000..ac74980 --- /dev/null +++ b/host/host_freebsd_arm.go @@ -0,0 +1,44 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs types_freebsd.go + +package host + +const ( + sizeofPtr = 0x4 + sizeofShort = 0x2 + sizeofInt = 0x4 + sizeofLong = 0x8 + sizeofLongLong = 0x8 + sizeOfUtmpx = 197 // TODO: why should 197, not 0x118 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Utmp struct { + Line [8]int8 + Name [16]int8 + Host [16]int8 + Time int32 +} + +type Utmpx struct { + Type int16 + Tv Timeval + Id [8]int8 + Pid int32 + User [32]int8 + Line [16]int8 + Host [125]int8 + // Host [128]int8 + // X__ut_spare [64]int8 +} + +type Timeval struct { + Sec [4]byte + Usec [3]byte +}