Files
Arquivotheca.SunOS-4.1.4/usr.lib/libsunwindow/win/win_enum_ind.c
seta75D ff309bfe1c Init
2021-10-11 18:37:13 -03:00

62 lines
1.3 KiB
C

#ifndef lint
#ifdef sccs
static char sccsid[] = "@(#)win_enum_ind.c 1.1 94/10/31 Copyr 1985 Sun Micro";
#endif
#endif
/*
* Copyright (c) 1985 by Sun Microsystems, Inc.
*/
/*
* Win_enum_ind.c: Implement the win_enum_input_device call.
*/
#include <sys/types.h>
#include <sys/time.h>
#include <sys/file.h>
#include <sys/ioctl.h>
#include <sun/fbio.h>
#include <errno.h>
#include <stdio.h>
#include <sunwindow/rect.h>
#include <sunwindow/cms.h>
#include <sunwindow/win_screen.h>
#include <sunwindow/win_input.h>
#include <sunwindow/win_ioctl.h>
#include <sunwindow/win_struct.h>
int win_enum_many = 30; /* Max cap on number of input devices
to prevent run away enumeration. */
/*
* Returns -1 if error enumerating, 0 if went smoothly and
* 1 if func terminated enumeration.
*/
int
win_enum_input_device(windowfd, func, data)
int windowfd;
int (*func)();
caddr_t data;
{
struct input_device in_dev;
extern errno;
for (in_dev.id = 0; in_dev.id < win_enum_many; in_dev.id++) {
/* See if id is a valid input device */
in_dev.name[0] = '\0';
if (ioctl(windowfd, WINGETINPUTDEV, &in_dev) == -1) {
if (errno == ENODEV)
return(0);
(void)werror(-1, WINGETINPUTDEV);
return(-1);
}
/* Call function. If returns non-zero value then return 1. */
if ((*func)(in_dev.name, data))
return(1);
}
return(0);
}