From 4e7aab07d5b175345fdf3ea08868dab1e6d90126 Mon Sep 17 00:00:00 2001 From: Ophestra Date: Thu, 13 Nov 2025 01:15:19 +0900 Subject: internal/system: relocate from system These packages are highly specific to hakurei and are difficult to use safely from other pieces of code. Their exported symbols are made available until v0.4.0 where they will be removed for #24. Signed-off-by: Ophestra --- system/internal/xcb/changehosts.go | 17 ----- system/internal/xcb/xcb.go | 127 ------------------------------------- 2 files changed, 144 deletions(-) delete mode 100644 system/internal/xcb/changehosts.go delete mode 100644 system/internal/xcb/xcb.go (limited to 'system/internal/xcb') diff --git a/system/internal/xcb/changehosts.go b/system/internal/xcb/changehosts.go deleted file mode 100644 index 8b05614b..00000000 --- a/system/internal/xcb/changehosts.go +++ /dev/null @@ -1,17 +0,0 @@ -package xcb - -import "errors" - -var ErrChangeHosts = errors.New("xcb_change_hosts() failed") - -func ChangeHosts(mode HostMode, family Family, address string) error { - conn := new(connection) - if err := conn.connect(); err != nil { - conn.disconnect() - return err - } else { - defer conn.disconnect() - } - - return conn.changeHostsChecked(mode, family, address) -} diff --git a/system/internal/xcb/xcb.go b/system/internal/xcb/xcb.go deleted file mode 100644 index 3dc62c3f..00000000 --- a/system/internal/xcb/xcb.go +++ /dev/null @@ -1,127 +0,0 @@ -// Package xcb implements X11 ChangeHosts via libxcb. -package xcb - -import ( - "runtime" - "unsafe" -) - -/* -#cgo linux pkg-config: --static xcb - -#include -#include - -static int hakurei_xcb_change_hosts_checked(xcb_connection_t *c, - uint8_t mode, uint8_t family, - uint16_t address_len, const uint8_t *address) { - int ret; - xcb_generic_error_t *e; - xcb_void_cookie_t cookie; - - cookie = xcb_change_hosts_checked(c, mode, family, address_len, address); - free((void *)address); - - ret = xcb_connection_has_error(c); - if (ret != 0) - return ret; - - e = xcb_request_check(c, cookie); - if (e != NULL) { - // don't want to deal with xcb errors - free((void *)e); - ret = -1; - } - - return ret; -} -*/ -import "C" - -const ( - HostModeInsert = C.XCB_HOST_MODE_INSERT - HostModeDelete = C.XCB_HOST_MODE_DELETE - - FamilyInternet = C.XCB_FAMILY_INTERNET - FamilyDecnet = C.XCB_FAMILY_DECNET - FamilyChaos = C.XCB_FAMILY_CHAOS - FamilyServerInterpreted = C.XCB_FAMILY_SERVER_INTERPRETED - FamilyInternet6 = C.XCB_FAMILY_INTERNET_6 -) - -type ( - HostMode = C.xcb_host_mode_t - Family = C.xcb_family_t -) - -func (conn *connection) changeHostsChecked(mode HostMode, family Family, address string) error { - ret := C.hakurei_xcb_change_hosts_checked( - conn.c, - C.uint8_t(mode), - C.uint8_t(family), - C.uint16_t(len(address)), - (*C.uint8_t)(unsafe.Pointer(C.CString(address))), - ) - switch ret { - case 0: - return nil - case -1: - return ErrChangeHosts - default: - return ConnectionError(ret) - } -} - -type connection struct{ c *C.xcb_connection_t } - -func (conn *connection) connect() error { - conn.c = C.xcb_connect(nil, nil) - runtime.SetFinalizer(conn, (*connection).disconnect) - return conn.hasError() -} - -func (conn *connection) hasError() error { - ret := C.xcb_connection_has_error(conn.c) - if ret == 0 { - return nil - } - return ConnectionError(ret) -} - -func (conn *connection) disconnect() { - C.xcb_disconnect(conn.c) - - // no need for a finalizer anymore - runtime.SetFinalizer(conn, nil) -} - -const ( - ConnError ConnectionError = C.XCB_CONN_ERROR - ConnClosedExtNotSupported ConnectionError = C.XCB_CONN_CLOSED_EXT_NOTSUPPORTED - ConnClosedMemInsufficient ConnectionError = C.XCB_CONN_CLOSED_MEM_INSUFFICIENT - ConnClosedReqLenExceed ConnectionError = C.XCB_CONN_CLOSED_REQ_LEN_EXCEED - ConnClosedParseErr ConnectionError = C.XCB_CONN_CLOSED_PARSE_ERR - ConnClosedInvalidScreen ConnectionError = C.XCB_CONN_CLOSED_INVALID_SCREEN -) - -// ConnectionError represents an error returned by xcb_connection_has_error. -type ConnectionError int - -func (ce ConnectionError) Error() string { - switch ce { - case ConnError: - return "connection error" - case ConnClosedExtNotSupported: - return "extension not supported" - case ConnClosedMemInsufficient: - return "memory not available" - case ConnClosedReqLenExceed: - return "request length exceeded" - case ConnClosedParseErr: - return "invalid display string" - case ConnClosedInvalidScreen: - return "server has no screen matching display" - default: - return "generic X11 failure" - } -} -- cgit v1.3.1