mirror of
https://github.com/gryf/wmaker.git
synced 2025-12-19 12:28:22 +01:00
Change to the linux kernel coding style
for arq in `git ls-files *.c`; do
echo $arq;
indent -linux -l115 $arq;
done
The different line break at 115 columns is because
I use a widescreen monitor :-)
This commit is contained in:
349
util/wxpaste.c
349
util/wxpaste.c
@@ -34,217 +34,198 @@
|
||||
# include <sys/select.h>
|
||||
#endif
|
||||
|
||||
|
||||
#define MAXDATA (4*1024*1024)
|
||||
|
||||
|
||||
void
|
||||
help(char *progn)
|
||||
void help(char *progn)
|
||||
{
|
||||
printf("Usage: %s [OPTIONS] [FILE]\n", progn);
|
||||
puts("Copies data from X selection or cutbuffer to FILE or stdout.");
|
||||
puts("");
|
||||
puts(" -display display display to use");
|
||||
puts(" --cutbuffer number cutbuffer number to get data from");
|
||||
puts(" --selection [selection] reads data from named selection instead of\n"
|
||||
" cutbuffer");
|
||||
puts(" --help display this help and exit");
|
||||
puts(" --version output version information and exit");
|
||||
printf("Usage: %s [OPTIONS] [FILE]\n", progn);
|
||||
puts("Copies data from X selection or cutbuffer to FILE or stdout.");
|
||||
puts("");
|
||||
puts(" -display display display to use");
|
||||
puts(" --cutbuffer number cutbuffer number to get data from");
|
||||
puts(" --selection [selection] reads data from named selection instead of\n"
|
||||
" cutbuffer");
|
||||
puts(" --help display this help and exit");
|
||||
puts(" --version output version information and exit");
|
||||
}
|
||||
|
||||
|
||||
Time
|
||||
getTimestamp(Display *dpy, Window win)
|
||||
Time getTimestamp(Display * dpy, Window win)
|
||||
{
|
||||
XEvent ev;
|
||||
XEvent ev;
|
||||
|
||||
/* So we do this trickery to get a time stamp:
|
||||
*
|
||||
* 1. Grab the server because we are paranoid and don't want to
|
||||
* get in a race with another instance of wxpaste being ran at the
|
||||
* same time.
|
||||
*
|
||||
* 2. Set a dummy property in our window.
|
||||
*
|
||||
* 3. Get the PropertyNotify event and get it's timestamp.
|
||||
*
|
||||
* 4. Ungrab the server.
|
||||
*/
|
||||
/* So we do this trickery to get a time stamp:
|
||||
*
|
||||
* 1. Grab the server because we are paranoid and don't want to
|
||||
* get in a race with another instance of wxpaste being ran at the
|
||||
* same time.
|
||||
*
|
||||
* 2. Set a dummy property in our window.
|
||||
*
|
||||
* 3. Get the PropertyNotify event and get it's timestamp.
|
||||
*
|
||||
* 4. Ungrab the server.
|
||||
*/
|
||||
|
||||
XSelectInput(dpy, win, PropertyChangeMask);
|
||||
XSelectInput(dpy, win, PropertyChangeMask);
|
||||
|
||||
/* Generate a PropertyNotify event */
|
||||
XStoreName(dpy, win, "shit");
|
||||
/* Generate a PropertyNotify event */
|
||||
XStoreName(dpy, win, "shit");
|
||||
|
||||
/* wait for the event */
|
||||
while (1) {
|
||||
XNextEvent(dpy, &ev);
|
||||
if (ev.type == PropertyNotify)
|
||||
break;
|
||||
}
|
||||
/* wait for the event */
|
||||
while (1) {
|
||||
XNextEvent(dpy, &ev);
|
||||
if (ev.type == PropertyNotify)
|
||||
break;
|
||||
}
|
||||
|
||||
return ev.xproperty.time;
|
||||
return ev.xproperty.time;
|
||||
}
|
||||
|
||||
|
||||
char*
|
||||
fetchSelection(Display *dpy, char *selection, char *progName)
|
||||
char *fetchSelection(Display * dpy, char *selection, char *progName)
|
||||
{
|
||||
Atom selatom = XInternAtom(dpy, selection, False);
|
||||
Atom clipatom = XInternAtom(dpy, "CLIPBOARD", False);
|
||||
Time now;
|
||||
XEvent ev;
|
||||
Window win;
|
||||
int ok = 0;
|
||||
struct timeval timeout;
|
||||
fd_set fdset;
|
||||
Atom selatom = XInternAtom(dpy, selection, False);
|
||||
Atom clipatom = XInternAtom(dpy, "CLIPBOARD", False);
|
||||
Time now;
|
||||
XEvent ev;
|
||||
Window win;
|
||||
int ok = 0;
|
||||
struct timeval timeout;
|
||||
fd_set fdset;
|
||||
|
||||
win = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), 0, 0, 1, 1,
|
||||
0, 0, 0);
|
||||
/*
|
||||
* The ICCCM says that we can't pass CurrentTime as the timestamp
|
||||
* for XConvertSelection(), but we don't have anything to use as
|
||||
* a timestamp...
|
||||
*/
|
||||
now = getTimestamp(dpy, win);
|
||||
win = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), 0, 0, 1, 1, 0, 0, 0);
|
||||
/*
|
||||
* The ICCCM says that we can't pass CurrentTime as the timestamp
|
||||
* for XConvertSelection(), but we don't have anything to use as
|
||||
* a timestamp...
|
||||
*/
|
||||
now = getTimestamp(dpy, win);
|
||||
|
||||
XConvertSelection(dpy, selatom, XA_STRING, clipatom, win, now);
|
||||
XConvertSelection(dpy, selatom, XA_STRING, clipatom, win, now);
|
||||
|
||||
timeout.tv_sec = 1;
|
||||
timeout.tv_usec = 0;
|
||||
timeout.tv_sec = 1;
|
||||
timeout.tv_usec = 0;
|
||||
|
||||
/* wait for the convertion */
|
||||
while (0) {
|
||||
int res;
|
||||
/* wait for the convertion */
|
||||
while (0) {
|
||||
int res;
|
||||
|
||||
if (XPending(dpy)==0) {
|
||||
FD_ZERO(&fdset);
|
||||
FD_SET(ConnectionNumber(dpy), &fdset);
|
||||
res = select(ConnectionNumber(dpy)+1, &fdset, NULL, NULL,
|
||||
&timeout);
|
||||
if (res <= 0) {
|
||||
ok = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (res > 0 || XPending(dpy) > 0) {
|
||||
XNextEvent(dpy, &ev);
|
||||
if (ev.type == SelectionNotify && ev.xany.window == win) {
|
||||
ok = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (XPending(dpy) == 0) {
|
||||
FD_ZERO(&fdset);
|
||||
FD_SET(ConnectionNumber(dpy), &fdset);
|
||||
res = select(ConnectionNumber(dpy) + 1, &fdset, NULL, NULL, &timeout);
|
||||
if (res <= 0) {
|
||||
ok = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (res > 0 || XPending(dpy) > 0) {
|
||||
XNextEvent(dpy, &ev);
|
||||
if (ev.type == SelectionNotify && ev.xany.window == win) {
|
||||
ok = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* if success, return the data */
|
||||
if (ok) {
|
||||
Atom rtype;
|
||||
int bits;
|
||||
unsigned long len, bytes;
|
||||
unsigned char *data;
|
||||
/* if success, return the data */
|
||||
if (ok) {
|
||||
Atom rtype;
|
||||
int bits;
|
||||
unsigned long len, bytes;
|
||||
unsigned char *data;
|
||||
|
||||
if (XGetWindowProperty(dpy, win, clipatom, 0, MAXDATA/4, False,
|
||||
XA_STRING, &rtype, &bits, &len, &bytes, &data)!=0)
|
||||
return NULL;
|
||||
if (XGetWindowProperty(dpy, win, clipatom, 0, MAXDATA / 4, False,
|
||||
XA_STRING, &rtype, &bits, &len, &bytes, &data) != 0)
|
||||
return NULL;
|
||||
|
||||
if ((rtype!=XA_STRING) || (bits!=8)) {
|
||||
return NULL;
|
||||
} else {
|
||||
return (char*)data;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
if ((rtype != XA_STRING) || (bits != 8)) {
|
||||
return NULL;
|
||||
} else {
|
||||
return (char *)data;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
Display *dpy;
|
||||
int i, l;
|
||||
int buffer=0;
|
||||
char *buf;
|
||||
int status;
|
||||
char *display_name="";
|
||||
char *selection_name=NULL;
|
||||
Display *dpy;
|
||||
int i, l;
|
||||
int buffer = 0;
|
||||
char *buf;
|
||||
int status;
|
||||
char *display_name = "";
|
||||
char *selection_name = NULL;
|
||||
|
||||
for (i=1; i<argc; i++) {
|
||||
if (argv[i][0]=='-') {
|
||||
if (argv[i][1]=='h' || strcmp(argv[i], "--help")==0) {
|
||||
help(argv[0]);
|
||||
exit(0);
|
||||
} else if (strcmp(argv[i], "--version")==0) {
|
||||
puts(PROG_VERSION);
|
||||
exit(0);
|
||||
} else if (strcmp(argv[i],"-selection")==0
|
||||
|| strcmp(argv[i],"--selection")==0) {
|
||||
if (i<argc-1) {
|
||||
selection_name = argv[++i];
|
||||
} else {
|
||||
selection_name = "PRIMARY";
|
||||
}
|
||||
} else if (strcmp(argv[i],"-display")==0) {
|
||||
if (i<argc-1) {
|
||||
display_name = argv[++i];
|
||||
} else {
|
||||
help(argv[0]);
|
||||
exit(0);
|
||||
}
|
||||
} else if (strcmp(argv[i],"-cutbuffer")==0
|
||||
|| strcmp(argv[i],"--cutbuffer")==0) {
|
||||
if (i<argc-1) {
|
||||
i++;
|
||||
if (sscanf(argv[i],"%i", &buffer)!=1) {
|
||||
fprintf(stderr, "%s: could not convert \"%s\" to int\n",
|
||||
argv[0], argv[i]);
|
||||
exit(1);
|
||||
}
|
||||
if (buffer<0 || buffer > 7) {
|
||||
fprintf(stderr, "%s: invalid buffer number %i\n",
|
||||
argv[0], buffer);
|
||||
exit(1);
|
||||
}
|
||||
} else {
|
||||
fprintf(stderr, "%s: invalid argument '%s'\n", argv[0],
|
||||
argv[i]);
|
||||
fprintf(stderr, "Try '%s --help' for more information.\n",
|
||||
argv[0]);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
fprintf(stderr, "%s: invalid argument '%s'\n", argv[0], argv[i]);
|
||||
fprintf(stderr, "Try '%s --help' for more information.\n",
|
||||
argv[0]);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
dpy = XOpenDisplay(display_name);
|
||||
if (!dpy) {
|
||||
fprintf(stderr, "%s: could not open display \"%s\"\n", argv[0],
|
||||
XDisplayName(display_name));
|
||||
exit(1);
|
||||
}
|
||||
for (i = 1; i < argc; i++) {
|
||||
if (argv[i][0] == '-') {
|
||||
if (argv[i][1] == 'h' || strcmp(argv[i], "--help") == 0) {
|
||||
help(argv[0]);
|
||||
exit(0);
|
||||
} else if (strcmp(argv[i], "--version") == 0) {
|
||||
puts(PROG_VERSION);
|
||||
exit(0);
|
||||
} else if (strcmp(argv[i], "-selection") == 0 || strcmp(argv[i], "--selection") == 0) {
|
||||
if (i < argc - 1) {
|
||||
selection_name = argv[++i];
|
||||
} else {
|
||||
selection_name = "PRIMARY";
|
||||
}
|
||||
} else if (strcmp(argv[i], "-display") == 0) {
|
||||
if (i < argc - 1) {
|
||||
display_name = argv[++i];
|
||||
} else {
|
||||
help(argv[0]);
|
||||
exit(0);
|
||||
}
|
||||
} else if (strcmp(argv[i], "-cutbuffer") == 0 || strcmp(argv[i], "--cutbuffer") == 0) {
|
||||
if (i < argc - 1) {
|
||||
i++;
|
||||
if (sscanf(argv[i], "%i", &buffer) != 1) {
|
||||
fprintf(stderr, "%s: could not convert \"%s\" to int\n",
|
||||
argv[0], argv[i]);
|
||||
exit(1);
|
||||
}
|
||||
if (buffer < 0 || buffer > 7) {
|
||||
fprintf(stderr, "%s: invalid buffer number %i\n", argv[0], buffer);
|
||||
exit(1);
|
||||
}
|
||||
} else {
|
||||
fprintf(stderr, "%s: invalid argument '%s'\n", argv[0], argv[i]);
|
||||
fprintf(stderr, "Try '%s --help' for more information.\n", argv[0]);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
fprintf(stderr, "%s: invalid argument '%s'\n", argv[0], argv[i]);
|
||||
fprintf(stderr, "Try '%s --help' for more information.\n", argv[0]);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
dpy = XOpenDisplay(display_name);
|
||||
if (!dpy) {
|
||||
fprintf(stderr, "%s: could not open display \"%s\"\n", argv[0], XDisplayName(display_name));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (selection_name) {
|
||||
buf = fetchSelection(dpy, selection_name, argv[0]);
|
||||
} else {
|
||||
buf = NULL;
|
||||
}
|
||||
if (selection_name) {
|
||||
buf = fetchSelection(dpy, selection_name, argv[0]);
|
||||
} else {
|
||||
buf = NULL;
|
||||
}
|
||||
|
||||
if (buf == NULL) {
|
||||
buf = XFetchBuffer(dpy, &l, buffer);
|
||||
}
|
||||
if (buf == NULL) {
|
||||
buf = XFetchBuffer(dpy, &l, buffer);
|
||||
}
|
||||
|
||||
if (buf == NULL) {
|
||||
status = 1;
|
||||
} else {
|
||||
if (write(STDOUT_FILENO, buf, l) == -1)
|
||||
status = errno;
|
||||
else
|
||||
status = 0;
|
||||
}
|
||||
XCloseDisplay(dpy);
|
||||
exit(status);
|
||||
if (buf == NULL) {
|
||||
status = 1;
|
||||
} else {
|
||||
if (write(STDOUT_FILENO, buf, l) == -1)
|
||||
status = errno;
|
||||
else
|
||||
status = 0;
|
||||
}
|
||||
XCloseDisplay(dpy);
|
||||
exit(status);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user