Hello!
I have macbook:
hw.model=Intel(R) Core(TM)2 CPU T7400 @ 2.16GHz
hw.vendor=Apple Inc.
hw.product=MacBook2,1
hw.version=1.0

On http://wiki.freebsd.org/AppleMacbook "IR receiver" section there is
tool available at http://fnop.net/~rpaulo/priv/freebsd/aird.tgz.

Here is patch that makes it compile/work under openbsd with my macbook
and remote control.

Ignore manpage, run like this:
./aird -vd -f /dev/uhid1 -M "echo menu" -P "echo play" -F "echo
forward" -B "echo backward" -U "echo volumeup" -D "echo volumedown"


--- aird.c.orig Tue Jul 31 21:26:36 2007
+++ aird.c      Sat Nov 10 22:56:10 2007
@@ -50,7 +50,6 @@
  */

 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");

 #include <err.h>
 #include <errno.h>
@@ -69,24 +68,17 @@
 #include <sys/ioctl.h>
 #include <sys/stat.h>

-#include <libutil.h>
 #include <dev/usb/usb.h>
 #include <dev/usb/usbhid.h>

-static struct pidfh *pfh;
-
 static void    sighandler(int sig);
 static void    usage(void);
 static void    runcmd(const char *cmd, int fd);


-static void
-sighandler(__unused int sig)
+static void sighandler(int sig)
 {

-       if (pfh)
-               pidfile_remove(pfh);
-
        exit(EXIT_SUCCESS);
 }

@@ -96,7 +88,7 @@
        fprintf(stderr, "usage: %s [-vd] [-p pidfile] -f device "
            "[-M menu command]\n\t[-P play command] [-F forward command] "
            "[-B backward command]\n\t[-U volume up command] "
-           "[-D volume down command]\n", getprogname());
+           "[-D volume down command]\n", "aird");

        exit(1);
 }
@@ -132,8 +124,6 @@
        const char *deventry;
        unsigned char key;

-       pfh = NULL;
-
        signal(SIGHUP, sighandler);
        signal(SIGINT, sighandler);
        signal(SIGCHLD, SIG_IGN);
@@ -207,23 +197,9 @@
                err(EXIT_FAILURE, "open %s", deventry);

        if (!foreground) {
-               pfh = pidfile_open(pidfile, 0600, &otherpid);
-               if (pfh == NULL) {
-                       if (errno == EEXIST) {
-                               errx(EXIT_FAILURE,
-                                   "Daemon already running, pid: %jd.",
-                                   (intmax_t)otherpid);
-                       }
-                       /* If we cannot create pidfile from other reasons,
-                          only warn. */
-                       warn("Cannot open or create pidfile");
-               }
-               
                if (daemon(0, 0) < 0) {
-                       pidfile_remove(pfh);
                        err(EXIT_FAILURE, "daemon");
                }
-               pidfile_write(pfh);
        }
        
        memset(prevbuf, 0, sizeof(prevbuf));
@@ -243,9 +219,6 @@
                        exit(EXIT_SUCCESS);
                }

-               if (key && buf[3] != key)
-                       continue;
-               
                /*
                 * Check for key repeats.
                 */
@@ -273,7 +246,7 @@
                        repeating = 0;
                }
                
-               switch (buf[4]) {
+               switch (buf[3]) {
                /* Menu */      
                case 0x02:
                case 0x03:
@@ -308,7 +281,6 @@
                }

        }
-       pidfile_remove(pfh);
        close(fd);

        return (0);

Reply via email to