static void xfree86_option_list_duplicate(void) { XF86OptionPtr options; XF86OptionPtr duplicate; const char *o1 = "foo", *o2 = "bar", *v1 = "one", *v2 = "two"; const char *o_null= "NULL"; char *val1, *val2; XF86OptionPtr a, b; duplicate = xf86OptionListDuplicate(NULL); assert(!duplicate); options = xf86AddNewOption(NULL, o1, v1); assert(options); options = xf86AddNewOption(options, o2, v2); assert(options); options = xf86AddNewOption(options, o_null, NULL); assert(options); duplicate = xf86OptionListDuplicate(options); assert(duplicate); val1 = xf86CheckStrOption(options, o1, "1"); val2 = xf86CheckStrOption(duplicate, o1, "2"); assert(strcmp(val1, v1) == 0); assert(strcmp(val1, val2) == 0); val1 = xf86CheckStrOption(options, o2, "1"); val2 = xf86CheckStrOption(duplicate, o2, "2"); assert(strcmp(val1, v2) == 0); assert(strcmp(val1, val2) == 0); a = xf86FindOption(options, o_null); b = xf86FindOption(duplicate, o_null); assert(a && b); }
/* wcmCheckSource - Check if there is another source defined this device * before or not: don't add the tool by hal/udev if user has defined at least * one tool for the device in xorg.conf. One device can have multiple tools * with the same type to individualize tools with serial number or areas */ static Bool wcmCheckSource(InputInfoPtr pInfo, dev_t min_maj) { int match = 0; InputInfoPtr pDevices = xf86FirstLocalDevice(); for (; !match && pDevices != NULL; pDevices = pDevices->next) { char* device = xf86CheckStrOption(pDevices->options, "Device", NULL); /* device can be NULL on some distros */ if (!device) continue; free(device); if (!strstr(pDevices->drv->driverName, "wacom")) continue; if (pInfo != pDevices) { WacomCommonPtr pCommon = ((WacomDevicePtr)pDevices->private)->common; char* fsource = xf86CheckStrOption(pInfo->options, "_source", ""); char* psource = xf86CheckStrOption(pDevices->options, "_source", ""); if (pCommon->min_maj && pCommon->min_maj == min_maj) { /* only add the new tool if the matching major/minor * was from the same source */ if (strcmp(fsource, psource)) match = 1; } free(fsource); free(psource); } }