Mercurial > aewl
comparison util.c @ 15:00d4d52b231f
removed unnecessary sel stuff
author | Anselm R. Garbe <garbeam@wmii.de> |
---|---|
date | Tue, 11 Jul 2006 18:19:01 +0200 |
parents | 5c078b66347b |
children | 359b6e563b95 |
comparison
equal
deleted
inserted
replaced
14:5c078b66347b | 15:00d4d52b231f |
---|---|
8 #include <stdlib.h> | 8 #include <stdlib.h> |
9 #include <string.h> | 9 #include <string.h> |
10 #include <sys/types.h> | 10 #include <sys/types.h> |
11 #include <sys/wait.h> | 11 #include <sys/wait.h> |
12 #include <unistd.h> | 12 #include <unistd.h> |
13 #include <X11/Xatom.h> | |
14 | 13 |
15 #include "util.h" | 14 #include "util.h" |
16 | 15 |
17 void | 16 void |
18 error(char *errstr, ...) { | 17 error(char *errstr, ...) { |
137 close(pfd[0]); | 136 close(pfd[0]); |
138 buf[n - 1] = 0; | 137 buf[n - 1] = 0; |
139 } | 138 } |
140 wait(0); | 139 wait(0); |
141 } | 140 } |
142 | |
143 | |
144 unsigned char * | |
145 getselection(unsigned long offset, unsigned long *len, unsigned long *remain) | |
146 { | |
147 Display *dpy; | |
148 Atom xa_clip_string; | |
149 Window w; | |
150 XEvent ev; | |
151 Atom typeret; | |
152 int format; | |
153 unsigned char *data; | |
154 unsigned char *result = NULL; | |
155 | |
156 dpy = XOpenDisplay(0); | |
157 if(!dpy) | |
158 return NULL; | |
159 xa_clip_string = XInternAtom(dpy, "_SEL_STRING", False); | |
160 w = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), 10, 10, 200, 200, | |
161 1, CopyFromParent, CopyFromParent); | |
162 XConvertSelection(dpy, XA_PRIMARY, XA_STRING, xa_clip_string, | |
163 w, CurrentTime); | |
164 XFlush(dpy); | |
165 XNextEvent(dpy, &ev); | |
166 if(ev.type == SelectionNotify && ev.xselection.property != None) { | |
167 XGetWindowProperty(dpy, w, ev.xselection.property, offset, 4096L, False, | |
168 AnyPropertyType, &typeret, &format, len, remain, &data); | |
169 if(*len) { | |
170 result = emalloc(sizeof(unsigned char) * *len); | |
171 memcpy(result, data, *len); | |
172 } | |
173 XDeleteProperty(dpy, w, ev.xselection.property); | |
174 } | |
175 XDestroyWindow(dpy, w); | |
176 XCloseDisplay(dpy); | |
177 return result; | |
178 } |