aboutsummaryrefslogtreecommitdiffhomepage
path: root/xcb
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2025-02-17 19:07:53 +0900
committerOphestra <cat@gensokyo.uk>2025-02-17 19:07:53 +0900
commit38a3e6af03e638f82f72e5659588eaf17c78aafa (patch)
treecaf550bcf572b9132fd7f813b4e4d3857f9c1bd5 /xcb
parent90cb01b2748550228d0bc179691a19ebb996fc36 (diff)
system: make xcb internal
This package is hauntingly ugly. Move this to internal until it is removed or replaced. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'xcb')
-rw-r--r--xcb/c.go124
-rw-r--r--xcb/export.go22
2 files changed, 0 insertions, 146 deletions
diff --git a/xcb/c.go b/xcb/c.go
deleted file mode 100644
index f2703f94..00000000
--- a/xcb/c.go
+++ /dev/null
@@ -1,124 +0,0 @@
-package xcb
-
-import (
- "runtime"
- "unsafe"
-)
-
-/*
-#cgo linux pkg-config: --static xcb
-
-#include <stdlib.h>
-#include <xcb/xcb.h>
-
-static int _go_xcb_change_hosts_checked(xcb_connection_t *c, uint8_t mode, uint8_t family, uint16_t address_len, const uint8_t *address) {
- xcb_void_cookie_t cookie = xcb_change_hosts_checked(c, mode, family, address_len, address);
- free((void *)address);
-
- int errno = xcb_connection_has_error(c);
- if (errno != 0)
- return errno;
-
- xcb_generic_error_t *e = xcb_request_check(c, cookie);
- if (e != NULL) {
- // don't want to deal with xcb errors
- free((void *)e);
- return -1;
- }
-
- return 0;
-}
-*/
-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 {
- errno := C._go_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 errno {
- case 0:
- return nil
- case -1:
- return ErrChangeHosts
- default:
- return &ConnectionError{errno}
- }
-}
-
-type connection struct{ c *C.xcb_connection_t }
-
-func connect() (*connection, error) {
- conn := newConnection(C.xcb_connect(nil, nil))
- return conn, conn.hasError()
-}
-
-func newConnection(c *C.xcb_connection_t) *connection {
- conn := &connection{c}
- runtime.SetFinalizer(conn, (*connection).disconnect)
- return conn
-}
-
-const (
- ConnError = C.XCB_CONN_ERROR
- ConnClosedExtNotSupported = C.XCB_CONN_CLOSED_EXT_NOTSUPPORTED
- ConnClosedMemInsufficient = C.XCB_CONN_CLOSED_MEM_INSUFFICIENT
- ConnClosedReqLenExceed = C.XCB_CONN_CLOSED_REQ_LEN_EXCEED
- ConnClosedParseErr = C.XCB_CONN_CLOSED_PARSE_ERR
- ConnClosedInvalidScreen = C.XCB_CONN_CLOSED_INVALID_SCREEN
-)
-
-type ConnectionError struct{ errno C.int }
-
-func (ce *ConnectionError) Error() string {
- switch ce.errno {
- 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"
- }
-}
-
-func (conn *connection) hasError() error {
- errno := C.xcb_connection_has_error(conn.c)
- if errno == 0 {
- return nil
- }
- return &ConnectionError{errno}
-}
-
-func (conn *connection) disconnect() {
- C.xcb_disconnect(conn.c)
-
- // no need for a finalizer anymore
- runtime.SetFinalizer(conn, nil)
-}
diff --git a/xcb/export.go b/xcb/export.go
deleted file mode 100644
index 1ed9997f..00000000
--- a/xcb/export.go
+++ /dev/null
@@ -1,22 +0,0 @@
-// Package xcb implements X11 ChangeHosts via libxcb.
-package xcb
-
-import (
- "errors"
-)
-
-var ErrChangeHosts = errors.New("xcb_change_hosts() failed")
-
-func ChangeHosts(mode HostMode, family Family, address string) error {
- var conn *connection
-
- if c, err := connect(); err != nil {
- c.disconnect()
- return err
- } else {
- defer c.disconnect()
- conn = c
- }
-
- return conn.changeHostsChecked(mode, family, address)
-}