2 * Copyright © 1999 Keith Packard
4 * Permission to use, copy, modify, distribute, and sell this software and its
5 * documentation for any purpose is hereby granted without fee, provided that
6 * the above copyright notice appear in all copies and that both that
7 * copyright notice and this permission notice appear in supporting
8 * documentation, and that the name of Keith Packard not be used in
9 * advertising or publicity pertaining to distribution of the software without
10 * specific, written prior permission. Keith Packard makes no
11 * representations about the suitability of this software for any purpose. It
12 * is provided "as is" without express or implied warranty.
14 * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
15 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
16 * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
17 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
18 * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
19 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
20 * PERFORMANCE OF THIS SOFTWARE.
24 #include <kdrive-config.h>
28 KdCardInfo
*kdCardInfo
;
31 KdCardInfoAdd (KdCardFuncs
*funcs
,
35 KdCardInfo
*ci
, **prev
;
37 ci
= (KdCardInfo
*) xalloc (sizeof (KdCardInfo
));
40 bzero (ci
, sizeof (KdCardInfo
));
41 for (prev
= &kdCardInfo
; *prev
; prev
= &(*prev
)->next
);
45 ci
->closure
= closure
;
59 for (ci
= kdCardInfo
; ci
->next
; ci
= ci
->next
);
64 KdCardInfoDispose (KdCardInfo
*ci
)
68 for (prev
= &kdCardInfo
; *prev
; prev
= &(*prev
)->next
)
78 KdScreenInfoAdd (KdCardInfo
*ci
)
80 KdScreenInfo
*si
, **prev
;
83 si
= (KdScreenInfo
*) xalloc (sizeof (KdScreenInfo
));
86 bzero (si
, sizeof (KdScreenInfo
));
87 for (prev
= &ci
->screenList
, n
= 0; *prev
; prev
= &(*prev
)->next
, n
++);
96 KdScreenInfoDispose (KdScreenInfo
*si
)
98 KdCardInfo
*ci
= si
->card
;
101 for (prev
= &ci
->screenList
; *prev
; prev
= &(*prev
)->next
) {
107 KdCardInfoDispose (ci
);
119 pi
= (KdPointerInfo
*)xcalloc(1, sizeof(KdPointerInfo
));
123 pi
->name
= KdSaveString("Generic Pointer");
125 pi
->inputClass
= KD_MOUSE
;
127 pi
->driverPrivate
= NULL
;
131 pi
->nButtons
= KD_MAX_BUTTON
;
132 for (i
= 1; i
< KD_MAX_BUTTON
; i
++)
139 KdFreePointer(KdPointerInfo
*pi
)
141 InputOption
*option
, *prev
= NULL
;
148 for (option
= pi
->options
; option
; option
= option
->next
) {
154 xfree(option
->value
);
165 KdFreeKeyboard(KdKeyboardInfo
*ki
)