Introduction
Introduction Statistics Contact Development Disclaimer Help
simpler + faster - sselp - simple X selection printer to stdout
git clone git://git.suckless.org/sselp
Log
Files
Refs
README
LICENSE
---
commit c3c53904786edb0c646dafaf15e2382eaf8999d2
parent c720ff0f08d0844f85fd61636c0b441d9b9da493
Author: Connor Lane Smith <[email protected]>
Date: Mon, 9 Aug 2010 11:58:17 +0100
simpler + faster
Diffstat:
M sselp.c | 77 +++++++++++------------------…
1 file changed, 27 insertions(+), 50 deletions(-)
---
diff --git a/sselp.c b/sselp.c
@@ -1,67 +1,44 @@
/* See LICENSE file for license details. */
-#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <X11/Xlib.h>
#include <X11/Xatom.h>
-#include <X11/Xutil.h>
-static unsigned char *
-getsel(unsigned long offset, unsigned long *len, unsigned long *remain) {
+int
+main(int argc, char *argv[]) {
+ Atom utf8, type;
Display *dpy;
- Atom utf8_string;
- Atom xa_clip_string;
- Window w;
+ Window win;
XEvent ev;
- Atom typeret;
- int format;
+ int fmt;
+ long off = 0;
unsigned char *data;
- unsigned char *result = NULL;
+ unsigned long len, more;
+
+ if(argc > 1 && !strcmp(argv[1], "-v")) {
+ fputs("sselp-"VERSION", © 2006-2010 Anselm R Garbe\n", stdout…
+ return 0;
+ }
+ if(!(dpy = XOpenDisplay(NULL)))
+ return 1;
+
+ utf8 = XInternAtom(dpy, "UTF8_STRING", False);
+ win = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), 0, 0, 1, 1, 0,
+ CopyFromParent, CopyFromParent);
+ XConvertSelection(dpy, XA_PRIMARY, utf8, None, win, CurrentTime);
- dpy = XOpenDisplay(NULL);
- if(!dpy)
- return NULL;
- utf8_string = XInternAtom(dpy, "UTF8_STRING", False);
- xa_clip_string = XInternAtom(dpy, "_SSELP_STRING", False);
- w = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), 10, 10, 200, 200,
- 1, CopyFromParent, CopyFromParent);
- XConvertSelection(dpy, XA_PRIMARY, utf8_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, 409…
- AnyPropertyType, &typeret, &format, len, remai…
- if(*len) {
- result = malloc(sizeof(unsigned char) * *len);
- memcpy(result, data, *len);
+ do {
+ XGetWindowProperty(dpy, win, utf8, off, BUFSIZ, False,
+ utf8, &type, &fmt, &len, &more, &da…
+ fwrite(data, 1, len, stdout);
+ XFree(data);
+ off += len;
}
- XDeleteProperty(dpy, w, ev.xselection.property);
+ while(more > 0);
+ putchar('\n');
}
- XDestroyWindow(dpy, w);
XCloseDisplay(dpy);
- return result;
-}
-
-int
-main(int argc, char **argv) {
- unsigned char *data;
- unsigned long i, offset, len, remain;
-
- if((argc > 1) && !strncmp(argv[1], "-v", 3)) {
- fputs("sselp-"VERSION", © 2006-2008 Anselm R Garbe\n", stdout…
- exit(EXIT_SUCCESS);
- }
- len = offset = remain = 0;
- do {
- data = getsel(offset, &len, &remain);
- for(i = 0; i < len; i++)
- putchar(data[i]);
- offset += len;
- free(data);
- }
- while(remain);
- if(offset)
- putchar('\n');
return 0;
}
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.