default irix device
[sball] / src / main.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4 #include <signal.h>
5 #include <errno.h>
6 #include <unistd.h>
7 #include <sys/select.h>
8 #include "sball.h"
9
10 #ifdef __FreeBSD__
11 #define DEFDEV  "/dev/ttyu0"
12 #elif defined(__sgi__)
13 #define DEFDEV  "/dev/ttyd1"
14 #else
15 #define DEFDEV  "/dev/ttyS0"
16 #endif
17
18 static void sighandler(int s);
19
20 static struct sball *sb;
21 static int quit;
22
23 int main(int argc, char **argv)
24 {
25         int fd;
26         fd_set rdset;
27         const char *dev = DEFDEV;
28
29         signal(SIGINT, sighandler);
30
31         if(argv[1]) {
32                 if(strcmp(argv[1], "btest") == 0) {
33                         sball_button_test();
34                         return 0;
35                 }
36                 dev = argv[1];
37         }
38
39         if(!(sb = sball_open(dev))) {
40                 fprintf(stderr, "Failed to open spaceball at %s\n", dev);
41                 return 1;
42         }
43         fd = sball_fd(sb);
44
45         printf("Monitoring device, ctrl-c to quit\n");
46
47         while(!quit) {
48                 FD_ZERO(&rdset);
49                 FD_SET(fd, &rdset);
50
51                 if(select(fd + 1, &rdset, 0, 0, 0) > 0) {
52                         if(FD_ISSET(fd, &rdset)) {
53                                 sball_read(sb);
54                         }
55                 }
56
57         }
58         putchar('\n');
59
60         sball_close(sb);
61         return 0;
62 }
63
64 static void sighandler(int s)
65 {
66         quit = 1;
67 }