diff -up xorg-server-1.3.0.0/hw/xfree86/loader/loadmod.c.jx xorg-server-1.3.0.0/hw/xfree86/loader/loadmod.c --- xorg-server-1.3.0.0/hw/xfree86/loader/loadmod.c.jx 2007-04-16 12:37:51.000000000 -0400 +++ xorg-server-1.3.0.0/hw/xfree86/loader/loadmod.c 2007-10-10 19:13:47.000000000 -0400 @@ -408,7 +408,8 @@ FindModuleInSubdir(const char *dirpath, while ((direntry = readdir(dir))) { if (direntry->d_name[0] == '.') continue; - if ((stat(direntry->d_name, &stat_buf) == 0) && S_ISDIR(stat_buf.st_mode)) { + + if (direntry->d_type == DT_DIR) { snprintf(tmpBuf, PATH_MAX, "%s/%s", dirpath, direntry->d_name); if ((ret = FindModuleInSubdir(tmpBuf, module))) break; @@ -525,8 +526,7 @@ LoaderListDirs(const char **subdirlist, if (dirlen + strlen(dp->d_name) > PATH_MAX) continue; strcpy(fp, dp->d_name); - if (!(stat(buf, &stat_buf) == 0 && - S_ISREG(stat_buf.st_mode))) + if (dp->d_type == DT_REG) continue; for (p = patterns; p->pattern; p++) { if (regexec(&p->rex, dp->d_name, 2, match, 0) == 0 && diff -up xorg-server-1.3.0.0/hw/xfree86/os-support/linux/lnx_mouse.c.jx xorg-server-1.3.0.0/hw/xfree86/os-support/linux/lnx_mouse.c --- xorg-server-1.3.0.0/hw/xfree86/os-support/linux/lnx_mouse.c.jx 2006-09-18 02:04:18.000000000 -0400 +++ xorg-server-1.3.0.0/hw/xfree86/os-support/linux/lnx_mouse.c 2007-10-11 09:53:33.000000000 -0400 @@ -45,7 +45,8 @@ typedef enum { MOUSE_PROTO_SERIAL, MOUSE_PROTO_PS2, MOUSE_PROTO_MSC, - MOUSE_PROTO_GPM + MOUSE_PROTO_GPM, + MOUSE_PROTO_EXPPS2, } protocolTypes; static struct { @@ -55,7 +56,8 @@ static struct { { MOUSE_PROTO_UNKNOWN, NULL }, { MOUSE_PROTO_PS2, "PS/2" }, { MOUSE_PROTO_MSC, "MouseSystems" }, - { MOUSE_PROTO_GPM, "GPM" } + { MOUSE_PROTO_GPM, "GPM" }, + { MOUSE_PROTO_EXPPS2, "ExplorerPS/2" }, }; static const char * @@ -87,7 +89,7 @@ FindDevice(InputInfoPtr pInfo, const cha } static const char * -GuessProtocol(InputInfoPtr pInfo, int flags) +lnxMouseMagic(InputInfoPtr pInfo) { int fd = -1; const char *dev; @@ -137,8 +139,10 @@ GuessProtocol(InputInfoPtr pInfo, int fl } } - if (strcmp(realdev, DEFAULT_PS2_DEV) == 0) - proto = MOUSE_PROTO_PS2; + if (strcmp(realdev, DEFAULT_MOUSE_DEV) == 0) + proto = MOUSE_PROTO_EXPPS2; + else if (strcmp(realdev, DEFAULT_PS2_DEV) == 0) + proto = MOUSE_PROTO_EXPPS2; else if (strcmp(realdev, DEFAULT_GPM_DATA_DEV) == 0) proto = MOUSE_PROTO_MSC; else if (strcmp(realdev, DEFAULT_GPM_CTL_DEV) == 0) @@ -171,15 +175,14 @@ GuessProtocol(InputInfoPtr pInfo, int fl close(fd); } if (proto == MOUSE_PROTO_UNKNOWN) { - xf86Msg(X_ERROR, "%s: GuessProtocol: Cannot find mouse protocol.\n", + xf86Msg(X_ERROR, "%s: Cannot find mouse protocol.\n", pInfo->name); return NULL; } else { for (i = 0; i < sizeof(devproto)/sizeof(devproto[0]); i++) { if (devproto[i].proto == proto) { xf86Msg(X_INFO, - "%s: GuessProtocol: " - "setting mouse protocol to \"%s\"\n", + "%s: Setting mouse protocol to \"%s\"\n", pInfo->name, devproto[i].name); return devproto[i].name; } @@ -188,6 +191,18 @@ GuessProtocol(InputInfoPtr pInfo, int fl return NULL; } +static const char * +GuessProtocol(InputInfoPtr pInfo, int flags) +{ + return lnxMouseMagic(pInfo); +} + +static const char * +SetupAuto(InputInfoPtr pInfo, int *protoPara) +{ + return lnxMouseMagic(pInfo); +} + _X_EXPORT OSMouseInfoPtr xf86OSMouseInit(int flags) { @@ -200,6 +215,7 @@ xf86OSMouseInit(int flags) p->DefaultProtocol = DefaultProtocol; p->FindDevice = FindDevice; p->GuessProtocol = GuessProtocol; + p->SetupAuto = SetupAuto; return p; }