summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter@cs.unisa.edu.au>2008-05-27 10:16:08 +0930
committerPeter Hutterer <peter@cs.unisa.edu.au>2008-05-27 10:16:08 +0930
commit380b9665e86f403b56f9b96c2773b91d69588fb1 (patch)
tree3570dc64f92759f4c1dd979752c2c6379f469085
parent6ecbe3059cbc3561657841b9ee9b61e03c583eb8 (diff)
Use find_device_info instead of requireing device ids on the cmdline.
-rw-r--r--src/hierarchy.c39
-rw-r--r--src/setcp.c14
2 files changed, 44 insertions, 9 deletions
diff --git a/src/hierarchy.c b/src/hierarchy.c
index 7eab564..869c3fd 100644
--- a/src/hierarchy.c
+++ b/src/hierarchy.c
@@ -64,6 +64,7 @@ create_master(Display* dpy, int argc, char** argv, char* name, char *desc)
int
remove_master(Display* dpy, int argc, char** argv, char *name, char *desc)
{
+ XDeviceInfo *info;
XRemoveMasterInfo r;
XDevice* master = NULL, *ptr = NULL, *keybd = NULL;
int ret;
@@ -74,9 +75,16 @@ remove_master(Display* dpy, int argc, char** argv, char *name, char *desc)
return EXIT_FAILURE;
}
- master = XOpenDevice(dpy, atoi(argv[0]));
+ info = find_device_info(dpy, argv[0], False);
+
+ if (!info) {
+ fprintf(stderr, "unable to find device %s\n", argv[0]);
+ return EXIT_FAILURE;
+ }
+
+ master = XOpenDevice(dpy, info->id);
if (!master)
- Error(BadValue, "Invalid master device.\n");
+ Error(BadValue, "Unable to open device %s.\n", argv[0]);
r.type = CH_RemoveMasterDevice;
r.device = master;
@@ -115,6 +123,7 @@ remove_master(Display* dpy, int argc, char** argv, char *name, char *desc)
int
change_attachment(Display* dpy, int argc, char** argv, char *name, char* desc)
{
+ XDeviceInfo *info_sd, *info_md;
XChangeAttachmentInfo c;
XDevice *slave, *master;
int ret;
@@ -125,8 +134,21 @@ change_attachment(Display* dpy, int argc, char** argv, char *name, char* desc)
return EXIT_FAILURE;
}
- slave = XOpenDevice(dpy, atoi(argv[0]));
- master = XOpenDevice(dpy, atoi(argv[1]));
+ info_sd = find_device_info(dpy, argv[0], True);
+ info_md = find_device_info(dpy, argv[1], False);
+
+ if (!info_sd) {
+ fprintf(stderr, "unable to find device %s\n", argv[0]);
+ return EXIT_FAILURE;
+ }
+
+ if (!info_md) {
+ fprintf(stderr, "unable to find device %s\n", argv[1]);
+ return EXIT_FAILURE;
+ }
+
+ slave = XOpenDevice(dpy, info_sd->id);
+ master = XOpenDevice(dpy, info_md->id);
if (!slave)
Error(BadValue, "Invalid slave device given %d\n", atoi(argv[0]));
@@ -151,6 +173,7 @@ change_attachment(Display* dpy, int argc, char** argv, char *name, char* desc)
int
float_device(Display* dpy, int argc, char** argv, char* name, char* desc)
{
+ XDeviceInfo *info;
XChangeAttachmentInfo c;
XDevice *slave;
int ret;
@@ -161,8 +184,14 @@ float_device(Display* dpy, int argc, char** argv, char* name, char* desc)
return EXIT_FAILURE;
}
+ info = find_device_info(dpy, argv[0], True);
+
+ if (!info) {
+ fprintf(stderr, "unable to find device %s\n", argv[0]);
+ return EXIT_FAILURE;
+ }
- slave = XOpenDevice(dpy, atoi(argv[0]));
+ slave = XOpenDevice(dpy, info->id);
if (!slave)
return BadValue;
diff --git a/src/setcp.c b/src/setcp.c
index 582d978..e44bb00 100644
--- a/src/setcp.c
+++ b/src/setcp.c
@@ -32,8 +32,8 @@
int
set_clientpointer(Display* dpy, int argc, char** argv, char* name, char *desc)
{
+ XDeviceInfo* info;
XID window;
- XID deviceid;
XDevice* dev = NULL;
char* id;
char* dummy;
@@ -49,13 +49,19 @@ set_clientpointer(Display* dpy, int argc, char** argv, char* name, char *desc)
while(*id == '0') id++;
window = strtol(argv[0], &dummy, (*id == 'x') ? 16 : 10);
- deviceid = atol(argv[1]);
- dev = XOpenDevice(dpy, deviceid);
+ info = find_device_info(dpy, argv[1], False);
+
+ if (!info) {
+ fprintf(stderr, "unable to find device %s\n", argv[1]);
+ return EXIT_FAILURE;
+ }
+
+ dev = XOpenDevice(dpy, info->id);
if (!dev)
{
- fprintf(stderr, "Cannot open device %ld.\n", deviceid);
+ fprintf(stderr, "Cannot open device %s.\n", argv[1]);
} else
XSetClientPointer(dpy, window, dev);
return 0;