|
|
1.1 root 1: /* $Header: XStBytes.c,v 11.13 87/09/01 15:06:39 toddb Exp $ */
2: /* Copyright Massachusetts Institute of Technology 1986 */
3:
4: #include "Xlibint.h"
5: #include "Xatom.h"
6:
7: /* insulate predefined atom numbers from cut routines */
8: static Atom n_to_atom[8] = {
9: XA_CUT_BUFFER0,
10: XA_CUT_BUFFER1,
11: XA_CUT_BUFFER2,
12: XA_CUT_BUFFER3,
13: XA_CUT_BUFFER4,
14: XA_CUT_BUFFER5,
15: XA_CUT_BUFFER6,
16: XA_CUT_BUFFER7};
17:
18: XRotateBuffers (dpy, rotate)
19: register Display *dpy;
20: int rotate;
21: {
22: XRotateWindowProperties(dpy, RootWindow(dpy, 0), n_to_atom, 8, rotate);
23: }
24:
25: char *XFetchBuffer (dpy, nbytes, buffer)
26: register Display *dpy;
27: int *nbytes;
28: register int buffer;
29: {
30: Atom actual_type;
31: int actual_format;
32: unsigned long nitems;
33: long leftover;
34: unsigned char *data;
35: *nbytes = 0;
36: if ((buffer < 0) || (buffer > 7)) return (NULL);
37: /* XXX should be (sizeof (maxint) - 1)/4 */
38: if (XGetWindowProperty(dpy, RootWindow(dpy, 0), n_to_atom[buffer],
39: 0L, 10000000L, False, XA_STRING,
40: &actual_type, &actual_format, &nitems, &leftover, &data) != Success) {
41: return (NULL);
42: }
43: if ( (actual_type == XA_STRING) && (actual_format != 32) ) {
44: *nbytes = nitems;
45: return((char *)data);
46: }
47: if ((char *) data != NULL) Xfree ((char *)data);
48: return(NULL);
49: }
50:
51: char *XFetchBytes (dpy, nbytes)
52: register Display *dpy;
53: int *nbytes;
54: {
55: return (XFetchBuffer (dpy, nbytes, 0));
56: }
57:
58: XStoreBuffer (dpy, bytes, nbytes, buffer)
59: register Display *dpy;
60: char bytes[];
61: int nbytes;
62: register int buffer;
63: {
64: if ((buffer < 0) || (buffer > 7)) return;
65: XChangeProperty(dpy, RootWindow(dpy, 0), n_to_atom[buffer],
66: XA_STRING, 8, PropModeReplace, (unsigned char *) bytes, nbytes);
67: }
68:
69: XStoreBytes (dpy, bytes, nbytes)
70: register Display *dpy;
71: char bytes[];
72: int nbytes;
73: {
74: XStoreBuffer (dpy, bytes, nbytes, 0);
75: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.