|
@@ -1417,6 +1417,7 @@ static void wacom_update_name(struct wacom *wacom)
|
|
{
|
|
{
|
|
struct wacom_wac *wacom_wac = &wacom->wacom_wac;
|
|
struct wacom_wac *wacom_wac = &wacom->wacom_wac;
|
|
struct wacom_features *features = &wacom_wac->features;
|
|
struct wacom_features *features = &wacom_wac->features;
|
|
|
|
+ char name[WACOM_NAME_MAX];
|
|
|
|
|
|
/* Generic devices name unspecified */
|
|
/* Generic devices name unspecified */
|
|
if ((features->type == HID_GENERIC) && !strcmp("Wacom HID", features->name)) {
|
|
if ((features->type == HID_GENERIC) && !strcmp("Wacom HID", features->name)) {
|
|
@@ -1424,41 +1425,43 @@ static void wacom_update_name(struct wacom *wacom)
|
|
strstr(wacom->hdev->name, "wacom") ||
|
|
strstr(wacom->hdev->name, "wacom") ||
|
|
strstr(wacom->hdev->name, "WACOM")) {
|
|
strstr(wacom->hdev->name, "WACOM")) {
|
|
/* name is in HID descriptor, use it */
|
|
/* name is in HID descriptor, use it */
|
|
- strlcpy(wacom_wac->name, wacom->hdev->name,
|
|
|
|
- sizeof(wacom_wac->name));
|
|
|
|
|
|
+ strlcpy(name, wacom->hdev->name, sizeof(name));
|
|
|
|
|
|
/* strip out excess whitespaces */
|
|
/* strip out excess whitespaces */
|
|
while (1) {
|
|
while (1) {
|
|
- char *gap = strstr(wacom_wac->name, " ");
|
|
|
|
|
|
+ char *gap = strstr(name, " ");
|
|
if (gap == NULL)
|
|
if (gap == NULL)
|
|
break;
|
|
break;
|
|
/* shift everything including the terminator */
|
|
/* shift everything including the terminator */
|
|
memmove(gap, gap+1, strlen(gap));
|
|
memmove(gap, gap+1, strlen(gap));
|
|
}
|
|
}
|
|
/* get rid of trailing whitespace */
|
|
/* get rid of trailing whitespace */
|
|
- if (wacom_wac->name[strlen(wacom_wac->name)-1] == ' ')
|
|
|
|
- wacom_wac->name[strlen(wacom_wac->name)-1] = '\0';
|
|
|
|
|
|
+ if (name[strlen(name)-1] == ' ')
|
|
|
|
+ name[strlen(name)-1] = '\0';
|
|
} else {
|
|
} else {
|
|
/* no meaningful name retrieved. use product ID */
|
|
/* no meaningful name retrieved. use product ID */
|
|
- snprintf(wacom_wac->name, sizeof(wacom_wac->name),
|
|
|
|
|
|
+ snprintf(name, sizeof(name),
|
|
"%s %X", features->name, wacom->hdev->product);
|
|
"%s %X", features->name, wacom->hdev->product);
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
- strlcpy(wacom_wac->name, features->name, sizeof(wacom_wac->name));
|
|
|
|
|
|
+ strlcpy(name, features->name, sizeof(name));
|
|
}
|
|
}
|
|
|
|
|
|
/* Append the device type to the name */
|
|
/* Append the device type to the name */
|
|
snprintf(wacom_wac->pad_name, sizeof(wacom_wac->pad_name),
|
|
snprintf(wacom_wac->pad_name, sizeof(wacom_wac->pad_name),
|
|
- "%s Pad", wacom_wac->name);
|
|
|
|
|
|
+ "%s Pad", name);
|
|
|
|
|
|
if (features->device_type == BTN_TOOL_PEN) {
|
|
if (features->device_type == BTN_TOOL_PEN) {
|
|
- strlcat(wacom_wac->name, " Pen", WACOM_NAME_MAX);
|
|
|
|
|
|
+ snprintf(wacom_wac->name, sizeof(wacom_wac->name),
|
|
|
|
+ "%s Pen", name);
|
|
}
|
|
}
|
|
else if (features->device_type == BTN_TOOL_FINGER) {
|
|
else if (features->device_type == BTN_TOOL_FINGER) {
|
|
if (features->touch_max)
|
|
if (features->touch_max)
|
|
- strlcat(wacom_wac->name, " Finger", WACOM_NAME_MAX);
|
|
|
|
|
|
+ snprintf(wacom_wac->name, sizeof(wacom_wac->name),
|
|
|
|
+ "%s Finger", name);
|
|
else
|
|
else
|
|
- strlcat(wacom_wac->name, " Pad", WACOM_NAME_MAX);
|
|
|
|
|
|
+ snprintf(wacom_wac->name, sizeof(wacom_wac->name),
|
|
|
|
+ "%s Pad", name);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|