1 0335ceae 2007-05-03 devnull #include <u.h>
2 0335ceae 2007-05-03 devnull #include <sys/select.h>
3 0335ceae 2007-05-03 devnull #include <errno.h>
4 0335ceae 2007-05-03 devnull #include "x11-inc.h"
5 0335ceae 2007-05-03 devnull #include <libc.h>
6 0335ceae 2007-05-03 devnull #include <draw.h>
7 0335ceae 2007-05-03 devnull #include <memdraw.h>
8 0335ceae 2007-05-03 devnull #include <memlayer.h>
9 0335ceae 2007-05-03 devnull #include <keyboard.h>
10 0335ceae 2007-05-03 devnull #include <mouse.h>
11 0335ceae 2007-05-03 devnull #include <cursor.h>
12 0335ceae 2007-05-03 devnull #include <drawfcall.h>
13 0335ceae 2007-05-03 devnull #include "x11-memdraw.h"
14 0335ceae 2007-05-03 devnull #include "devdraw.h"
16 0335ceae 2007-05-03 devnull #undef time
18 0335ceae 2007-05-03 devnull #define MouseMask (\
19 0335ceae 2007-05-03 devnull ButtonPressMask|\
20 0335ceae 2007-05-03 devnull ButtonReleaseMask|\
21 0335ceae 2007-05-03 devnull PointerMotionMask|\
22 0335ceae 2007-05-03 devnull Button1MotionMask|\
23 0335ceae 2007-05-03 devnull Button2MotionMask|\
24 0335ceae 2007-05-03 devnull Button3MotionMask)
26 0335ceae 2007-05-03 devnull #define Mask MouseMask|ExposureMask|StructureNotifyMask|KeyPressMask|EnterWindowMask|LeaveWindowMask
28 0335ceae 2007-05-03 devnull void runxevent(XEvent*);
31 0335ceae 2007-05-03 devnull usage(void)
33 0335ceae 2007-05-03 devnull fprint(2, "usage: snarf [-a] [-o | text]\n");
34 0335ceae 2007-05-03 devnull exits("usage");
38 0335ceae 2007-05-03 devnull main(int argc, char **argv)
40 0335ceae 2007-05-03 devnull int apple;
43 0335ceae 2007-05-03 devnull apple = 0;
46 0335ceae 2007-05-03 devnull ARGBEGIN{
47 0335ceae 2007-05-03 devnull case 'a':
48 0335ceae 2007-05-03 devnull apple = 1;
50 0335ceae 2007-05-03 devnull case 'o':
57 0335ceae 2007-05-03 devnull if(out && argc != 0)
59 0335ceae 2007-05-03 devnull if(!out && argc != 1)
62 0335ceae 2007-05-03 devnull _x.fd = -1;
64 0335ceae 2007-05-03 devnull memimageinit();
65 0335ceae 2007-05-03 devnull _xattach("snarf", "20x20");
67 0335ceae 2007-05-03 devnull XSelectInput(_x.display, _x.drawable, Mask);
68 0335ceae 2007-05-03 devnull XFlush(_x.display);
72 0335ceae 2007-05-03 devnull if(apple)
73 0335ceae 2007-05-03 devnull s = _applegetsnarf();
75 0335ceae 2007-05-03 devnull s = _xgetsnarf();
76 0335ceae 2007-05-03 devnull write(1, s, strlen(s));
77 0335ceae 2007-05-03 devnull write(1, "\n", 1);
78 0335ceae 2007-05-03 devnull exits(0);
80 0335ceae 2007-05-03 devnull _xputsnarf(argv[0]);
82 0335ceae 2007-05-03 devnull XEvent event;
83 0335ceae 2007-05-03 devnull XNextEvent(_x.display, &event);
84 0335ceae 2007-05-03 devnull runxevent(&event);
90 0335ceae 2007-05-03 devnull * Handle an incoming X event.
93 0335ceae 2007-05-03 devnull runxevent(XEvent *xev)
95 0335ceae 2007-05-03 devnull switch(xev->type){
96 0335ceae 2007-05-03 devnull case Expose:
97 0335ceae 2007-05-03 devnull _xexpose(xev);
100 0335ceae 2007-05-03 devnull case DestroyNotify:
101 0335ceae 2007-05-03 devnull if(_xdestroy(xev))
102 0335ceae 2007-05-03 devnull exits(0);
105 0335ceae 2007-05-03 devnull case SelectionRequest:
106 0335ceae 2007-05-03 devnull _xselect(xev);