#include <GL/freeglut.h>
#include "freeglut_internal.h"
-#if HAVE_SYS_PARAM_H
+#ifdef HAVE_SYS_PARAM_H
# include <sys/param.h>
#endif
#if TARGET_HOST_POSIX_X11
# define _JS_MAX_AXES 16
-# if HAVE_SYS_IOCTL_H
+# ifdef HAVE_SYS_IOCTL_H
# include <sys/ioctl.h>
# endif
-# if HAVE_FCNTL_H
+# ifdef HAVE_FCNTL_H
# include <fcntl.h>
# endif
-# include <errno.h>
-# if defined(__FreeBSD__) || defined(__NetBSD__)
+# ifdef HAVE_ERRNO_H
+# include <errno.h>
+# include <string.h>
+# endif
+# if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__)
/* XXX The below hack is done until freeglut's autoconf is updated. */
# define HAVE_USB_JS 1
-# if defined(__FreeBSD__)
+# if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
# include <sys/joystick.h>
# else
/*
/* BSD defines from "jsBSD.cxx" around lines 42-270 */
-#if defined(__NetBSD__) || defined(__FreeBSD__)
+#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
# ifdef HAVE_USB_JS
# if defined(__NetBSD__)
# else
# include <usb.h>
# endif
-# elif defined(__FreeBSD__)
-# if __FreeBSD_version < 500000
-# include <libusbhid.h>
-# else
-/* XXX The below hack is done until freeglut's autoconf is updated. */
-# define HAVE_USBHID_H 1
+# elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+# ifdef HAVE_USBHID_H
# include <usbhid.h>
+# else
+# include <libusbhid.h>
# endif
# endif
-# include <dev/usb/usb.h>
+# include <legacy/dev/usb/usb.h>
# include <dev/usb/usbhid.h>
/* Compatibility with older usb.h revisions */
close(f);
if (cp)
return 1;
- } else if (errno == EACCES) {
+ }
+#ifdef HAVE_ERRNO_H
+ else if (errno == EACCES) {
if (!protection_warned) {
fgWarning ( "Can't open %s for read!", buf );
protection_warned = 1;
}
}
+#endif
}
return 0;
}
if ( ( rd = hid_get_report_desc( os->fd ) ) == 0 )
{
+#ifdef HAVE_ERRNO_H
fgWarning ( "error: %s: %s", os->fname, strerror( errno ) );
+#else
+ fgWarning ( "error: %s", os->fname );
+#endif
return FALSE;
}
if( ioctl( os->fd, USB_GET_REPORT_ID, &report_id ) < 0)
{
/*** XXX {report_id} may not be the right variable? ***/
+#ifdef HAVE_ERRNO_H
fgWarning ( "error: %s%d: %s", UHIDDEV, report_id, strerror( errno ) );
+#else
+ fgWarning ( "error: %s%d", UHIDDEV, report_id );
+#endif
return FALSE;
}
#if TARGET_HOST_POSIX_X11
-# if defined(__FreeBSD__) || defined(__NetBSD__)
+# if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__)
struct os_specific_s *os;
# endif
int status;
#endif
-#if defined(__FreeBSD__) || defined(__NetBSD__)
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__)
int len;
#endif
#endif
#if TARGET_HOST_POSIX_X11
-# if defined(__FreeBSD__) || defined(__NetBSD__)
+# if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__)
if ( joy->os->is_analog )
{
int status = read ( joy->os->fd, &joy->os->ajs, sizeof(joy->os->ajs) );
}
}
}
+#ifdef HAVE_ERRNO_H
if ( len < 0 && errno != EAGAIN )
+#else
+ if ( len < 0 )
+#endif
{
perror( joy->os->fname );
joy->error = 1;
if ( status != sizeof( struct js_event ) )
{
+#ifdef HAVE_ERRNO_H
if ( errno == EAGAIN )
{
/* Use the old values */
sizeof( float ) * joy->num_axes );
return;
}
+#endif
fgWarning ( "%s", joy->fname );
joy->error = GL_TRUE;
}
if ( buttons )
-# if defined( __FreeBSD__ ) || defined( __NetBSD__ )
+# if defined( __FreeBSD__ ) || defined(__FreeBSD_kernel__) || defined( __NetBSD__ )
*buttons = ( joy->js.b1 ? 1 : 0 ) | ( joy->js.b2 ? 2 : 0 ); /* XXX Should not be here -- BSD is handled earlier */
# else
*buttons = joy->js.buttons;
CFTypeRef topLevelElement;
#endif
#if TARGET_HOST_POSIX_X11
-# if defined( __FreeBSD__ ) || defined( __NetBSD__ )
+# if defined( __FreeBSD__ ) || defined(__FreeBSD_kernel__) || defined( __NetBSD__ )
char *cp;
# endif
# ifdef JS_NEW
#endif
#if TARGET_HOST_POSIX_X11
-#if defined( __FreeBSD__ ) || defined( __NetBSD__ )
+#if defined( __FreeBSD__ ) || defined(__FreeBSD_kernel__) || defined( __NetBSD__ )
for( i = 0; i < _JS_MAX_AXES; i++ )
joy->os->cache_axes[ i ] = 0.0f;
joy->os->fd = open( joy->os->fname, O_RDONLY | O_NONBLOCK);
+#ifdef HAVE_ERRNO_H
if( joy->os->fd < 0 && errno == EACCES )
fgWarning ( "%s exists but is not readable by you", joy->os->fname );
+#endif
joy->error =( joy->os->fd < 0 );
if( joy->error )
return;
- snprintf( joyfname, sizeof(buffer), "%s/.joy%drc", getenv( "HOME" ), joy->id );
+ snprintf( joyfname, sizeof(joyfname), "%s/.joy%drc", getenv( "HOME" ), joy->id );
joyfile = fopen( joyfname, "r" );
joy->error =( joyfile == NULL );
#endif
#if TARGET_HOST_POSIX_X11
-# if defined( __FreeBSD__ ) || defined( __NetBSD__ )
+# if defined( __FreeBSD__ ) || defined(__FreeBSD_kernel__) || defined( __NetBSD__ )
fgJoystick[ ident ]->id = ident;
fgJoystick[ ident ]->error = GL_FALSE;
#endif
#if TARGET_HOST_POSIX_X11
-#if defined( __FreeBSD__ ) || defined( __NetBSD__ )
+#if defined( __FreeBSD__ ) || defined(__FreeBSD_kernel__) || defined( __NetBSD__ )
if( fgJoystick[ident]->os )
{
if( ! fgJoystick[ ident ]->error )