aboutsummaryrefslogtreecommitdiffhomepage
path: root/xcb/c.go
diff options
context:
space:
mode:
authorOphestra Umiker <cat@ophivana.moe>2024-09-16 20:32:07 +0900
committerOphestra Umiker <cat@ophivana.moe>2024-09-16 20:32:07 +0900
commit03c24c51224e85eb96527a512f5f0483464fc810 (patch)
tree2feede4d9448fc881b0d4b8a193c0c82f6627221 /xcb/c.go
parent8bdae74ebe172239573bab9fca634cf350cbd29d (diff)
move acl and xcb binding packages to top level
These packages are reasonably clean and do not interact with other packages. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
Diffstat (limited to 'xcb/c.go')
-rw-r--r--xcb/c.go33
1 files changed, 33 insertions, 0 deletions
diff --git a/xcb/c.go b/xcb/c.go
new file mode 100644
index 00000000..8fe59d8c
--- /dev/null
+++ b/xcb/c.go
@@ -0,0 +1,33 @@
+package xcb
+
+import (
+ "errors"
+)
+
+//#include <stdlib.h>
+//#include <xcb/xcb.h>
+//#cgo linux LDFLAGS: -lxcb
+import "C"
+
+func xcbHandleConnectionError(c *C.xcb_connection_t) error {
+ if errno := C.xcb_connection_has_error(c); errno != 0 {
+ switch errno {
+ case C.XCB_CONN_ERROR:
+ return errors.New("connection error")
+ case C.XCB_CONN_CLOSED_EXT_NOTSUPPORTED:
+ return errors.New("extension not supported")
+ case C.XCB_CONN_CLOSED_MEM_INSUFFICIENT:
+ return errors.New("memory not available")
+ case C.XCB_CONN_CLOSED_REQ_LEN_EXCEED:
+ return errors.New("request length exceeded")
+ case C.XCB_CONN_CLOSED_PARSE_ERR:
+ return errors.New("invalid display string")
+ case C.XCB_CONN_CLOSED_INVALID_SCREEN:
+ return errors.New("server has no screen matching display")
+ default:
+ return errors.New("generic X11 failure")
+ }
+ } else {
+ return nil
+ }
+}