| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -10,7 +10,6 @@ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#include <sys/types.h> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#include <sys/wait.h> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#include <unistd.h> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#include <X11/Xatom.h> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#include "util.h" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -139,40 +138,3 @@ pipe_spawn(char *buf, unsigned int len, Display *dpy, char *argv[]) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						wait(0); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					unsigned char * | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					getselection(unsigned long offset, unsigned long *len, unsigned long *remain) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						Display *dpy; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						Atom xa_clip_string; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						Window w; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						XEvent ev; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						Atom typeret; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						int format; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						unsigned char *data; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						unsigned char *result = NULL; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						dpy = XOpenDisplay(0); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(!dpy) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							return NULL; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						xa_clip_string = XInternAtom(dpy, "_SEL_STRING", False); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						w = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), 10, 10, 200, 200, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								1, CopyFromParent, CopyFromParent); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						XConvertSelection(dpy, XA_PRIMARY, XA_STRING, xa_clip_string, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								w, CurrentTime); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						XFlush(dpy); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						XNextEvent(dpy, &ev); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(ev.type == SelectionNotify && ev.xselection.property != None) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							XGetWindowProperty(dpy, w, ev.xselection.property, offset, 4096L, False, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									AnyPropertyType, &typeret, &format, len, remain, &data); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if(*len) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								result = emalloc(sizeof(unsigned char) * *len); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								memcpy(result, data, *len); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							XDeleteProperty(dpy, w, ev.xselection.property); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						XDestroyWindow(dpy, w); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						XCloseDisplay(dpy); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						return result; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} |