--- xserver-xorg-input-mouse-1.6.0.orig/configure.ac +++ xserver-xorg-input-mouse-1.6.0/configure.ac @@ -23,7 +23,7 @@ # Initialize Autoconf AC_PREREQ([2.60]) AC_INIT([xf86-input-mouse], - [1.6.0], + [1.6.99], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [xf86-input-mouse]) AC_CONFIG_SRCDIR([Makefile.am]) --- xserver-xorg-input-mouse-1.6.0.orig/autogen.sh +++ xserver-xorg-input-mouse-1.6.0/autogen.sh @@ -0,0 +1,12 @@ +#! /bin/sh + +srcdir=`dirname $0` +test -z "$srcdir" && srcdir=. + +ORIGDIR=`pwd` +cd $srcdir + +autoreconf -v --install || exit 1 +cd $ORIGDIR || exit $? + +$srcdir/configure --enable-maintainer-mode "$@" --- xserver-xorg-input-mouse-1.6.0.orig/ChangeLog +++ xserver-xorg-input-mouse-1.6.0/ChangeLog @@ -531,7 +531,7 @@ Signed-off-by: Peter Hutterer commit 0996fd2e3dcac813ad450884e8c117bc4d49b89a -Merge: 66bdf8d... 8a3f6f7... +Merge: 66bdf8d 8a3f6f7 Author: Charlie Date: Thu Jul 9 10:05:46 2009 +0200 --- xserver-xorg-input-mouse-1.6.0.orig/src/Makefile.am +++ xserver-xorg-input-mouse-1.6.0/src/Makefile.am @@ -39,7 +39,6 @@ mouse.h \ pnp.c \ mousePriv.h \ - xf86OSmouse.h \ @OS_MOUSE_NAME@_mouse.c EXTRA_DIST = $(OS_SRCS) --- xserver-xorg-input-mouse-1.6.0.orig/src/bsd_mouse.c +++ xserver-xorg-input-mouse-1.6.0/src/bsd_mouse.c @@ -33,7 +33,7 @@ #include "xf86Priv.h" #include "xf86_OSlib.h" #include "xf86Xinput.h" -#include "xf86OSmouse.h" +#include "mouse.h" #include "xisb.h" #include "mipointer.h" #ifdef WSCONS_SUPPORT @@ -329,8 +329,8 @@ if (dev) { /* Set the Device option. */ - pInfo->conf_idev->commonOptions = - xf86AddNewOption(pInfo->conf_idev->commonOptions, "Device", dev); + pInfo->options = + xf86AddNewOption(pInfo->options, "Device", dev); xf86Msg(X_INFO, "%s: Setting Device option to \"%s\"\n", pInfo->name, dev); } @@ -369,8 +369,8 @@ SYSCALL(fd = open(*pdev, O_RDWR | O_NONBLOCK)); if (fd != -1) { /* Set the Device option. */ - pInfo->conf_idev->commonOptions = - xf86AddNewOption(pInfo->conf_idev->commonOptions, + pInfo->options = + xf86AddNewOption(pInfo->options, "Device", *pdev); xf86Msg(X_INFO, "%s: found Device \"%s\"\n", pInfo->name, *pdev); @@ -458,7 +458,7 @@ xf86Msg(X_CONFIG, "%s: Protocol: %s\n", pInfo->name, protocol); /* Collect the options, and process the common options. */ - xf86CollectInputOptions(pInfo, NULL, NULL); + COLLECT_INPUT_OPTIONS(pInfo, NULL); xf86ProcessCommonOptions(pInfo, pInfo->options); /* Check if the device can be opened. */ @@ -468,7 +468,7 @@ xf86Msg(X_WARNING, "%s: cannot open input device\n", pInfo->name); else { xf86Msg(X_ERROR, "%s: cannot open input device\n", pInfo->name); - xfree(pMse); + free(pMse); pInfo->private = NULL; return FALSE; } @@ -483,7 +483,9 @@ pInfo->read_input = wsconsReadInput; pMse->xisbscale = sizeof(struct wscons_event); +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12 pInfo->flags |= XI86_CONFIGURED; +#endif return TRUE; } #endif @@ -545,7 +547,7 @@ else { pMse->buffer = XisbNew(pInfo->fd, pUsbMse->packetSize); if (!pMse->buffer) { - xfree(pMse); + free(pMse); xf86CloseSerial(pInfo->fd); pInfo->fd = -1; } else { @@ -566,7 +568,7 @@ if (pInfo->fd != -1) { RemoveEnabledDevice(pInfo->fd); if (pUsbMse->packetSize > 8 && pUsbMse->buffer) { - xfree(pUsbMse->buffer); + free(pUsbMse->buffer); } if (pMse->buffer) { XisbFree(pMse->buffer); @@ -642,10 +644,10 @@ report_desc_t reportDesc; int i; - pUsbMse = xalloc(sizeof(UsbMseRec)); + pUsbMse = malloc(sizeof(UsbMseRec)); if (pUsbMse == NULL) { xf86Msg(X_ERROR, "%s: cannot allocate UsbMouseRec\n", pInfo->name); - xfree(pMse); + free(pMse); return FALSE; } @@ -653,7 +655,7 @@ xf86Msg(X_CONFIG, "%s: Protocol: %s\n", pInfo->name, protocol); /* Collect the options, and process the common options. */ - xf86CollectInputOptions(pInfo, NULL, NULL); + COLLECT_INPUT_OPTIONS(pInfo, NULL); xf86ProcessCommonOptions(pInfo, pInfo->options); /* Check if the device can be opened. */ @@ -663,8 +665,8 @@ xf86Msg(X_WARNING, "%s: cannot open input device\n", pInfo->name); else { xf86Msg(X_ERROR, "%s: cannot open input device\n", pInfo->name); - xfree(pUsbMse); - xfree(pMse); + free(pUsbMse); + free(pMse); return FALSE; } } @@ -687,12 +689,12 @@ if (pUsbMse->packetSize <= 8) { pUsbMse->buffer = pMse->protoBuf; } else { - pUsbMse->buffer = xalloc(pUsbMse->packetSize); + pUsbMse->buffer = malloc(pUsbMse->packetSize); } if (pUsbMse->buffer == NULL) { xf86Msg(X_ERROR, "%s: cannot allocate buffer\n", pInfo->name); - xfree(pUsbMse); - xfree(pMse); + free(pUsbMse); + free(pMse); xf86CloseSerial(pInfo->fd); return FALSE; } @@ -746,7 +748,9 @@ pInfo->device_control = usbMouseProc; pInfo->read_input = usbReadInput; +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12 pInfo->flags |= XI86_CONFIGURED; +#endif return TRUE; } #endif /* USBMOUSE */ @@ -768,12 +772,12 @@ return TRUE; } -_X_EXPORT OSMouseInfoPtr -xf86OSMouseInit(int flags) +OSMouseInfoPtr +OSMouseInit(int flags) { OSMouseInfoPtr p; - p = xcalloc(sizeof(OSMouseInfoRec), 1); + p = calloc(sizeof(OSMouseInfoRec), 1); if (!p) return NULL; p->SupportedInterfaces = SupportedInterfaces; --- xserver-xorg-input-mouse-1.6.0.orig/src/pnp.c +++ xserver-xorg-input-mouse-1.6.0/src/pnp.c @@ -36,7 +36,6 @@ #include "xf86Priv.h" #include "xf86Xinput.h" #include "xf86_OSproc.h" -#include "xf86OSmouse.h" #include "mouse.h" #include "mousePriv.h" --- xserver-xorg-input-mouse-1.6.0.orig/src/hurd_mouse.c +++ xserver-xorg-input-mouse-1.6.0/src/hurd_mouse.c @@ -34,7 +34,7 @@ #include "xf86.h" #include "xf86Xinput.h" -#include "xf86OSmouse.h" +#include "mouse.h" #include "xf86_OSlib.h" #include "xisb.h" @@ -86,6 +86,7 @@ { MouseDevPtr pMse; static kd_event eventList[NUMEVENTS]; + static int remainder = 0; int n, c; kd_event *event = eventList; unsigned char *pBuf; @@ -94,26 +95,27 @@ XisbBlockDuration(pMse->buffer, -1); pBuf = (unsigned char *)eventList; - n = 0; - while ((c = XisbRead(pMse->buffer)) >= 0 && n < sizeof(eventList)) + n = remainder; + while (n < sizeof(eventList) && (c = XisbRead(pMse->buffer)) >= 0) pBuf[n++] = (unsigned char)c; - if (n == 0) + if (n == remainder) return; + remainder = n % sizeof(kd_event); n /= sizeof(kd_event); while( n-- ) { int buttons = pMse->lastButtons; int dx = 0, dy = 0; switch (event->type) { case MOUSE_RIGHT: - buttons = buttons & 6 |(event->value.up ? 0 : 1); + buttons = (buttons & 6) |(event->value.up ? 0 : 1); break; case MOUSE_MIDDLE: - buttons = buttons & 5 |(event->value.up ? 0 : 2); + buttons = (buttons & 5) |(event->value.up ? 0 : 2); break; case MOUSE_LEFT: - buttons = buttons & 3 |(event->value.up ? 0 : 4) ; + buttons = (buttons & 3) |(event->value.up ? 0 : 4) ; break; case MOUSE_MOTION: dx = event->value.mmotion.mm_deltaX; @@ -126,6 +128,7 @@ pMse->PostEvent(pInfo, buttons, dx, dy, 0, 0); ++event; } + memcpy(eventList, event, remainder); return; } @@ -141,7 +144,7 @@ xf86Msg(X_CONFIG, "%s: Protocol: %s\n", pInfo->name, protocol); /* Collect the options, and process the common options. */ - xf86CollectInputOptions(pInfo, NULL, NULL); + COLLECT_INPUT_OPTIONS(pInfo, NULL); xf86ProcessCommonOptions(pInfo, pInfo->options); /* Check if the device can be opened. */ @@ -151,7 +154,7 @@ xf86Msg(X_WARNING, "%s: cannot open input device\n", pInfo->name); else { xf86Msg(X_ERROR, "%s: cannot open input device\n", pInfo->name); - xfree(pMse); + free(pMse); return FALSE; } } @@ -164,7 +167,9 @@ /* Setup the local procs. */ pInfo->read_input = OsMouseReadInput; +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12 pInfo->flags |= XI86_CONFIGURED; +#endif return TRUE; } @@ -180,8 +185,8 @@ return NULL; close(fd); - pInfo->conf_idev->commonOptions = - xf86AddNewOption(pInfo->conf_idev->commonOptions, "Device", path); + pInfo->options = + xf86AddNewOption(pInfo->options, "Device", path); xf86Msg(X_INFO, "%s: Setting Device option to \"%s\"\n", pInfo->name, path); @@ -224,11 +229,11 @@ } OSMouseInfoPtr -xf86OSMouseInit(int flags) +OSMouseInit(int flags) { OSMouseInfoPtr p; - p = xcalloc(sizeof(OSMouseInfoRec), 1); + p = calloc(sizeof(OSMouseInfoRec), 1); if (!p) return NULL; p->SupportedInterfaces = SupportedInterfaces; --- xserver-xorg-input-mouse-1.6.0.orig/src/mouse.c +++ xserver-xorg-input-mouse-1.6.0/src/mouse.c @@ -53,22 +53,15 @@ #include #include #include -#include #include "xf86.h" #include -#include #include "extnsionst.h" #include "extinit.h" #include "xf86Xinput.h" #include "xf86_OSproc.h" -#include "xf86OSmouse.h" - -#ifndef NEED_XF86_TYPES -#define NEED_XF86_TYPES /* for xisb.h when !XFree86LOADER */ -#endif #include "compiler.h" @@ -119,16 +112,13 @@ } DragLockRec, *DragLockPtr; +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12 static InputInfoPtr MousePreInit(InputDriverPtr drv, IDevPtr dev, int flags); -#if 0 -static void MouseUnInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags); +#else +static int MousePreInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags); #endif static int MouseProc(DeviceIntPtr device, int what); -static Bool MouseConvert(LocalDevicePtr local, int first, int num, int v0, - int v1, int v2, int v3, int v4, int v5, int *x, - int *y); - static void MouseCtrl(DeviceIntPtr device, PtrCtrl *ctrl); static void MousePostEvent(InputInfoPtr pInfo, int buttons, int dx, int dy, int dz, int dw); @@ -161,9 +151,8 @@ "mouse", NULL, MousePreInit, - /*MouseUnInit,*/NULL, NULL, - 0 + NULL, }; #define RETRY_COUNT 4 @@ -204,19 +193,6 @@ "VMin", "1", NULL }; -#if 0 -/* Logitech series 9 *//* same as msc: now mlDefaults */ -static const char *logiDefaults[] = { - "BaudRate", "1200", - "DataBits", "8", - "StopBits", "2", - "Parity", "None", - "FlowControl", "None", - "VTime", "0", - "VMin", "1", - NULL -}; -#endif /* Hitachi Tablet */ static const char *mmhitDefaults[] = { "BaudRate", "1200", @@ -318,26 +294,20 @@ } pMse->chordMiddle = xf86SetBoolOption(pInfo->options, "ChordMiddle", FALSE); - if (pMse->chordMiddle) - xf86Msg(X_CONFIG, "%s: ChordMiddle\n", pInfo->name); pMse->flipXY = xf86SetBoolOption(pInfo->options, "FlipXY", FALSE); - if (pMse->flipXY) - xf86Msg(X_CONFIG, "%s: FlipXY\n", pInfo->name); if (xf86SetBoolOption(pInfo->options, "InvX", FALSE)) { pMse->invX = -1; - xf86Msg(X_CONFIG, "%s: InvX\n", pInfo->name); } else pMse->invX = 1; if (xf86SetBoolOption(pInfo->options, "InvY", FALSE)) { pMse->invY = -1; - xf86Msg(X_CONFIG, "%s: InvY\n", pInfo->name); } else pMse->invY = 1; pMse->angleOffset = xf86SetIntOption(pInfo->options, "AngleOffset", 0); if (pMse->pDragLock) - xfree(pMse->pDragLock); + free(pMse->pDragLock); pMse->pDragLock = NULL; s = xf86SetStrOption(pInfo->options, "DragLockButtons", NULL); @@ -350,7 +320,7 @@ char *s1; /* parse input string */ DragLockPtr pLock; - pLock = pMse->pDragLock = xcalloc(1, sizeof(DragLockRec)); + pLock = pMse->pDragLock = calloc(1, sizeof(DragLockRec)); /* init code */ /* initial string to be taken apart */ @@ -441,7 +411,7 @@ } } } - xfree(s); + free(s); } s = xf86SetStrOption(pInfo->options, "ZAxisMapping", "4 5"); @@ -468,7 +438,7 @@ if (b3 > 0 && b3 <= MSE_MAXBUTTONS && b4 > 0 && b4 <= MSE_MAXBUTTONS) { if (msg) - xfree(msg); + free(msg); msg = xstrdup("buttons XX, YY, ZZ and WW"); if (msg) sprintf(msg, "buttons %d, %d, %d and %d", b1, b2, b3, b4); @@ -482,12 +452,12 @@ } if (msg) { xf86Msg(X_CONFIG, "%s: ZAxisMapping: %s\n", pInfo->name, msg); - xfree(msg); + free(msg); } else { xf86Msg(X_WARNING, "%s: Invalid ZAxisMapping value: \"%s\"\n", pInfo->name, s); } - xfree(s); + free(s); } if (xf86SetBoolOption(pInfo->options, "EmulateWheel", FALSE)) { Bool yFromConfig = FALSE; @@ -541,9 +511,9 @@ } if (msg) { xf86Msg(X_CONFIG, "%s: XAxisMapping: %s\n", pInfo->name, msg); - xfree(msg); + free(msg); } - xfree(s); + free(s); } s = xf86SetStrOption(pInfo->options, "YAxisMapping", NULL); if (s) { @@ -567,9 +537,9 @@ } if (msg) { xf86Msg(X_CONFIG, "%s: YAxisMapping: %s\n", pInfo->name, msg); - xfree(msg); + free(msg); } - xfree(s); + free(s); } if (!yFromConfig) { pMse->negativeY = 4; @@ -602,7 +572,7 @@ pMse->buttonMap[n++] = 1 << (b-1); if (b > pMse->buttons) pMse->buttons = b; } - xfree(s); + free(s); } /* get maximum of mapped buttons */ for (i = pMse->buttons-1; i >= 0; i--) { @@ -638,9 +608,9 @@ } if (msg) { xf86Msg(X_CONFIG, "%s: DoubleClickButtons: %s\n", pInfo->name, msg); - xfree(msg); + free(msg); } - xfree(s); + free(s); } } /* @@ -686,55 +656,16 @@ xf86Msg(X_CONFIG, "Don't initialize mouse when auto-probing\n"); } pMse->sampleRate = xf86SetIntOption(pInfo->options, "SampleRate", 0); - if (pMse->sampleRate) { - xf86Msg(X_CONFIG, "%s: SampleRate: %d\n", pInfo->name, - pMse->sampleRate); - } pMse->resolution = xf86SetIntOption(pInfo->options, "Resolution", 0); - if (pMse->resolution) { - xf86Msg(X_CONFIG, "%s: Resolution: %d\n", pInfo->name, - pMse->resolution); - } - - if ((mPriv->sensitivity - = xf86SetRealOption(pInfo->options, "Sensitivity", 1.0))) { - xf86Msg(X_CONFIG, "%s: Sensitivity: %g\n", pInfo->name, - mPriv->sensitivity); - } + mPriv->sensitivity = xf86SetRealOption(pInfo->options, "Sensitivity", 1.0); } static void MouseSerialOptions(InputInfoPtr pInfo) { MouseDevPtr pMse = pInfo->private; - Bool clearDTR, clearRTS; - - - pMse->baudRate = xf86SetIntOption(pInfo->options, "BaudRate", 0); - if (pMse->baudRate) { - xf86Msg(X_CONFIG, "%s: BaudRate: %d\n", pInfo->name, - pMse->baudRate); - } - if ((clearDTR = xf86SetBoolOption(pInfo->options, "ClearDTR",FALSE))) - pMse->mouseFlags |= MF_CLEAR_DTR; - - - if ((clearRTS = xf86SetBoolOption(pInfo->options, "ClearRTS",FALSE))) - pMse->mouseFlags |= MF_CLEAR_RTS; - - if (clearDTR || clearRTS) { - xf86Msg(X_CONFIG, "%s: ", pInfo->name); - if (clearDTR) { - xf86ErrorF("ClearDTR"); - if (clearRTS) - xf86ErrorF(", "); - } - if (clearRTS) { - xf86ErrorF("ClearRTS"); - } - xf86ErrorF("\n"); - } + pMse->baudRate = xf86SetIntOption(pInfo->options, "BaudRate", 0); } static MouseProtocolID @@ -816,7 +747,7 @@ if (osInfo) return TRUE; - osInfo = xf86OSMouseInit(0); + osInfo = OSMouseInit(0); if (!osInfo) return FALSE; if (!osInfo->SupportedInterfaces) @@ -847,66 +778,152 @@ return TRUE; } +static const char* +MouseFindDevice(InputInfoPtr pInfo, const char* protocol) +{ + const char *device; + + if (!osInfo->FindDevice) + return NULL; + + xf86Msg(X_WARNING, "%s: No Device specified, looking for one...\n", pInfo->name); + device = osInfo->FindDevice(pInfo, protocol, 0); + if (!device) + xf86Msg(X_ERROR, "%s: Cannot find which device to use.\n", pInfo->name); + else + xf86Msg(X_PROBED, "%s: Device: \"%s\"\n", pInfo->name, device); + + return device; +} + +static const char* +MousePickProtocol(InputInfoPtr pInfo, const char* device, + const char *protocol, MouseProtocolID *protocolID_out) +{ + MouseProtocolID protocolID = *protocolID_out; + + protocolID = ProtocolNameToID(protocol); + + if (protocolID == PROT_AUTO) + { + const char *osProt; + if (osInfo->SetupAuto && (osProt = osInfo->SetupAuto(pInfo,NULL))) { + MouseProtocolID id = ProtocolNameToID(osProt); + if (id == PROT_UNKNOWN || id == PROT_UNSUP) { + protocolID = id; + protocol = osProt; + } + } + } + + switch (protocolID) { + case PROT_UNKNOWN: + /* Check for a builtin OS-specific protocol, + * and call its PreInit. */ + if (osInfo->CheckProtocol + && osInfo->CheckProtocol(protocol)) { + if (!device) + MouseFindDevice(pInfo, protocol); + if (osInfo->PreInit) { + osInfo->PreInit(pInfo, protocol, 0); + } + break; + } + xf86Msg(X_ERROR, "%s: Unknown protocol \"%s\"\n", + pInfo->name, protocol); + break; + case PROT_UNSUP: + xf86Msg(X_ERROR, + "%s: Protocol \"%s\" is not supported on this " + "platform\n", pInfo->name, protocol); + break; + default: + break; + } + + *protocolID_out = protocolID; + + return protocol; +} + +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12 +static int NewMousePreInit(InputDriverPtr drv, InputInfoPtr pInfo, + int flags); + static InputInfoPtr MousePreInit(InputDriverPtr drv, IDevPtr dev, int flags) { InputInfoPtr pInfo; + + if (!(pInfo = xf86AllocateInput(drv, 0))) + return NULL; + + pInfo->name = dev->identifier; + pInfo->flags = XI86_SEND_DRAG_EVENTS; + pInfo->conf_idev = dev; + pInfo->close_proc = NULL; + pInfo->private_flags = 0; + pInfo->always_core_feedback = NULL; + + if (NewMousePreInit(drv, pInfo, flags) == Success) + { + /* Check if SendDragEvents has been disabled. */ + if (!xf86SetBoolOption(dev->commonOptions, "SendDragEvents", TRUE)) + pInfo->flags &= ~XI86_SEND_DRAG_EVENTS; + + pInfo->flags |= XI86_CONFIGURED; + + return pInfo; + } + + xf86DeleteInput(pInfo, 0); + + return NULL; +} + +static int +NewMousePreInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags) +#else +static int +MousePreInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags) +#endif +{ MouseDevPtr pMse; mousePrivPtr mPriv; - MessageType protocolFrom = X_DEFAULT, deviceFrom = X_CONFIG; - const char *protocol, *osProt = NULL; + MessageType protocolFrom = X_DEFAULT; + const char *protocol; const char *device; MouseProtocolID protocolID; MouseProtocolPtr pProto; - Bool detected; int i; - - if (!InitProtocols()) - return NULL; + int rc = Success; - if (!(pInfo = xf86AllocateInput(drv, 0))) - return NULL; + if (!InitProtocols()) + return BadAlloc; /* Initialise the InputInfoRec. */ - pInfo->name = dev->identifier; pInfo->type_name = XI_MOUSE; - pInfo->flags = XI86_POINTER_CAPABLE | XI86_SEND_DRAG_EVENTS; pInfo->device_control = MouseProc; pInfo->read_input = MouseReadInput; -#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 0 - pInfo->motion_history_proc = xf86GetMotionEvents; - pInfo->history_size = 0; -#endif pInfo->control_proc = NULL; - pInfo->close_proc = NULL; pInfo->switch_mode = NULL; - pInfo->conversion_proc = MouseConvert; - pInfo->reverse_conversion_proc = NULL; pInfo->fd = -1; pInfo->dev = NULL; - pInfo->private_flags = 0; - pInfo->always_core_feedback = NULL; - pInfo->conf_idev = dev; - /* Check if SendDragEvents has been disabled. */ - if (!xf86SetBoolOption(dev->commonOptions, "SendDragEvents", TRUE)) { - pInfo->flags &= ~XI86_SEND_DRAG_EVENTS; + /* Allocate the MouseDevRec and initialise it. */ + if (!(pMse = calloc(sizeof(MouseDevRec), 1))) + { + rc = BadAlloc; + goto out; } - /* Allocate the MouseDevRec and initialise it. */ - /* - * XXX This should be done by a function in the core server since the - * MouseDevRec is defined in the os-support layer. - */ - if (!(pMse = xcalloc(sizeof(MouseDevRec), 1))) - return pInfo; pInfo->private = pMse; pMse->Ctrl = MouseCtrl; pMse->PostEvent = MousePostEvent; pMse->CommonOptions = MouseCommonOptions; - + /* Find the protocol type. */ - protocol = xf86SetStrOption(dev->commonOptions, "Protocol", NULL); + protocol = xf86SetStrOption(pInfo->options, "Protocol", NULL); if (protocol) { protocolFrom = X_CONFIG; } else if (osInfo->DefaultProtocol) { @@ -915,92 +932,42 @@ } if (!protocol) { xf86Msg(X_ERROR, "%s: No Protocol specified\n", pInfo->name); - return pInfo; + rc = BadValue; + goto out; } + device = xf86SetStrOption(pInfo->options, "Device", NULL); + /* Default Mapping: 1 2 3 8 9 10 11 ... */ for (i = 0; i < MSE_MAXBUTTONS; i++) pMse->buttonMap[i] = 1 << (i > 2 && i < MSE_MAXBUTTONS-4 ? i+4 : i); - protocolID = ProtocolNameToID(protocol); - do { - detected = TRUE; - switch (protocolID) { - case PROT_AUTO: - if (osInfo->SetupAuto) { - if ((osProt = osInfo->SetupAuto(pInfo,NULL))) { - MouseProtocolID id = ProtocolNameToID(osProt); - if (id == PROT_UNKNOWN || id == PROT_UNSUP) { - protocolID = id; - protocol = osProt; - detected = FALSE; - } - } - } - break; - case PROT_UNKNOWN: - /* Check for a builtin OS-specific protocol, - * and call its PreInit. */ - if (osInfo->CheckProtocol - && osInfo->CheckProtocol(protocol)) { - if (!xf86CheckStrOption(dev->commonOptions, "Device", NULL) && - osInfo->FindDevice) { - xf86Msg(X_WARNING, "%s: No Device specified, " - "looking for one...\n", pInfo->name); - if (!osInfo->FindDevice(pInfo, protocol, 0)) { - xf86Msg(X_ERROR, "%s: Cannot find which device " - "to use.\n", pInfo->name); - } else - deviceFrom = X_PROBED; - } - if (osInfo->PreInit) { - osInfo->PreInit(pInfo, protocol, 0); - } - return pInfo; - } - xf86Msg(X_ERROR, "%s: Unknown protocol \"%s\"\n", - pInfo->name, protocol); - return pInfo; - break; - case PROT_UNSUP: - xf86Msg(X_ERROR, - "%s: Protocol \"%s\" is not supported on this " - "platform\n", pInfo->name, protocol); - return pInfo; - break; - default: - break; - - } - } while (!detected); - - if (!xf86CheckStrOption(dev->commonOptions, "Device", NULL) && - osInfo->FindDevice) { - xf86Msg(X_WARNING, "%s: No Device specified, looking for one...\n", - pInfo->name); - if (!osInfo->FindDevice(pInfo, protocol, 0)) { - xf86Msg(X_ERROR, "%s: Cannot find which device to use.\n", - pInfo->name); - } else { - deviceFrom = X_PROBED; - xf86MarkOptionUsedByName(dev->commonOptions, "Device"); - } - } + protocol = MousePickProtocol(pInfo, device, protocol, &protocolID); + + if (!device) + MouseFindDevice(pInfo, protocol); - device = xf86CheckStrOption(dev->commonOptions, "Device", NULL); - if (device) - xf86Msg(deviceFrom, "%s: Device: \"%s\"\n", pInfo->name, device); - xf86Msg(protocolFrom, "%s: Protocol: \"%s\"\n", pInfo->name, protocol); if (!(pProto = GetProtocol(protocolID))) - return pInfo; + { + rc = BadValue; + goto out; + } pMse->protocolID = protocolID; pMse->oldProtocolID = protocolID; /* hack */ pMse->autoProbe = FALSE; /* Collect the options, and process the common options. */ - xf86CollectInputOptions(pInfo, pProto->defaults, NULL); +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12 + /* need some special handling here. xf86CollectInputOptions will reset + * pInfo->options if the second argument is not-null. To re-merge the + * previously set arguments, pass the original pInfo->options in. + */ + xf86CollectInputOptions(pInfo, pProto->defaults, pInfo->options); +#else + COLLECT_INPUT_OPTIONS(pInfo, pProto->defaults); +#endif xf86ProcessCommonOptions(pInfo, pInfo->options); /* Check if the device can be opened. */ @@ -1011,17 +978,22 @@ else { xf86Msg(X_ERROR, "%s: cannot open input device\n", pInfo->name); if (pMse->mousePriv) - xfree(pMse->mousePriv); - xfree(pMse); + free(pMse->mousePriv); + free(pMse); pInfo->private = NULL; - return pInfo; + rc = BadValue; + goto out; } } xf86CloseSerial(pInfo->fd); pInfo->fd = -1; - if (!(mPriv = (pointer) xcalloc(sizeof(mousePrivRec), 1))) - return pInfo; + if (!(mPriv = (pointer) calloc(sizeof(mousePrivRec), 1))) + { + rc = BadAlloc; + goto out; + } + pMse->mousePriv = mPriv; pMse->CommonOptions(pInfo); pMse->checkMovements = checkForErraticMovements; @@ -1031,9 +1003,9 @@ MouseHWOptions(pInfo); MouseSerialOptions(pInfo); - - pInfo->flags |= XI86_CONFIGURED; - return pInfo; + +out: + return rc; } @@ -1599,17 +1571,8 @@ #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7 btn_labels, #endif -#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 0 - miPointerGetMotionEvents, -#elif GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 3 - GetMotionHistory, -#endif pMse->Ctrl, -#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 0 - miPointerGetMotionBufferSize() -#else GetMotionHistorySize(), 2 -#endif #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7 , axes_labels #endif @@ -1620,18 +1583,23 @@ #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7 axes_labels[0], #endif - -1, -1, 1, 0, 1); + -1, -1, 1, 0, 1 +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12 + , Relative +#endif + ); xf86InitValuatorDefaults(device, 0); /* Y valuator */ xf86InitValuatorAxisStruct(device, 1, #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7 axes_labels[1], #endif - -1, -1, 1, 0, 1); - xf86InitValuatorDefaults(device, 1); -#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 0 - xf86MotionHistoryAllocate(pInfo); + -1, -1, 1, 0, 1 +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12 + , Relative #endif + ); + xf86InitValuatorDefaults(device, 1); #ifdef EXTMOUSEDEBUG ErrorF("assigning %p atom=%d name=%s\n", device, pInfo->atom, @@ -1711,34 +1679,13 @@ device->public.on = FALSE; break; case DEVICE_CLOSE: - xfree(pMse->mousePriv); + free(pMse->mousePriv); pMse->mousePriv = NULL; break; } return Success; } -/* - *************************************************************************** - * - * MouseConvert -- - * Convert valuators to X and Y. - * - *************************************************************************** - */ -static Bool -MouseConvert(InputInfoPtr pInfo, int first, int num, int v0, int v1, int v2, - int v3, int v4, int v5, int *x, int *y) -{ - if (first != 0 || num != 2) - return FALSE; - - *x = v0; - *y = v1; - - return TRUE; -} - /********************************************************************** * * FlushButtons -- reset button states. @@ -2385,7 +2332,7 @@ ******************************************************************/ /* * This array is indexed by the MouseProtocolID values, so the order of the - * entries must match that of the MouseProtocolID enum in xf86OSmouse.h. + * entries must match that of the MouseProtocolID enum in mouse.h. */ static unsigned char proto[PROT_NUMPROTOS][8] = { /* --header-- ---data--- packet -4th-byte- mouse */ @@ -2463,13 +2410,7 @@ pMse->protoPara[i] = protoPara[i]; /* if we come here PnP/OS mouse probing was successful */ } else { -#if 1 /* PnP/OS mouse probing wasn't successful; we look at data */ -#else - xf86Msg(X_ERROR, "%s: cannot determine the mouse protocol\n", - pInfo->name); - return FALSE; -#endif } } @@ -2625,7 +2566,7 @@ usleep(100000); /* Set the parameters up for the MM series protocol. */ options = pInfo->options; - xf86CollectInputOptions(pInfo, mmDefaults, NULL); + COLLECT_INPUT_OPTIONS(pInfo, mmDefaults); xf86SetSerial(pInfo->fd, pInfo->options); pInfo->options = options; @@ -3149,7 +3090,7 @@ blocked = xf86BlockSIGIO (); /* create a private copy first so we can write in the old list */ - if ((tmplist = xalloc(sizeof(MouseProtocolID) * NUM_AUTOPROBE_PROTOS))){ + if ((tmplist = malloc(sizeof(MouseProtocolID) * NUM_AUTOPROBE_PROTOS))){ for (i = 0; protoList[i] != PROT_UNKNOWN; i++) { tmplist[i] = protoList[i]; } @@ -3259,7 +3200,7 @@ mPriv->protoList[k] = PROT_UNKNOWN; - xfree(tmplist); + free(tmplist); } --- xserver-xorg-input-mouse-1.6.0.orig/src/mouse.h +++ xserver-xorg-input-mouse-1.6.0/src/mouse.h @@ -1,10 +1,262 @@ /* - * Copyright (c) 1997-1999 by The XFree86 Project, Inc. + * Copyright (c) 1999-2003 by The XFree86 Project, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of the copyright holder(s) + * and author(s) shall not be used in advertising or otherwise to promote + * the sale, use or other dealings in this Software without prior written + * authorization from the copyright holder(s) and author(s). */ -#ifndef MOUSE_H_ -#define MOUSE_H_ +/* Public interface to OS-specific mouse support. */ -#include "xf86OSmouse.h" +#ifndef _XF86OSMOUSE_H_ +#define _XF86OSMOUSE_H_ +#include "xf86Xinput.h" + +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12 +#define COLLECT_INPUT_OPTIONS(pInfo, options) xf86CollectInputOptions((pInfo), (options), NULL) +#else +#define COLLECT_INPUT_OPTIONS(pInfo, options) xf86CollectInputOptions((pInfo), (options)) #endif + + +/* Mouse interface classes */ +#define MSE_NONE 0x00 +#define MSE_SERIAL 0x01 /* serial port */ +#define MSE_BUS 0x02 /* old bus mouse */ +#define MSE_PS2 0x04 /* standard read-only PS/2 */ +#define MSE_XPS2 0x08 /* extended PS/2 */ +#define MSE_AUTO 0x10 /* auto-detect (PnP) */ +#define MSE_MISC 0x20 /* The OS layer will identify the + * specific protocol names that are + * supported for this class. */ + +/* Mouse Protocol IDs. */ +typedef enum { + PROT_UNKNOWN = -2, + PROT_UNSUP = -1, /* protocol is not supported */ + PROT_MS = 0, + PROT_MSC, + PROT_MM, + PROT_LOGI, + PROT_LOGIMAN, + PROT_MMHIT, + PROT_GLIDE, + PROT_IMSERIAL, + PROT_THINKING, + PROT_ACECAD, + PROT_VALUMOUSESCROLL, + PROT_PS2, + PROT_GENPS2, + PROT_IMPS2, + PROT_EXPPS2, + PROT_THINKPS2, + PROT_MMPS2, + PROT_GLIDEPS2, + PROT_NETPS2, + PROT_NETSCPS2, + PROT_BM, + PROT_AUTO, + PROT_SYSMOUSE, + PROT_NUMPROTOS /* This must always be last. */ +} MouseProtocolID; + +struct _MouseDevRec; + +typedef int (*GetInterfaceTypesProc)(void); +typedef const char **(*BuiltinNamesProc)(void); +typedef Bool (*CheckProtocolProc)(const char *protocol); +typedef Bool (*BuiltinPreInitProc)(InputInfoPtr pInfo, const char *protocol, + int flags); +typedef const char *(*DefaultProtocolProc)(void); +typedef const char *(*SetupAutoProc)(InputInfoPtr pInfo, int *protoPara); +typedef void (*SetResProc)(InputInfoPtr pInfo, const char* protocol, int rate, + int res); +typedef const char *(*FindDeviceProc)(InputInfoPtr pInfo, const char *protocol, + int flags); +typedef const char *(*GuessProtocolProc)(InputInfoPtr pInfo, int flags); + +/* + * OSMouseInfoRec is used to pass information from the OSMouse layer to the + * OS-independent mouse driver. + */ +typedef struct { + GetInterfaceTypesProc SupportedInterfaces; + BuiltinNamesProc BuiltinNames; + CheckProtocolProc CheckProtocol; + BuiltinPreInitProc PreInit; + DefaultProtocolProc DefaultProtocol; + SetupAutoProc SetupAuto; + SetResProc SetPS2Res; + SetResProc SetBMRes; + SetResProc SetMiscRes; + FindDeviceProc FindDevice; + GuessProtocolProc GuessProtocol; +} OSMouseInfoRec, *OSMouseInfoPtr; + +/* + * SupportedInterfaces: Returns the mouse interface types that the OS support. + * If MSE_MISC is returned, then the BuiltinNames and + * CheckProtocol should be set. + * + * BuiltinNames: Returns the names of the protocols that are fully handled + * in the OS-specific code. These are names that don't appear + * directly in the main "mouse" driver. + * + * CheckProtocol: Checks if the protocol name given is supported by the + * OS. It should return TRUE for both "builtin" protocols and + * protocols of type MSE_MISC that are supported by the OS. + * + * PreInit: The PreInit function for protocols that are builtin. This + * function is passed the protocol name. + * + * DefaultProtocol: Returns the name of a default protocol that should be used + * for the OS when none has been supplied in the config file. + * This should only be set when there is a reasonable default. + * + * SetupAuto: This function can be used to do OS-specific protocol + * auto-detection. It returns the name of the detected protocol, + * or NULL when detection fails. It may also adjust one or more + * of the "protoPara" values for the detected protocol by setting + * then to something other than -1. SetupAuto gets called in two + * ways. The first is before any devices have been opened. This + * can be used when the protocol "Auto" always maps to a single + * protocol type. The second is with the device open, allowing + * OS-specific probing to be done. + * + * SetPS2Res: Set the resolution and sample rate for MSE_PS2 and MSE_XPS2 + * protocol types. + * + * SetBMRes: Set the resolution and sample rate for MSE_BM protocol types. + * + * SetMiscRes: Set the resolution and sample rate for MSE_MISC protocol types. + * + * FindDevice: This function gets called when no Device has been specified + * in the config file. OS-specific methods may be used to guess + * which input device to use. This function is called after the + * pre-open attempts at protocol discovery are done, but before + * the device is open. I.e., after the first SetupAuto() call, + * after the DefaultProtocol() call, but before the PreInit() + * call. Available protocol information may be used in locating + * the default input device. + * + * GuessProtocol: A last resort attempt at guessing the mouse protocol by + * whatever OS-specific means might be available. OS-independent + * things should be in the mouse driver. This function gets + * called after the mouse driver's OS-independent methods have + * failed. + */ + +extern OSMouseInfoPtr OSMouseInit(int flags); + +/* Z axis mapping */ +#define MSE_NOZMAP 0 +#define MSE_MAPTOX -1 +#define MSE_MAPTOY -2 +#define MSE_MAPTOZ -3 +#define MSE_MAPTOW -4 + +/* Generalize for other axes. */ +#define MSE_NOAXISMAP MSE_NOZMAP + +#define MSE_MAXBUTTONS 24 +#define MSE_DFLTBUTTONS 3 + +/* + * Mouse device record. This is shared by the mouse driver and the OSMouse + * layer. + */ + +typedef void (*checkMovementsProc)(InputInfoPtr,int, int); +typedef void (*autoProbeProc)(InputInfoPtr, Bool, Bool); +typedef Bool (*collectDataProc)(struct _MouseDevRec *, unsigned char); +typedef Bool (*dataGoodProc)(struct _MouseDevRec *); + +typedef void (*PostMseEventProc)(InputInfoPtr pInfo, int buttons, + int dx, int dy, int dz, int dw); +typedef void (*MouseCommonOptProc)(InputInfoPtr pInfo); + +typedef struct _MouseDevRec { + PtrCtrlProcPtr Ctrl; + PostMseEventProc PostEvent; + MouseCommonOptProc CommonOptions; + DeviceIntPtr device; + const char * protocol; + MouseProtocolID protocolID; + MouseProtocolID oldProtocolID; /* hack */ + int class; + int mseModel; + int baudRate; + int oldBaudRate; + int sampleRate; + int lastButtons; + int buttons; /* # of buttons */ + int emulateState; /* automata state for 2 button mode */ + Bool emulate3Buttons; + Bool emulate3ButtonsSoft; + int emulate3Timeout;/* Timeout for 3 button emulation */ + Bool chordMiddle; + Bool flipXY; + int invX; + int invY; + int resolution; + int negativeZ; /* button mask */ + int positiveZ; /* button mask */ + int negativeW; /* button mask */ + int positiveW; /* button mask */ + pointer buffer; /* usually an XISBuffer* */ + int protoBufTail; + unsigned char protoBuf[8]; + unsigned char protoPara[8]; + unsigned char inSync; /* driver in sync with datastream */ + pointer mousePriv; /* private area */ + InputInfoPtr pInfo; + Bool emulate3Pending;/* timer waiting */ + CARD32 emulate3Expires;/* time to fire emulation code */ + Bool emulateWheel; + int wheelInertia; + int wheelButton; + int negativeX; /* Button values. Unlike the Z and */ + int positiveX; /* W equivalents, these are button */ + int negativeY; /* values rather than button masks. */ + int positiveY; + int wheelYDistance; + int wheelXDistance; + Bool autoProbe; + checkMovementsProc checkMovements; + autoProbeProc autoProbeMouse; + collectDataProc collectData; + dataGoodProc dataGood; + int angleOffset; + pointer pDragLock; /* drag lock area */ + int xisbscale; /* buffer size for 1 event */ + int wheelButtonTimeout;/* Timeout for the wheel button emulation */ + CARD32 wheelButtonExpires; + int doubleClickSourceButtonMask; + int doubleClickTargetButton; + int doubleClickTargetButtonMask; + int doubleClickOldSourceState; + int lastMappedButtons; + int buttonMap[MSE_MAXBUTTONS]; +} MouseDevRec, *MouseDevPtr; + +#endif /* _XF86OSMOUSE_H_ */ --- xserver-xorg-input-mouse-1.6.0.orig/src/lnx_mouse.c +++ xserver-xorg-input-mouse-1.6.0/src/lnx_mouse.c @@ -11,7 +11,7 @@ #include #include "xf86.h" #include "xf86Xinput.h" -#include "xf86OSmouse.h" +#include "mouse.h" #include "xf86_OSlib.h" #include #include @@ -80,8 +80,8 @@ if (*pdev) { close(fd); /* Set the Device option. */ - pInfo->conf_idev->commonOptions = - xf86AddNewOption(pInfo->conf_idev->commonOptions, "Device", *pdev); + pInfo->options = + xf86AddNewOption(pInfo->options, "Device", *pdev); xf86Msg(X_INFO, "%s: Setting Device option to \"%s\"\n", pInfo->name, *pdev); } @@ -99,7 +99,7 @@ int i; int proto = MOUSE_PROTO_UNKNOWN; - dev = xf86SetStrOption(pInfo->conf_idev->commonOptions, "Device", NULL); + dev = xf86SetStrOption(pInfo->options, "Device", NULL); if (!dev) { #ifdef DEBUG ErrorF("xf86SetStrOption failed to return the device name\n"); @@ -122,7 +122,7 @@ #ifdef DEBUG ErrorF("readlink failed for %s (%s)\n", dev, strerror(errno)); #endif - xfree(realdev); + free(realdev); return NULL; } realdev[i] = '\0'; @@ -135,7 +135,7 @@ if (!strchr(realdev, '/')) { char *tmp = xnfalloc(strlen(realdev) + 5 + 1); sprintf(tmp, "/dev/%s", realdev); - xfree(realdev); + free(realdev); realdev = tmp; } } @@ -148,7 +148,7 @@ proto = MOUSE_PROTO_MSC; else if (strcmp(realdev, DEFAULT_GPM_CTL_DEV) == 0) proto = MOUSE_PROTO_GPM; - xfree(realdev); + free(realdev); /* * If the protocol can't be guessed from the device name, * try to characterise it. @@ -204,12 +204,12 @@ return lnxMouseMagic(pInfo); } -_X_EXPORT OSMouseInfoPtr -xf86OSMouseInit(int flags) +OSMouseInfoPtr +OSMouseInit(int flags) { OSMouseInfoPtr p; - p = xcalloc(sizeof(OSMouseInfoRec), 1); + p = calloc(sizeof(OSMouseInfoRec), 1); if (!p) return NULL; p->SupportedInterfaces = SupportedInterfaces; --- xserver-xorg-input-mouse-1.6.0.orig/src/sun_mouse.c +++ xserver-xorg-input-mouse-1.6.0/src/sun_mouse.c @@ -54,7 +54,7 @@ #include "xorg-server.h" #include "xf86.h" #include "xf86_OSlib.h" -#include "xf86OSmouse.h" +#include "mouse.h" #include "xisb.h" #include "mipointer.h" #include @@ -205,10 +205,10 @@ VuidMsePtr pVuidMse; int buttons, i; - pVuidMse = xcalloc(sizeof(VuidMseRec), 1); + pVuidMse = calloc(sizeof(VuidMseRec), 1); if (pVuidMse == NULL) { xf86Msg(X_ERROR, "%s: cannot allocate VuidMouseRec\n", pInfo->name); - xfree(pMse); + free(pMse); return FALSE; } @@ -216,7 +216,7 @@ xf86Msg(X_CONFIG, "%s: Protocol: %s\n", pInfo->name, protocol); /* Collect the options, and process the common options. */ - xf86CollectInputOptions(pInfo, NULL, NULL); + COLLECT_INPUT_OPTIONS(pInfo, NULL); xf86ProcessCommonOptions(pInfo, pInfo->options); pVuidMse->buffer = (unsigned char *)&pVuidMse->event; @@ -229,9 +229,9 @@ xf86Msg(X_WARNING, "%s: cannot open input device\n", pInfo->name); } else { xf86Msg(X_ERROR, "%s: cannot open input device\n", pInfo->name); - xfree(pVuidMse->strmod); - xfree(pVuidMse); - xfree(pMse); + free(pVuidMse->strmod); + free(pVuidMse); + free(pMse); return FALSE; } } else { @@ -247,9 +247,9 @@ pInfo->name, pVuidMse->strmod, strerror(errno)); xf86CloseSerial(pInfo->fd); pInfo->fd = -1; - xfree(pVuidMse->strmod); - xfree(pVuidMse); - xfree(pMse); + free(pVuidMse->strmod); + free(pVuidMse); + free(pMse); return FALSE; } } @@ -259,8 +259,8 @@ if (buttons == 0) { SYSCALL(i = ioctl(pInfo->fd, MSIOBUTTONS, &buttons)); if (i == 0) { - pInfo->conf_idev->commonOptions = - xf86ReplaceIntOption(pInfo->conf_idev->commonOptions, + pInfo->options = + xf86ReplaceIntOption(pInfo->options, "Buttons", buttons); xf86Msg(X_INFO, "%s: Setting Buttons option to \"%d\"\n", pInfo->name, buttons); @@ -297,7 +297,9 @@ pVuidMse->next = vuidMouseList; vuidMouseList = pVuidMse; +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12 pInfo->flags |= XI86_CONFIGURED; +#endif return TRUE; } @@ -443,11 +445,7 @@ /* force sending absolute resolution scaling ioctl */ pVuidMse->absres.height = pVuidMse->absres.width = 0; -#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 0 - ptrCurScreen = miPointerCurrentScreen(); -#else ptrCurScreen = miPointerGetScreen(pInfo->dev); -#endif vuidMouseSendScreenSize(ptrCurScreen, pVuidMse); } #endif @@ -512,14 +510,8 @@ pScrn->AdjustFrame = vuidMouseAdjustFrame; } -#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 0 - ptrCurScreen = miPointerCurrentScreen(); -#endif - for (m = vuidMouseList; m != NULL ; m = m->next) { -#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 0 ptrCurScreen = miPointerGetScreen(m->pInfo->dev); -#endif if (ptrCurScreen == pScreen) { vuidMouseSendScreenSize(pScreen, m); @@ -586,7 +578,7 @@ xf86Msg(X_WARNING, "%s: cannot push module '%s' " "onto mouse device: %s\n", pInfo->name, pVuidMse->strmod, strerror(errno)); - xfree(pVuidMse->strmod); + free(pVuidMse->strmod); pVuidMse->strmod = NULL; } } @@ -686,16 +678,14 @@ /* Check to see if xorg.conf or HAL specified a device to use */ *device = xf86CheckStrOption(pInfo->options, "Device", NULL); if (*device == NULL) { - *device = xf86CheckStrOption(pInfo->conf_idev->commonOptions, - "Device", NULL); + *device = xf86CheckStrOption(pInfo->options, "Device", NULL); } } if (*device != NULL) { strmod = xf86CheckStrOption(pInfo->options, "StreamsModule", NULL); if (strmod == NULL) { - strmod = xf86CheckStrOption(pInfo->conf_idev->commonOptions, - "StreamsModule", NULL); + strmod = xf86CheckStrOption(pInfo->options, "StreamsModule", NULL); } if (strmod) { /* if a device name is already known, and a StreamsModule is @@ -754,13 +744,13 @@ /* probe to find device/protocol to use */ if (solarisMouseAutoProbe(pInfo, &pproto, &pdev) != FALSE) { /* Set the Device option. */ - pInfo->conf_idev->commonOptions = - xf86AddNewOption(pInfo->conf_idev->commonOptions, "Device", pdev); + pInfo->options = + xf86AddNewOption(pInfo->options, "Device", pdev); xf86Msg(X_INFO, "%s: Setting Device option to \"%s\"\n", pInfo->name, pdev); } } else if (pMse->protocolID == PROT_AUTO) { - pdev = xf86CheckStrOption(pInfo->conf_idev->commonOptions, + pdev = xf86CheckStrOption(pInfo->options, "Device", NULL); solarisMouseAutoProbe(pInfo, &pproto, &pdev); } @@ -775,8 +765,8 @@ if (solarisMouseAutoProbe(pInfo, &pproto, &pdev) != FALSE) { /* Set the Device option. */ - pInfo->conf_idev->commonOptions = - xf86AddNewOption(pInfo->conf_idev->commonOptions, "Device", pdev); + pInfo->options = + xf86AddNewOption(pInfo->options, "Device", pdev); xf86Msg(X_INFO, "%s: Setting Device option to \"%s\"\n", pInfo->name, pdev); } @@ -790,12 +780,12 @@ return MSE_SERIAL | MSE_BUS | MSE_PS2 | MSE_AUTO | MSE_XPS2 | MSE_MISC; } -_X_EXPORT OSMouseInfoPtr -xf86OSMouseInit(int flags) +OSMouseInfoPtr +OSMouseInit(int flags) { OSMouseInfoPtr p; - p = xcalloc(sizeof(OSMouseInfoRec), 1); + p = calloc(sizeof(OSMouseInfoRec), 1); if (!p) return NULL; p->SupportedInterfaces = SupportedInterfaces; --- xserver-xorg-input-mouse-1.6.0.orig/debian/compat +++ xserver-xorg-input-mouse-1.6.0/debian/compat @@ -0,0 +1 @@ +5 --- xserver-xorg-input-mouse-1.6.0.orig/debian/xserver-xorg-input-mouse.manpages +++ xserver-xorg-input-mouse-1.6.0/debian/xserver-xorg-input-mouse.manpages @@ -0,0 +1 @@ +debian/tmp/usr/share/man/man4/* --- xserver-xorg-input-mouse-1.6.0.orig/debian/xserver-xorg-input-mouse.links +++ xserver-xorg-input-mouse-1.6.0/debian/xserver-xorg-input-mouse.links @@ -0,0 +1 @@ +usr/share/bug/xserver-xorg-core/script usr/share/bug/xserver-xorg-input-mouse/script --- xserver-xorg-input-mouse-1.6.0.orig/debian/copyright +++ xserver-xorg-input-mouse-1.6.0/debian/copyright @@ -0,0 +1,135 @@ +This package was downloaded from +http://xorg.freedesktop.org/releases/individual/driver/ + +Copyright (c) 2004-2005, 2008-2010, Oracle and/or its affiliates. +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice (including the next +paragraph) shall be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany. +Copyright 1993 by David Dawes +Copyright 2002 by SuSE Linux AG, Author: Egbert Eich +Copyright 1994-2002 by The XFree86 Project, Inc. +Copyright 2002 by Paul Elliott + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the names of copyright holders not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. The copyright holders +make no representations about the suitability of this +software for any purpose. It is provided "as is" without express or +implied warranty. + +THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS +SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY +SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER +RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF +CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1998 by Kazutaka YOKOTA + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Kazutaka YOKOTA not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Kazutaka YOKOTA makes no representations +about the suitability of this software for any purpose. It is provided +"as is" without express or implied warranty. + +KAZUTAKA YOKOTA DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL KAZUTAKA YOKOTA BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + +Copyright (c) 1999-2003 by The XFree86 Project, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of the copyright holder(s) +and author(s) shall not be used in advertising or otherwise to promote +the sale, use or other dealings in this Software without prior written +authorization from the copyright holder(s) and author(s). + +Copyright 1997,1998 by UCHIYAMA Yasushi + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of UCHIYAMA Yasushi not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. UCHIYAMA Yasushi makes no representations +about the suitability of this software for any purpose. It is provided +"as is" without express or implied warranty. + +UCHIYAMA YASUSHI DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL UCHIYAMA YASUSHI BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + +Copyright 2001 by J. Kean Johnston + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name J. Kean Johnston not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. J. Kean Johnston makes no +representations about the suitability of this software for any purpose. +It is provided "as is" without express or implied warranty. + +J. KEAN JOHNSTON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL J. KEAN JOHNSTON BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF +USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. --- xserver-xorg-input-mouse-1.6.0.orig/debian/README.source +++ xserver-xorg-input-mouse-1.6.0/debian/README.source @@ -0,0 +1,73 @@ +------------------------------------------------------ +Quick Guide To Patching This Package For The Impatient +------------------------------------------------------ + +1. Make sure you have quilt installed +2. Unpack the package as usual with "dpkg-source -x" +3. Run the "patch" target in debian/rules +4. Create a new patch with "quilt new" (see quilt(1)) +5. Edit all the files you want to include in the patch with "quilt edit" + (see quilt(1)). +6. Write the patch with "quilt refresh" (see quilt(1)) +7. Run the "clean" target in debian/rules + +Alternatively, instead of using quilt directly, you can drop the patch in to +debian/patches and add the name of the patch to debian/patches/series. + +------------------------------------ +Guide To The X Strike Force Packages +------------------------------------ + +The X Strike Force team maintains X packages in git repositories on +git.debian.org in the pkg-xorg subdirectory. Most upstream packages +are actually maintained in git repositories as well, so they often +just need to be pulled into git.debian.org in a "upstream-*" branch. +Otherwise, the upstream sources are manually installed in the Debian +git repository. + +The .orig.tar.gz upstream source file could be generated using this +"upstream-*" branch in the Debian git repository but it is actually +copied from upstream tarballs directly. + +Due to X.org being highly modular, packaging all X.org applications +as their own independent packages would have created too many Debian +packages. For this reason, some X.org applications have been grouped +into larger packages: xutils, xutils-dev, x11-apps, x11-session-utils, +x11-utils, x11-xfs-utils, x11-xkb-utils, x11-xserver-utils. +Most packages, including the X.org server itself and all libraries +and drivers are, however maintained independently. + +The Debian packaging is added by creating the "debian-*" git branch +which contains the aforementioned "upstream-*" branch plus the debian/ +repository files. +When a patch has to be applied to the Debian package, two solutions +are involved: +* If the patch is available in one of the upstream branches, it + may be git'cherry-picked into the Debian repository. In this + case, it appears directly in the .diff.gz. +* Otherwise, the patch is added to debian/patches/ which is managed + with quilt as documented in /usr/share/doc/quilt/README.source. + +quilt is actually invoked by the Debian X packaging through a larger +set of scripts called XSFBS. XSFBS brings some other X specific +features such as managing dependencies and conflicts due to the video +and input driver ABIs. +XSFBS itself is maintained in a separate repository at + git://git.debian.org/pkg-xorg/xsfbs.git +and it is pulled inside the other Debian X repositories when needed. + +The XSFBS patching system requires a build dependency on quilt. Also +a dependency on $(STAMP_DIR)/patch has to be added to debian/rules +so that the XSFBS patching occurs before the actual build. So the +very first target of the build (likely the one running autoreconf) +should depend on $(STAMP_DIR)/patch. It should also not depend on +anything so that parallel builds are correctly supported (nothing +should probably run while patching is being done). And finally, the +clean target should depend on the xsfclean target so that patches +are unapplied on clean. + +When the upstream sources contain some DFSG-nonfree files, they are +listed in text files in debian/prune/ in the "debian-*" branch of +the Debian repository. XSFBS' scripts then take care of removing +these listed files during the build so as to generate a modified +DFSG-free .orig.tar.gz tarball. --- xserver-xorg-input-mouse-1.6.0.orig/debian/control +++ xserver-xorg-input-mouse-1.6.0/debian/control @@ -0,0 +1,34 @@ +Source: xserver-xorg-input-mouse +Section: x11 +Priority: optional +Maintainer: Ubuntu Developers +XSBC-Original-Maintainer: Debian X Strike Force +Uploaders: David Nusinow , Drew Parsons , Cyril Brulebois +Build-Depends: + debhelper (>= 5), + pkg-config, + xserver-xorg-dev (>= 2:1.9.99.902-2ubuntu1~), + x11proto-input-dev, + x11proto-core-dev, + x11proto-randr-dev, + quilt, + dpkg-dev (>= 1.14.17), + automake, + libtool, + xutils-dev (>= 1:7.5+4) +Standards-Version: 3.8.3 +Vcs-Git: git://git.debian.org/git/pkg-xorg/driver/xserver-xorg-input-mouse +Vcs-Browser: http://git.debian.org/?p=pkg-xorg/driver/xserver-xorg-input-mouse.git + +Package: xserver-xorg-input-mouse +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, ${xinpdriver:Depends} +Provides: ${xinpdriver:Provides} +Replaces: xserver-xorg (<< 6.8.2-35) +Description: X.Org X server -- mouse input driver + This package provides the driver for mouse input devices. + . + More information about X.Org can be found at: + + . + This package is built from the X.org xf86-input-mouse driver module. --- xserver-xorg-input-mouse-1.6.0.orig/debian/xserver-xorg-input-mouse.install +++ xserver-xorg-input-mouse-1.6.0/debian/xserver-xorg-input-mouse.install @@ -0,0 +1,2 @@ +usr/lib/xorg/modules/input/*.so + --- xserver-xorg-input-mouse-1.6.0.orig/debian/watch +++ xserver-xorg-input-mouse-1.6.0/debian/watch @@ -0,0 +1,2 @@ +version=3 +http://xorg.freedesktop.org/releases/individual/driver/ xf86-input-mouse-(.*)\.tar\.gz --- xserver-xorg-input-mouse-1.6.0.orig/debian/rules +++ xserver-xorg-input-mouse-1.6.0/debian/rules @@ -0,0 +1,101 @@ +#!/usr/bin/make -f +# debian/rules for the Debian xserver-xorg-input-mouse package. +# Copyright © 2004 Scott James Remnant +# Copyright © 2005 Daniel Stone +# Copyright © 2005 David Nusinow + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +include debian/xsfbs/xsfbs.mk + +CFLAGS = -Wall -g +ifneq (,$(filter noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS += -O0 +else + CFLAGS += -O2 +endif +ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) + NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) + MAKEFLAGS += -j$(NUMJOBS) +endif + +DEB_HOST_ARCH_OS ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_OS) +DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) +ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE)) + confflags += --build=$(DEB_HOST_GNU_TYPE) +else + confflags += --build=$(DEB_BUILD_GNU_TYPE) --host=$(DEB_HOST_GNU_TYPE) +endif + +# kbd_drv.a isn't phenomenally useful; kbd_drv.so more so +confflags += --disable-static + +configure: $(STAMP_DIR)/patch + dh_testdir + autoreconf -vfi + +build: build-stamp +build-stamp: configure + mkdir -p build + cd build && \ + ../configure --prefix=/usr --mandir=\$${prefix}/share/man \ + --infodir=\$${prefix}/share/info $(confflags) \ + CFLAGS="$(CFLAGS)" + cd build && $(MAKE) + >$@ + +clean: xsfclean + dh_testdir + dh_testroot + rm -f build-stamp + + rm -f config.cache config.log config.status + rm -f */config.cache */config.log */config.status + rm -f conftest* */conftest* + rm -rf autom4te.cache */autom4te.cache + rm -rf build + rm -f aclocal.m4 config.guess config.sub config.h.in configure + rm -f depcomp install-sh ltmain.sh missing mkinstalldirs + rm -f $$(find -name Makefile.in) + + dh_clean + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + cd build && $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install + +# Build architecture-dependent files here. +binary-arch: build install serverabi + dh_testdir + dh_testroot + + dh_installdocs README + dh_installchangelogs ChangeLog + dh_install --sourcedir=debian/tmp --list-missing --exclude=mouse_drv.la --exclude=usr/share/man/man4 +ifeq (kfreebsd, $(DEB_HOST_ARCH_OS)) + install -d -m 755 debian/xserver-xorg-input-mouse/usr/share/hal/fdi/policy/20thirdparty + install -m 644 debian/local/10-x11-mouse.fdi debian/xserver-xorg-input-mouse/usr/share/hal/fdi/policy/20thirdparty/ +endif + dh_installman + dh_link + dh_strip + dh_compress + dh_fixperms + dh_installdeb + dh_shlibdeps -- --warnings=6 + dh_gencontrol + dh_md5sums + dh_builddeb + +# Build architecture-independent files here. +binary-indep: build install +# Nothing to do + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install --- xserver-xorg-input-mouse-1.6.0.orig/debian/changelog +++ xserver-xorg-input-mouse-1.6.0/debian/changelog @@ -0,0 +1,313 @@ +xserver-xorg-input-mouse (1:1.6.0-1ubuntu3) natty; urgency=low + + * Rebuild to pick up new Xserver dependencies + + -- Christopher James Halse Rogers Wed, 23 Feb 2011 17:52:28 +1100 + +xserver-xorg-input-mouse (1:1.6.0-1ubuntu2) natty; urgency=low + + * Sync with current upstream master to build against input ABI 12. + + -- Timo Aaltonen Tue, 01 Feb 2011 16:40:21 +0200 + +xserver-xorg-input-mouse (1:1.6.0-1ubuntu1) natty; urgency=low + + * debian/control: Bump build-dependency on Xserver to build against 1.10 + + -- Christopher James Halse Rogers Tue, 01 Feb 2011 20:44:06 +1100 + +xserver-xorg-input-mouse (1:1.6.0-1) experimental; urgency=low + + [ Robert Hooker ] + * New upstream release. + * Bump xutils-dev requirement for new util-macros. + + [ Cyril Brulebois ] + * Update debian/copyright from upstream COPYING. + * Add myself to Uploaders. + + -- Cyril Brulebois Fri, 19 Nov 2010 22:56:42 +0100 + +xserver-xorg-input-mouse (1:1.5.0-3) experimental; urgency=low + + * Build against Xserver 1.9.1 rc1. + + -- Cyril Brulebois Wed, 13 Oct 2010 01:10:55 +0200 + +xserver-xorg-input-mouse (1:1.5.0-2) unstable; urgency=medium + + * Rename the build directory to not include DEB_BUILD_GNU_TYPE for no + good reason. Thanks, Colin Watson! + * Update xsfbs and use new ${xinpdriver:Depends} substvar. + + -- Julien Cristau Sun, 23 May 2010 23:26:11 +0200 + +xserver-xorg-input-mouse (1:1.5.0-1) experimental; urgency=low + + [ Timo Aaltonen ] + * New upstream release. + * Bump the build-dep on xutils-dev (>= 1:7.5~1). + * Build against Xserver 1.7. + + [ Cyril Brulebois ] + * Upload to experimental. + + -- Cyril Brulebois Sat, 05 Dec 2009 22:37:33 +0100 + +xserver-xorg-input-mouse (1:1.4.0-4) unstable; urgency=low + + * Rename the fdi file to match what we're installing... (closes: #542806) + + -- Julien Cristau Sun, 23 Aug 2009 20:12:24 +0200 + +xserver-xorg-input-mouse (1:1.4.0-3) unstable; urgency=low + + * Add README.source, bump Standards-Version to 3.8.3. + * Install an fdi file to pick up the mouse driver on kfreebsd (closes: + #542806). Thanks, Aurélien Jarno! + * Fix DEB_BUILD_OPTIONS parsing to use space-separated options. + * Remove myself from Uploaders, I don't maintain this driver. + + -- Julien Cristau Sun, 23 Aug 2009 11:10:16 +0200 + +xserver-xorg-input-mouse (1:1.4.0-2) unstable; urgency=low + + * Upload to unstable. + + -- Julien Cristau Thu, 09 Apr 2009 16:22:01 +0100 + +xserver-xorg-input-mouse (1:1.4.0-1) experimental; urgency=low + + * New upstream release. + * Run autoreconf on build. + * Handle parallel builds. + * Build-depend on xserver 1.6 rc1, automake, libtool and xutils-dev 1:7.4+4. + * Add copyright notices for OS mouse code to debian/copyright (from + upstream's COPYING). + + -- Julien Cristau Wed, 21 Jan 2009 21:53:06 +0100 + +xserver-xorg-input-mouse (1:1.3.0-2) experimental; urgency=low + + * Build against xserver 1.5 rc5. + + -- Julien Cristau Mon, 14 Jul 2008 01:56:30 +0200 + +xserver-xorg-input-mouse (1:1.3.0-1) unstable; urgency=low + + * New upstream release. + * Drop patch added in 1:1.2.3-2, it's applied in this release. + * Drop the XS- prefix from Vcs-* control fields. + * Run dpkg-shlibdeps with --warnings=6. Drivers reference symbols from + /usr/bin/Xorg and other modules, and that's not a bug, so we want + dpkg-shlibdeps to shut up about symbols it can't find. Build-depend on + dpkg-dev >= 1.14.17. + + -- Julien Cristau Fri, 30 May 2008 13:55:10 +0200 + +xserver-xorg-input-mouse (1:1.2.3-2) unstable; urgency=low + + * New patch from Peter Hutterer (from upstream bug#13144): don't flush + buttons, release events can cause paste events. + * Bump Standards-Version to 3.7.3. + + -- Julien Cristau Thu, 06 Dec 2007 18:44:31 +0100 + +xserver-xorg-input-mouse (1:1.2.3-1) unstable; urgency=low + + * New upstream version. + + -- Drew Parsons Mon, 29 Oct 2007 01:05:21 +1100 + +xserver-xorg-input-mouse (1:1.2.2-6) unstable; urgency=low + + * Grab upstream commits up to f42ea3027c13046dfa7a603737b476fbf2833764 + so that the pointer is not confined in the right screen in zaphod mode, + closes: #443552. + + Update debian/copyright using the new upstream COPYING file. + + -- Brice Goglin Sat, 22 Sep 2007 16:22:22 +0200 + +xserver-xorg-input-mouse (1:1.2.2-5) unstable; urgency=low + + * Upload to unstable + + -- David Nusinow Sun, 16 Sep 2007 15:13:38 -0400 + +xserver-xorg-input-mouse (1:1.2.2-4) UNRELEASED; urgency=low + + * Add upstream URL to debian/copyright. + + -- Brice Goglin Sat, 15 Sep 2007 01:48:04 +0200 + +xserver-xorg-input-mouse (1:1.2.2-3) experimental; urgency=low + + * Rebuild against xserver 1.4. + + -- Julien Cristau Mon, 10 Sep 2007 15:13:59 +0200 + +xserver-xorg-input-mouse (1:1.2.2-2) experimental; urgency=low + + * Rebuild against xserver 1.3.99.0. + * Generate the Provides field automatically. + + -- Julien Cristau Sat, 18 Aug 2007 19:59:51 +0200 + +xserver-xorg-input-mouse (1:1.2.2-1) unstable; urgency=low + + * New upstream release. + * Remove Branden from Uploaders with his permission, and add myself. + + -- Julien Cristau Fri, 17 Aug 2007 13:02:57 +0200 + +xserver-xorg-input-mouse (1:1.2.1-1) unstable; urgency=low + + [ Brice Goglin ] + * Install the upstream changelog. + * Bump Build-Depends: xserver-xorg-dev to >= 2:1.2.99.902 + (needed to let xsfbs get access to serverminver). + * Add a link to www.X.org and a reference to the xf86-input-mouse + module in the long description. + + [ Drew Parsons ] + * New upstream version. + * Update to latest git while we're at it (adds "Sensitivity" option). + + -- Drew Parsons Thu, 14 Jun 2007 00:44:53 +1000 + +xserver-xorg-input-mouse (1:1.1.2-1) experimental; urgency=low + + * New upstream release (X11R7.2). + * Add link to xserver-xorg-core bug script, so that bugreports contain + the user's config and log files. + * Bump dependency on xserver-xorg-core to >= 2:1.1.1-11, as previous + versions don't have the bug script. + * Generate the dependency on xserver-xorg-core automatically. + * Remove Fabio from Uploaders, with his permission. + * Drop obsolete CVS info from the description, add XS-Vcs-*. + + -- Julien Cristau Mon, 16 Apr 2007 19:27:46 +0200 + +xserver-xorg-input-mouse (1:1.1.1-3) unstable; urgency=low + + * xserver-xorg dependencies should be 2:1.1 not 1:1.1. Closes: #385028. + * Upload to unstable (X11R7.1 transition). + + -- Drew Parsons Sat, 23 Sep 2006 09:55:27 +1000 + +xserver-xorg-input-mouse (1:1.1.1-2) experimental; urgency=low + + * Updated dependencies to xserver-xorg (>= 1:1.1.1-1). Closes: #382979. + + -- Drew Parsons Mon, 14 Aug 2006 23:43:09 +1000 + +xserver-xorg-input-mouse (1:1.1.1-1) experimental; urgency=low + + * New upstream release (X11R7.1, xf86-input-mouse-1.1.1). + - applies patch 01_stolen_fron_HEAD_spurious_mouse_events.diff. + * Use debhelper v5. + * Use dh_installman to install man page. + * Exclude .la (and manpages) from dh_install. + + -- Drew Parsons Sun, 13 Aug 2006 00:51:02 +1000 + +xserver-xorg-input-mouse (1:1.0.4-4) UNRELEASED; urgency=low + + * Test for obj-$(DEB_BUILD_GNU_TYPE) before creating it during build; + idempotency fix. + + -- Andres Salomon Mon, 17 Jul 2006 00:36:45 -0400 + +xserver-xorg-input-mouse (1:1.0.4-3) unstable; urgency=low + + [ David Martínez Moreno ] + * debian/rules: + - Added support for patches. + - Added --list-missing to dh_install. + - Added DRIVER_MAN_SUFFIX=4x and DRIVER_MAN_DIR=\$$\(mandir\)/man4 to + configure call in order to ship mouse.man as mouse.4x, but inside + /usr/share/man/man4/. I did this because otherwise it would conflict + with mouse.4 from manpages. Many thanks to Russ Albery for the hint. + - Added README to installed docs. + * 01_stolen_fron_HEAD_spurious_mouse_events.diff: Added patch for mouse.c + from CVS in order to fix fast scrolling and wrong events. Closes: #366787. + * Added /usr/share/man to xserver-xorg-input-mouse.install. + * debian/control: + - Updated Standards-Version to 3.7.2.0. + - Added Depends on xserver-xorg-core (>= 1:0.99.0-1). + + [ David Nusinow ] + * Add quilt to Build-Depends. + + -- David Martínez Moreno Sat, 13 May 2006 23:59:58 +0200 + +xserver-xorg-input-mouse (1:1.0.4-2) unstable; urgency=low + + * Upload to modular + + -- David Nusinow Sun, 26 Mar 2006 20:25:11 -0500 + +xserver-xorg-input-mouse (1:1.0.4-1) experimental; urgency=low + + * New upstream release + + -- David Nusinow Tue, 21 Mar 2006 21:46:36 -0500 + +xserver-xorg-input-mouse (1:1.0.3.1-1) experimental; urgency=low + + * First upload to Debian + * Fill in copyright information + * Change source package, package, and provides names to denote the + type of driver and that they are for xserver-xorg + + -- David Nusinow Thu, 19 Jan 2006 19:51:24 -0500 + +xserver-xorg-input-mouse (1:1.0.3.1-0ubuntu1) dapper; urgency=low + + * New upstream release. + * Add provides on xserver-xorg-input. + + -- David Nusinow Fri, 13 Jan 2006 00:28:29 -0500 + +xserver-xorg-input-mouse (1:1.0.3-0ubuntu1) dapper; urgency=low + + * New upstream release. + + -- Daniel Stone Mon, 19 Dec 2005 08:57:45 +1100 + +xserver-xorg-input-mouse (1:1.0.2-0ubuntu1) dapper; urgency=low + + * New upstream release. + + -- Daniel Stone Mon, 12 Dec 2005 13:39:36 +1100 + +xserver-xorg-input-mouse (1:1.0.1-0ubuntu2) dapper; urgency=low + + * Add missing Build-Depends (x11proto-core-dev, x11proto-randr-dev). + + -- Daniel Stone Mon, 5 Dec 2005 12:49:36 +1100 + +xserver-xorg-input-mouse (1:1.0.1-0ubuntu1) dapper; urgency=low + + * New upstream release. + * Bump Build-Depends on xserver-xorg-dev. + + -- Daniel Stone Tue, 22 Nov 2005 12:48:05 +1100 + +xserver-xorg-input-mouse (1:1.0.0.1-2) dapper; urgency=low + + * Add an actual, er, copyright file. *cough* + + -- Daniel Stone Wed, 26 Oct 2005 11:05:30 +1000 + +xserver-xorg-input-mouse (1:1.0.0.1-1) dapper; urgency=low + + * New upstream release. + + -- Daniel Stone Thu, 20 Oct 2005 13:49:22 +1000 + +xserver-xorg-input-mouse (1:1.0.0-1) breezy; urgency=low + + * First xserver-xorg-input-mouse release. + + -- Daniel Stone Wed, 6 Jul 2005 15:48:17 +1000 --- xserver-xorg-input-mouse-1.6.0.orig/debian/xsfbs/repack.sh +++ xserver-xorg-input-mouse-1.6.0/debian/xsfbs/repack.sh @@ -0,0 +1,32 @@ +#!/bin/sh + +set -e + +if ! [ -d debian/prune ]; then + exit 0 +fi + +if [ "x$1" != x--upstream-version ]; then + exit 1 +fi + +version="$2" +filename="$3" + +if [ -z "$version" ] || ! [ -f "$filename" ]; then + exit 1 +fi + +dir="$(pwd)" +tempdir="$(mktemp -d)" + +cd "$tempdir" +tar xf "$dir/$filename" +cat "$dir"/debian/prune/* | while read file; do rm -f */$file; done + +tar czf "$dir/$filename" * +cd "$dir" +rm -rf "$tempdir" +echo "Done pruning upstream tarball" + +exit 0 --- xserver-xorg-input-mouse-1.6.0.orig/debian/xsfbs/xsfbs.sh +++ xserver-xorg-input-mouse-1.6.0/debian/xsfbs/xsfbs.sh @@ -0,0 +1,622 @@ +# This is the X Strike Force shell library for X Window System package +# maintainer scripts. It serves to define shell functions commonly used by +# such packages, and performs some error checking necessary for proper operation +# of those functions. By itself, it does not "do" much; the maintainer scripts +# invoke the functions defined here to accomplish package installation and +# removal tasks. + +# If you are reading this within a Debian package maintainer script (e.g., +# /var/lib/dpkg/info/PACKAGE.{config,preinst,postinst,prerm,postrm}), you can +# skip past this library by scanning forward in this file to the string +# "GOBSTOPPER". + +SOURCE_VERSION=@SOURCE_VERSION@ +OFFICIAL_BUILD=@OFFICIAL_BUILD@ + +# Use special abnormal exit codes so that problems with this library are more +# easily tracked down. +SHELL_LIB_INTERNAL_ERROR=86 +SHELL_LIB_THROWN_ERROR=74 +SHELL_LIB_USAGE_ERROR=99 + +# old -> new variable names +if [ -z "$DEBUG_XORG_PACKAGE" ] && [ -n "$DEBUG_XFREE86_PACKAGE" ]; then + DEBUG_XORG_PACKAGE="$DEBUG_XFREE86_PACKAGE" +fi +if [ -z "$DEBUG_XORG_DEBCONF" ] && [ -n "$DEBUG_XFREE86_DEBCONF" ]; then + DEBUG_XORG_DEBCONF="$DEBUG_XFREE86_DEBCONF" +fi + +# initial sanity checks +if [ -z "$THIS_PACKAGE" ]; then + cat >&2 < on the World Wide Web for +instructions, read the file /usr/share/doc/debian/bug-reporting.txt from the +"doc-debian" package, or install the "reportbug" package and use the command of +the same name to file a report against version $SOURCE_VERSION of this package. +EOF + exit $SHELL_LIB_USAGE_ERROR +fi + +if [ -z "$THIS_SCRIPT" ]; then + cat >&2 < on the World Wide Web for +instructions, read the file /usr/share/doc/debian/bug-reporting.txt from the +"doc-debian" package, or install the "reportbug" package and use the command of +the same name to file a report against version $SOURCE_VERSION of the +"$THIS_PACKAGE" package. +EOF + exit $SHELL_LIB_USAGE_ERROR +fi + +if [ "$1" = "reconfigure" ] || [ -n "$DEBCONF_RECONFIGURE" ]; then + RECONFIGURE="true" +else + RECONFIGURE= +fi + +if ([ "$1" = "install" ] || [ "$1" = "configure" ]) && [ -z "$2" ]; then + FIRSTINST="yes" +fi + +if [ -z "$RECONFIGURE" ] && [ -z "$FIRSTINST" ]; then + UPGRADE="yes" +fi + +trap "message;\ + message \"Received signal. Aborting $THIS_PACKAGE package $THIS_SCRIPT script.\";\ + message;\ + exit 1" HUP INT QUIT TERM + +reject_nondigits () { + # syntax: reject_nondigits [ operand ... ] + # + # scan operands (typically shell variables whose values cannot be trusted) for + # characters other than decimal digits and barf if any are found + while [ -n "$1" ]; do + # does the operand contain anything but digits? + if ! expr "$1" : "[[:digit:]]\+$" > /dev/null 2>&1; then + # can't use die(), because it wraps message() which wraps this function + echo "$THIS_PACKAGE $THIS_SCRIPT error: reject_nondigits() encountered" \ + "possibly malicious garbage \"$1\"" >&2 + exit $SHELL_LIB_THROWN_ERROR + fi + shift + done +} + +reject_unlikely_path_chars () { + # syntax: reject_unlikely_path_chars [ operand ... ] + # + # scan operands (typically shell variables whose values cannot be trusted) for + # characters unlikely to be seen in a path and which the shell might + # interpret and barf if any are found + while [ -n "$1" ]; do + # does the operand contain any funny characters? + if expr "$1" : '.*[!$&()*;<>?|].*' > /dev/null 2>&1; then + # can't use die(), because I want to avoid forward references + echo "$THIS_PACKAGE $THIS_SCRIPT error: reject_unlikely_path_chars()" \ + "encountered possibly malicious garbage \"$1\"" >&2 + exit $SHELL_LIB_THROWN_ERROR + fi + shift + done +} + +# Query the terminal to establish a default number of columns to use for +# displaying messages to the user. This is used only as a fallback in the +# event the COLUMNS variable is not set. ($COLUMNS can react to SIGWINCH while +# the script is running, and this cannot, only being calculated once.) +DEFCOLUMNS=$(stty size 2> /dev/null | awk '{print $2}') || true +if ! expr "$DEFCOLUMNS" : "[[:digit:]]\+$" > /dev/null 2>&1; then + DEFCOLUMNS=80 +fi + +message () { + # pretty-print messages of arbitrary length + reject_nondigits "$COLUMNS" + echo "$*" | fmt -t -w ${COLUMNS:-$DEFCOLUMNS} >&2 +} + +observe () { + # syntax: observe message ... + # + # issue observational message suitable for logging someday when support for + # it exists in dpkg + if [ -n "$DEBUG_XORG_PACKAGE" ]; then + message "$THIS_PACKAGE $THIS_SCRIPT note: $*" + fi +} + +warn () { + # syntax: warn message ... + # + # issue warning message suitable for logging someday when support for + # it exists in dpkg; also send to standard error + message "$THIS_PACKAGE $THIS_SCRIPT warning: $*" +} + +die () { + # syntax: die message ... + # + # exit script with error message + message "$THIS_PACKAGE $THIS_SCRIPT error: $*" + exit $SHELL_LIB_THROWN_ERROR +} + +internal_error () { + # exit script with error; essentially a "THIS SHOULD NEVER HAPPEN" message + message "internal error: $*" + if [ -n "$OFFICIAL_BUILD" ]; then + message "Please report a bug in the $THIS_SCRIPT script of the" \ + "$THIS_PACKAGE package, version $SOURCE_VERSION to the Debian Bug" \ + "Tracking System. Include all messages above that mention the" \ + "$THIS_PACKAGE package. Visit " \ + " on the World Wide Web for" \ + "instructions, read the file" \ + "/usr/share/doc/debian/bug-reporting.txt from the doc-debian" \ + "package, or install the reportbug package and use the command of" \ + "the same name to file a report." + fi + exit $SHELL_LIB_INTERNAL_ERROR +} + +usage_error () { + message "usage error: $*" + message "Please report a bug in the $THIS_SCRIPT script of the" \ + "$THIS_PACKAGE package, version $SOURCE_VERSION to the Debian Bug" \ + "Tracking System. Include all messages above that mention the" \ + "$THIS_PACKAGE package. Visit " \ + " on the World Wide Web for" \ + "instructions, read the file" \ + "/usr/share/doc/debian/bug-reporting.txt from the doc-debian" \ + "package, or install the reportbug package and use the command of" \ + "the same name to file a report." + exit $SHELL_LIB_USAGE_ERROR +} + +font_update () { + # run $UPDATECMDS in $FONTDIRS + + local dir cmd shortcmd x_font_dir_prefix + + x_font_dir_prefix="/usr/share/fonts/X11" + + if [ -z "$UPDATECMDS" ]; then + usage_error "font_update() called but \$UPDATECMDS not set" + fi + if [ -z "$FONTDIRS" ]; then + usage_error "font_update() called but \$FONTDIRS not set" + fi + + reject_unlikely_path_chars "$UPDATECMDS" + reject_unlikely_path_chars "$FONTDIRS" + + for dir in $FONTDIRS; do + if [ -d "$x_font_dir_prefix/$dir" ]; then + for cmd in $UPDATECMDS; do + if which "$cmd" > /dev/null 2>&1; then + shortcmd=${cmd##*/} + observe "running $shortcmd in $dir font directory" + cmd_opts= + if [ "$shortcmd" = "update-fonts-alias" ]; then + cmd_opts=--x11r7-layout + fi + if [ "$shortcmd" = "update-fonts-dir" ]; then + cmd_opts=--x11r7-layout + fi + if [ "$shortcmd" = "update-fonts-scale" ]; then + cmd_opts=--x11r7-layout + fi + $cmd $cmd_opts $dir || warn "$cmd $cmd_opts $dir" \ + "failed; font directory data may not" \ + "be up to date" + else + warn "$cmd not found; not updating corresponding $dir font" \ + "directory data" + fi + done + else + warn "$dir is not a directory; not updating font directory data" + fi + done +} + +remove_conffile_prepare () { + # syntax: remove_conffile_prepare filename official_md5sum ... + # + # Check a conffile "filename" against a list of canonical MD5 checksums. + # If the file's current MD5 checksum matches one of the "official_md5sum" + # operands provided, then prepare the conffile for removal from the system. + # We defer actual deletion until the package is configured so that we can + # roll this operation back if package installation fails. + # + # Call this function from a preinst script in the event $1 is "upgrade" or + # "install" and verify $2 to ensure the package is being upgraded from a + # version (or installed over a version removed-but-not-purged) prior to the + # one in which the conffile was obsoleted. + + local conffile current_checksum + + # validate arguments + if [ $# -lt 2 ]; then + usage_error "remove_conffile_prepare() called with wrong number of" \ + "arguments; expected at least 2, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + conffile="$1" + shift + + # does the conffile even exist? + if [ -e "$conffile" ]; then + # calculate its checksum + current_checksum=$(md5sum < "$conffile" | sed 's/[[:space:]].*//') + # compare it to each supplied checksum + while [ -n "$1" ]; do + if [ "$current_checksum" = "$1" ]; then + # we found a match; move the confffile and stop looking + observe "preparing obsolete conffile $conffile for removal" + mv "$conffile" "$conffile.$THIS_PACKAGE-tmp" + break + fi + shift + done + fi +} + +remove_conffile_lookup () { + # syntax: remove_conffile_lookup package filename + # + # Lookup the md5sum of a conffile in dpkg's database, and prepare for removal + # if it matches the actual file's md5sum. + # + # Call this function when you would call remove_conffile_prepare but only + # want to check against dpkg's status database instead of known checksums. + + local package conffile old_md5sum + + # validate arguments + if [ $# -ne 2 ]; then + usage_error "remove_conffile_lookup() called with wrong number of" \ + "arguments; expected 1, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + package="$1" + conffile="$2" + + if ! [ -e "$conffile" ]; then + return + fi + old_md5sum="$(dpkg-query -W -f='${Conffiles}' "$package" | \ + awk '{ if (match($0, "^ '"$conffile"' ")) print $2}')" + if [ -n "$old_md5sum" ]; then + remove_conffile_prepare "$conffile" "$old_md5sum" + fi +} + +remove_conffile_commit () { + # syntax: remove_conffile_commit filename + # + # Complete the removal of a conffile "filename" that has become obsolete. + # + # Call this function from a postinst script after having used + # remove_conffile_prepare() in the preinst. + + local conffile + + # validate arguments + if [ $# -ne 1 ]; then + usage_error "remove_conffile_commit() called with wrong number of" \ + "arguments; expected 1, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + conffile="$1" + + # if the temporary file created by remove_conffile_prepare() exists, remove it + if [ -e "$conffile.$THIS_PACKAGE-tmp" ]; then + observe "committing removal of obsolete conffile $conffile" + rm "$conffile.$THIS_PACKAGE-tmp" + fi +} + +remove_conffile_rollback () { + # syntax: remove_conffile_rollback filename + # + # Roll back the removal of a conffile "filename". + # + # Call this function from a postrm script in the event $1 is "abort-upgrade" + # or "abort-install" is after having used remove_conffile_prepare() in the + # preinst. + + local conffile + + # validate arguments + if [ $# -ne 1 ]; then + usage_error "remove_conffile_rollback() called with wrong number of" \ + "arguments; expected 1, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + conffile="$1" + + # if the temporary file created by remove_conffile_prepare() exists, move it + # back + if [ -e "$conffile.$THIS_PACKAGE-tmp" ]; then + observe "rolling back removal of obsolete conffile $conffile" + mv "$conffile.$THIS_PACKAGE-tmp" "$conffile" + fi +} + +replace_conffile_with_symlink_prepare () { + # syntax: replace_conffile_with_symlink_prepare oldfilename newfilename \ + # official_md5sum ... + # + # Check a conffile "oldfilename" against a list of canonical MD5 checksums. + # If the file's current MD5 checksum matches one of the "official_md5sum" + # operands provided, then prepare the conffile for removal from the system. + # We defer actual deletion until the package is configured so that we can + # roll this operation back if package installation fails. Otherwise copy it + # to newfilename and let dpkg handle it through conffiles mechanism. + # + # Call this function from a preinst script in the event $1 is "upgrade" or + # "install" and verify $2 to ensure the package is being upgraded from a + # version (or installed over a version removed-but-not-purged) prior to the + # one in which the conffile was obsoleted. + + local conffile current_checksum + + # validate arguments + if [ $# -lt 3 ]; then + usage_error "replace_conffile_with_symlink_prepare() called with wrong" \ + " number of arguments; expected at least 3, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + oldconffile="$1" + shift + newconffile="$1" + shift + + remove_conffile_prepare "$_oldconffile" "$@" + # If $oldconffile still exists, then md5sums didn't match. + # Copy it to new one. + if [ -f "$oldconffile" ]; then + cp "$oldconffile" "$newconffile" + fi + +} + +replace_conffile_with_symlink_commit () { + # syntax: replace_conffile_with_symlink_commit oldfilename + # + # Complete the removal of a conffile "oldfilename" that has been + # replaced by a symlink. + # + # Call this function from a postinst script after having used + # replace_conffile_with_symlink_prepare() in the preinst. + + local conffile + + # validate arguments + if [ $# -ne 1 ]; then + usage_error "replace_conffile_with_symlink_commit() called with wrong" \ + "number of arguments; expected 1, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + conffile="$1" + + remove_conffile_commit "$conffile" +} + +replace_conffile_with_symlink_rollback () { + # syntax: replace_conffile_with_symlink_rollback oldfilename newfilename + # + # Roll back the replacing of a conffile "oldfilename" with symlink to + # "newfilename". + # + # Call this function from a postrm script in the event $1 is "abort-upgrade" + # or "abort-install" and verify $2 to ensure the package failed to upgrade + # from a version (or install over a version removed-but-not-purged) prior + # to the one in which the conffile was obsoleted. + # You should have used replace_conffile_with_symlink_prepare() in the + # preinst. + + local conffile + + # validate arguments + if [ $# -ne 2 ]; then + usage_error "replace_conffile_with_symlink_rollback() called with wrong" \ + "number of arguments; expected 2, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + oldconffile="$1" + newconffile="$2" + + remove_conffile_rollback "$_oldconffile" + if [ -f "$newconffile" ]; then + rm "$newconffile" + fi +} + +run () { + # syntax: run command [ argument ... ] + # + # Run specified command with optional arguments and report its exit status. + # Useful for commands whose exit status may be nonzero, but still acceptable, + # or commands whose failure is not fatal to us. + # + # NOTE: Do *not* use this function with db_get or db_metaget commands; in + # those cases the return value of the debconf command *must* be checked + # before the string returned by debconf is used for anything. + + local retval + + # validate arguments + if [ $# -lt 1 ]; then + usage_error "run() called with wrong number of arguments; expected at" \ + "least 1, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + "$@" || retval=$? + + if [ ${retval:-0} -ne 0 ]; then + observe "command \"$*\" exited with status $retval" + fi +} + +make_symlink_sane () { + # syntax: make_symlink_sane symlink target + # + # Ensure that the symbolic link symlink exists, and points to target. + # + # If symlink does not exist, create it and point it at target. + # + # If symlink exists but is not a symbolic link, back it up. + # + # If symlink exists, is a symbolic link, but points to the wrong location, fix + # it. + # + # If symlink exists, is a symbolic link, and already points to target, do + # nothing. + # + # This function wouldn't be needed if ln had an -I, --idempotent option. + + # Validate arguments. + if [ $# -ne 2 ]; then + usage_error "make_symlink_sane() called with wrong number of arguments;" \ + "expected 2, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + # We could just use the positional parameters as-is, but that makes things + # harder to follow. + local symlink target + + symlink="$1" + target="$2" + + if [ -L "$symlink" ] && [ "$(readlink "$symlink")" = "$target" ]; then + observe "link from $symlink to $target already exists" + else + observe "creating symbolic link from $symlink to $target" + mkdir -p "${target%/*}" "${symlink%/*}" + ln -s -b -S ".dpkg-old" "$target" "$symlink" + fi +} + +migrate_dir_to_symlink () { + # syntax: migrate_dir_to_symlink old_location new_location + # + # Per Debian Policy section 6.5.4, "A directory will never be replaced by a + # symbolic link to a directory or vice versa; instead, the existing state + # (symlink or not) will be left alone and dpkg will follow the symlink if + # there is one." + # + # We have to do it ourselves. + # + # This function moves the contents of old_location, a directory, into + # new_location, a directory, then makes old_location a symbolic link to + # new_location. + # + # old_location need not exist, but if it does, it must be a directory (or a + # symlink to a directory). If it is not, it is backed up. If new_location + # exists already and is not a directory, it is backed up. + # + # This function should be called from a package's preinst so that other + # packages unpacked after this one --- but before this package's postinst runs + # --- are unpacked into new_location even if their payloads contain + # old_location filespecs. + + # Validate arguments. + if [ $# -ne 2 ]; then + usage_error "migrate_dir_to_symlink() called with wrong number of" + "arguments; expected 2, got $#" + exit $SHELL_LIB_USAGE_ERROR + fi + + # We could just use the positional parameters as-is, but that makes things + # harder to follow. + local new old + + old="$1" + new="$2" + + # Is old location a symlink? + if [ -L "$old" ]; then + # Does it already point to new location? + if [ "$(readlink "$old")" = "$new" ]; then + # Nothing to do; migration has already been done. + observe "migration of $old to $new already done" + return 0 + else + # Back it up. + warn "backing up symbolic link $old as $old.dpkg-old" + mv -b "$old" "$old.dpkg-old" + fi + fi + + # Does old location exist, but is not a directory? + if [ -e "$old" ] && ! [ -d "$old" ]; then + # Back it up. + warn "backing up non-directory $old as $old.dpkg-old" + mv -b "$old" "$old.dpkg-old" + fi + + observe "migrating $old to $new" + + # Is new location a symlink? + if [ -L "$new" ]; then + # Does it point the wrong way, i.e., back to where we're migrating from? + if [ "$(readlink "$new")" = "$old" ]; then + # Get rid of it. + observe "removing symbolic link $new which points to $old" + rm "$new" + else + # Back it up. + warn "backing up symbolic link $new as $new.dpkg-old" + mv -b "$new" "$new.dpkg-old" + fi + fi + + # Does new location exist, but is not a directory? + if [ -e "$new" ] && ! [ -d "$new" ]; then + warn "backing up non-directory $new as $new.dpkg-old" + mv -b "$new" "$new.dpkg-old" + fi + + # Create new directory if it does not yet exist. + if ! [ -e "$new" ]; then + observe "creating $new" + mkdir -p "$new" + fi + + # Copy files in old location to new location. Back up any filenames that + # already exist in the new location with the extension ".dpkg-old". + observe "copying files from $old to $new" + if ! (cd "$old" && cp -a -b -S ".dpkg-old" . "$new"); then + die "error(s) encountered while copying files from $old to $new" + fi + + # Remove files at old location. + observe "removing $old" + rm -r "$old" + + # Create symlink from old location to new location. + make_symlink_sane "$old" "$new" +} + +# vim:set ai et sw=2 ts=2 tw=80: + +# GOBSTOPPER: The X Strike Force shell library ends here. --- xserver-xorg-input-mouse-1.6.0.orig/debian/xsfbs/xsfbs.mk +++ xserver-xorg-input-mouse-1.6.0/debian/xsfbs/xsfbs.mk @@ -0,0 +1,285 @@ +#!/usr/bin/make -f + +# Debian X Strike Force Build System (XSFBS): Make portion + +# Copyright 1996 Stephen Early +# Copyright 1997 Mark Eichin +# Copyright 1998-2005, 2007 Branden Robinson +# Copyright 2005 David Nusinow +# +# Licensed under the GNU General Public License, version 2. See the file +# /usr/share/common-licenses/GPL or . + +# Originally by Stephen Early +# Modified by Mark W. Eichin +# Modified by Adam Heath +# Modified by Branden Robinson +# Modified by Fabio Massimo Di Nitto +# Modified by David Nusinow +# Acknowledgements to Manoj Srivastava. + +# Pass $(DH_OPTIONS) into the environment for debhelper's benefit. +export DH_OPTIONS + +# force quilt to not use ~/.quiltrc and to use debian/patches +QUILT = QUILT_PATCHES=debian/patches quilt --quiltrc /dev/null + +# Set up parameters for the upstream build environment. + +# Determine (source) package name from Debian changelog. +SOURCE_NAME:=$(shell dpkg-parsechangelog -ldebian/changelog \ + | grep '^Source:' | awk '{print $$2}') + +# Determine package version from Debian changelog. +SOURCE_VERSION:=$(shell dpkg-parsechangelog -ldebian/changelog \ + | grep '^Version:' | awk '{print $$2}') + +# Determine upstream version number. +UPSTREAM_VERSION:=$(shell echo $(SOURCE_VERSION) | sed 's/-.*//') + +# Determine the source version without the epoch for make-orig-tar-gz +NO_EPOCH_VER:=$(shell echo $(UPSTREAM_VERSION) | sed 's/^.://') + +# Figure out who's building this package. +BUILDER:=$(shell echo $${DEBEMAIL:-$${EMAIL:-$$(echo $$LOGNAME@$$(cat /etc/mailname 2>/dev/null))}}) + +# Find out if this is an official build; an official build has nothing but +# digits, dots, and/or the codename of a release in the Debian part of the +# version number. Anything else indicates an unofficial build. +OFFICIAL_BUILD:=$(shell VERSION=$(SOURCE_VERSION); if ! expr "$$(echo $${VERSION\#\#*-} | sed 's/\(woody\|sarge\|etch\|lenny\)//g')" : ".*[^0-9.].*" >/dev/null 2>&1; then echo yes; fi) + +# Set up parameters for the Debian build environment. + +# Determine our architecture. +BUILD_ARCH:=$(shell dpkg-architecture -qDEB_BUILD_ARCH) +# Work around some old-time dpkg braindamage. +BUILD_ARCH:=$(subst i486,i386,$(BUILD_ARCH)) +# The DEB_HOST_ARCH variable may be set per the Debian cross-compilation policy. +ifdef DEB_HOST_ARCH + ARCH:=$(DEB_HOST_ARCH) +else + # dpkg-cross sets the ARCH environment variable; if set, use it. + ifdef ARCH + ARCH:=$(ARCH) + else + ARCH:=$(BUILD_ARCH) + endif +endif + +# $(STAMP_DIR) houses stamp files for complex targets. +STAMP_DIR:=stampdir + +# $(DEBTREEDIR) is where all install rules are told (via $(DESTDIR)) to place +# their files. +DEBTREEDIR:=$(CURDIR)/debian/tmp + +# All "important" targets have four lines: +# 1) A target name that is invoked by a package-building tool or the user. +# This consists of a dependency on a "$(STAMP_DIR)/"-prefixed counterpart. +# 2) A line delcaring 1) as a phony target (".PHONY:"). +# 3) A "$(STAMP_DIR)/"-prefixed target which does the actual work, and may +# depend on other targets. +# 4) A line declaring 3) as a member of the $(stampdir_targets) variable; the +# "$(STAMP_DIR)/" prefix is omitted. +# +# This indirection is needed so that the "stamp" files that signify when a rule +# is done can be located in a separate "stampdir". Recall that make has no way +# to know when a goal has been met for a phony target (like "build" or +# "install"). +# +# At the end of each "$(STAMP_DIR)/" target, be sure to run the command ">$@" +# so that the target will not be run again. Removing the file will make Make +# run the target over. + +# All phony targets should be declared as dependencies of .PHONY, even if they +# do not have "($STAMP_DIR)/"-prefixed counterparts. + +# Define a harmless default rule to keep things from going nuts by accident. +.PHONY: default +default: + +# Set up the $(STAMP_DIR) directory. +.PHONY: stampdir +stampdir_targets+=stampdir +stampdir: $(STAMP_DIR)/stampdir +$(STAMP_DIR)/stampdir: + mkdir $(STAMP_DIR) + >$@ + +# Set up the package build directory as quilt expects to find it. +.PHONY: prepare +stampdir_targets+=prepare +prepare: $(STAMP_DIR)/prepare +$(STAMP_DIR)/prepare: $(STAMP_DIR)/logdir $(STAMP_DIR)/genscripts + >$@ + +.PHONY: logdir +stampdir_targets+=logdir +logdir: $(STAMP_DIR)/logdir +$(STAMP_DIR)/logdir: $(STAMP_DIR)/stampdir + mkdir -p $(STAMP_DIR)/log + >$@ + +# Apply all patches to the upstream source. +.PHONY: patch +stampdir_targets+=patch +patch: $(STAMP_DIR)/patch +$(STAMP_DIR)/patch: $(STAMP_DIR)/prepare + if ! [ `which quilt` ]; then \ + echo "Couldn't find quilt. Please install it or add it to the build-depends for this package."; \ + exit 1; \ + fi; \ + if $(QUILT) next >/dev/null 2>&1; then \ + echo -n "Applying patches..."; \ + if $(QUILT) push -a -v >$(STAMP_DIR)/log/patch 2>&1; then \ + cat $(STAMP_DIR)/log/patch; \ + echo "successful."; \ + else \ + cat $(STAMP_DIR)/log/patch; \ + echo "failed! (check $(STAMP_DIR)/log/patch for details)"; \ + exit 1; \ + fi; \ + else \ + echo "No patches to apply"; \ + fi; \ + >$@ + +# Revert all patches to the upstream source. +.PHONY: unpatch +unpatch: $(STAMP_DIR)/logdir + rm -f $(STAMP_DIR)/patch + @echo -n "Unapplying patches..."; \ + if $(QUILT) applied >/dev/null 2>/dev/null; then \ + if $(QUILT) pop -a -v >$(STAMP_DIR)/log/unpatch 2>&1; then \ + cat $(STAMP_DIR)/log/unpatch; \ + echo "successful."; \ + else \ + cat $(STAMP_DIR)/log/unpatch; \ + echo "failed! (check $(STAMP_DIR)/log/unpatch for details)"; \ + exit 1; \ + fi; \ + else \ + echo "nothing to do."; \ + fi + +# Clean the generated maintainer scripts. +.PHONY: cleanscripts +cleanscripts: + rm -f $(STAMP_DIR)/genscripts + rm -f debian/*.config \ + debian/*.postinst \ + debian/*.postrm \ + debian/*.preinst \ + debian/*.prerm + +# Clean the package build tree. +.PHONY: xsfclean +xsfclean: cleanscripts unpatch + dh_testdir + rm -rf .pc + rm -rf $(STAMP_DIR) + dh_clean + +# Remove files from the upstream source tree that we don't need, or which have +# licensing problems. It must be run before creating the .orig.tar.gz. +# +# Note: This rule is for Debian package maintainers' convenience, and is not +# needed for conventional build scenarios. +.PHONY: prune-upstream-tree +prune-upstream-tree: + # Ensure we're in the correct directory. + dh_testdir + grep -rvh '^#' debian/prune/ | xargs --no-run-if-empty rm -rf + +# Verify that there are no offsets or fuzz in the patches we apply. +# +# Note: This rule is for Debian package maintainers' convenience, and is not +# needed for conventional build scenarios. +.PHONY: patch-audit +patch-audit: prepare unpatch + @echo -n "Auditing patches..."; \ + >$(STAMP_DIR)/log/patch; \ + FUZZY=; \ + while [ -n "$$($(QUILT) next)" ]; do \ + RESULT=$$($(QUILT) push -v | tee -a $(STAMP_DIR)/log/patch | grep ^Hunk | sed 's/^Hunk.*\(succeeded\|FAILED\).*/\1/');\ + case "$$RESULT" in \ + succeeded) \ + echo "fuzzy patch: $$($(QUILT) top)" \ + | tee -a $(STAMP_DIR)/log/$$($(QUILT) top); \ + FUZZY=yes; \ + ;; \ + FAILED) \ + echo "broken patch: $$($(QUILT) next)" \ + | tee -a $(STAMP_DIR)/log/$$($(QUILT) next); \ + exit 1; \ + ;; \ + esac; \ + done; \ + if [ -n "$$FUZZY" ]; then \ + echo "there were fuzzy patches; please fix."; \ + exit 1; \ + else \ + echo "done."; \ + fi + +# Generate the maintainer scripts. +.PHONY: genscripts +stampdir_targets+=genscripts +genscripts: $(STAMP_DIR)/genscripts +$(STAMP_DIR)/genscripts: $(STAMP_DIR)/stampdir + for FILE in debian/*.config.in \ + debian/*.postinst.in \ + debian/*.postrm.in \ + debian/*.preinst.in \ + debian/*.prerm.in; do \ + if [ -e "$$FILE" ]; then \ + MAINTSCRIPT=$$(echo $$FILE | sed 's/.in$$//'); \ + sed -n '1,/^#INCLUDE_SHELL_LIB#$$/p' <$$FILE \ + | sed -e '/^#INCLUDE_SHELL_LIB#$$/d' >$$MAINTSCRIPT.tmp; \ + cat debian/xsfbs/xsfbs.sh >>$$MAINTSCRIPT.tmp; \ + sed -n '/^#INCLUDE_SHELL_LIB#$$/,$$p' <$$FILE \ + | sed -e '/^#INCLUDE_SHELL_LIB#$$/d' >>$$MAINTSCRIPT.tmp; \ + sed -e 's/@SOURCE_VERSION@/$(SOURCE_VERSION)/' \ + -e 's/@OFFICIAL_BUILD@/$(OFFICIAL_BUILD)/' \ + <$$MAINTSCRIPT.tmp >$$MAINTSCRIPT; \ + rm $$MAINTSCRIPT.tmp; \ + fi; \ + done + # Validate syntax of generated shell scripts. + #sh debian/scripts/validate-posix-sh debian/*.config \ + # debian/*.postinst \ + # debian/*.postrm \ + # debian/*.preinst \ + # debian/*.prerm + >$@ + +# Compute dependencies for drivers +# +VIDEODEP = $(shell cat /usr/share/xserver-xorg/videodrvdep 2>/dev/null) +INPUTDEP = $(shell cat /usr/share/xserver-xorg/xinputdep 2>/dev/null) + +# these two can be removed post-squeeze +VIDEOABI = $(shell cat /usr/share/xserver-xorg/videoabiver 2>/dev/null) +INPUTABI = $(shell cat /usr/share/xserver-xorg/inputabiver 2>/dev/null) +VIDDRIVER_PROVIDES = xserver-xorg-video-$(VIDEOABI), xorg-driver-video +INPDRIVER_PROVIDES = xserver-xorg-input-$(INPUTABI), xorg-driver-input + +ifeq ($(PACKAGE),) +PACKAGE=$(shell awk '/^Package:/ { print $$2; exit }' < debian/control) +endif + +.PHONY: serverabi +serverabi: install +ifeq ($(VIDEODEP),) + @echo 'error: xserver-xorg-dev >= 1.7.6.901 needs to be installed' + @exit 1 +else + echo "xviddriver:Depends=$(VIDEODEP)" >> debian/$(PACKAGE).substvars + echo "xinpdriver:Depends=$(INPUTDEP)" >> debian/$(PACKAGE).substvars + # the following is there for compatibility... + echo "xviddriver:Provides=$(VIDDRIVER_PROVIDES)" >> debian/$(PACKAGE).substvars + echo "xinpdriver:Provides=$(INPDRIVER_PROVIDES)" >> debian/$(PACKAGE).substvars + echo "xserver:Depends=$(VIDEODEP), $(INPUTDEP)" >> debian/$(PACKAGE).substvars +endif + +# vim:set noet ai sts=8 sw=8 tw=0: --- xserver-xorg-input-mouse-1.6.0.orig/debian/local/10-x11-mouse.fdi +++ xserver-xorg-input-mouse-1.6.0/debian/local/10-x11-mouse.fdi @@ -0,0 +1,10 @@ + + + + + + mouse + + + +