From: Peter Hutterer Date: Tue, 27 May 2008 00:46:08 +0000 (+0930) Subject: Use find_device_info instead of requireing device ids on the cmdline. X-Git-Url: https://diplodocus.org/git/xorg-xinput/commitdiff_plain/380b9665e86f403b56f9b96c2773b91d69588fb1?ds=sidebyside;hp=--cc Use find_device_info instead of requireing device ids on the cmdline. --- 380b9665e86f403b56f9b96c2773b91d69588fb1 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;