diff options
author | Peter Hutterer <peter@cs.unisa.edu.au> | 2008-05-27 10:16:08 +0930 |
---|---|---|
committer | Peter Hutterer <peter@cs.unisa.edu.au> | 2008-05-27 10:16:08 +0930 |
commit | 380b9665e86f403b56f9b96c2773b91d69588fb1 (patch) | |
tree | 3570dc64f92759f4c1dd979752c2c6379f469085 | |
parent | 6ecbe3059cbc3561657841b9ee9b61e03c583eb8 (diff) |
Use find_device_info instead of requireing device ids on the cmdline.
-rw-r--r-- | src/hierarchy.c | 39 | ||||
-rw-r--r-- | src/setcp.c | 14 |
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; |