projects
/
freeglut
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Allowing recent change to build on older versions of MSVC per e-mail from Eero Pajarr...
[freeglut]
/
src
/
freeglut_joystick.c
diff --git
a/src/freeglut_joystick.c
b/src/freeglut_joystick.c
index
e4bd53b
..
91fe226
100644
(file)
--- a/
src/freeglut_joystick.c
+++ b/
src/freeglut_joystick.c
@@
-33,7
+33,7
@@
#include <GL/freeglut.h>
#include "freeglut_internal.h"
#include <GL/freeglut.h>
#include "freeglut_internal.h"
-#if HAVE_SYS_PARAM_H
+#ifdef HAVE_SYS_PARAM_H
# include <sys/param.h>
#endif
# include <sys/param.h>
#endif
@@
-69,13
+69,16
@@
#if TARGET_HOST_POSIX_X11
# define _JS_MAX_AXES 16
#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
# include <sys/ioctl.h>
# endif
-# if HAVE_FCNTL_H
+# ifdef HAVE_FCNTL_H
# include <fcntl.h>
# endif
# include <fcntl.h>
# endif
-# include <errno.h>
+# ifdef HAVE_ERRNO_H
+# include <errno.h>
+# include <string.h>
+# endif
# if defined(__FreeBSD__) || defined(__NetBSD__)
/* XXX The below hack is done until freeglut's autoconf is updated. */
# define HAVE_USB_JS 1
# if defined(__FreeBSD__) || defined(__NetBSD__)
/* XXX The below hack is done until freeglut's autoconf is updated. */
# define HAVE_USB_JS 1
@@
-230,19
+233,22
@@
static int fghJoystickFindUSBdev(char *name, char *out, int outlen)
static int protection_warned = 0;
for (i = 0; i < 16; i++) {
static int protection_warned = 0;
for (i = 0; i < 16; i++) {
- sprintf(buf, "%s%d", USBDEV, i);
+ snprintf(buf, sizeof(buf), "%s%d", USBDEV, i);
f = open(buf, O_RDONLY);
if (f >= 0) {
cp = fghJoystickWalkUSBdev(f, name, out, outlen);
close(f);
if (cp)
return 1;
f = open(buf, O_RDONLY);
if (f >= 0) {
cp = fghJoystickWalkUSBdev(f, name, out, outlen);
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;
}
}
if (!protection_warned) {
fgWarning ( "Can't open %s for read!", buf );
protection_warned = 1;
}
}
+#endif
}
return 0;
}
}
return 0;
}
@@
-260,7
+266,11
@@
static int fghJoystickInitializeHID(struct os_specific_s *os,
if ( ( rd = hid_get_report_desc( os->fd ) ) == 0 )
{
if ( ( rd = hid_get_report_desc( os->fd ) ) == 0 )
{
+#ifdef HAVE_ERRNO_H
fgWarning ( "error: %s: %s", os->fname, strerror( errno ) );
fgWarning ( "error: %s: %s", os->fname, strerror( errno ) );
+#else
+ fgWarning ( "error: %s", os->fname );
+#endif
return FALSE;
}
return FALSE;
}
@@
-270,7
+280,11
@@
static int fghJoystickInitializeHID(struct os_specific_s *os,
if( ioctl( os->fd, USB_GET_REPORT_ID, &report_id ) < 0)
{
/*** XXX {report_id} may not be the right variable? ***/
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 ) );
fgWarning ( "error: %s%d: %s", UHIDDEV, report_id, strerror( errno ) );
+#else
+ fgWarning ( "error: %s%d", UHIDDEV, report_id );
+#endif
return FALSE;
}
return FALSE;
}
@@
-663,7
+677,11
@@
static void fghJoystickRawRead( SFG_Joystick* joy, int* buttons, float* axes )
}
}
}
}
}
}
+#ifdef HAVE_ERRNO_H
if ( len < 0 && errno != EAGAIN )
if ( len < 0 && errno != EAGAIN )
+#else
+ if ( len < 0 )
+#endif
{
perror( joy->os->fname );
joy->error = 1;
{
perror( joy->os->fname );
joy->error = 1;
@@
-682,6
+700,7
@@
static void fghJoystickRawRead( SFG_Joystick* joy, int* buttons, float* axes )
if ( status != sizeof( struct js_event ) )
{
if ( status != sizeof( struct js_event ) )
{
+#ifdef HAVE_ERRNO_H
if ( errno == EAGAIN )
{
/* Use the old values */
if ( errno == EAGAIN )
{
/* Use the old values */
@@
-692,6
+711,7
@@
static void fghJoystickRawRead( SFG_Joystick* joy, int* buttons, float* axes )
sizeof( float ) * joy->num_axes );
return;
}
sizeof( float ) * joy->num_axes );
return;
}
+#endif
fgWarning ( "%s", joy->fname );
joy->error = GL_TRUE;
fgWarning ( "%s", joy->fname );
joy->error = GL_TRUE;
@@
-997,9
+1017,9
@@
static int fghJoystickGetOEMProductName ( SFG_Joystick* joy, char *buf, int buf_
return 0;
/* Open .. MediaResources\CurrentJoystickSettings */
return 0;
/* Open .. MediaResources\CurrentJoystickSettings */
- sprintf ( buffer, "%s\\%s\\%s",
- REGSTR_PATH_JOYCONFIG, joy->jsCaps.szRegKey,
- REGSTR_KEY_JOYCURR );
+ _snprintf ( buffer, sizeof(buffer), "%s\\%s\\%s",
+ REGSTR_PATH_JOYCONFIG, joy->jsCaps.szRegKey,
+ REGSTR_KEY_JOYCURR );
lr = RegOpenKeyEx ( HKEY_LOCAL_MACHINE, buffer, 0, KEY_QUERY_VALUE, &hKey);
lr = RegOpenKeyEx ( HKEY_LOCAL_MACHINE, buffer, 0, KEY_QUERY_VALUE, &hKey);
@@
-1009,7
+1029,7
@@
static int fghJoystickGetOEMProductName ( SFG_Joystick* joy, char *buf, int buf_
dwcb = sizeof(OEMKey);
/* JOYSTICKID1-16 is zero-based; registry entries for VJOYD are 1-based. */
dwcb = sizeof(OEMKey);
/* JOYSTICKID1-16 is zero-based; registry entries for VJOYD are 1-based. */
- sprintf ( buffer, "Joystick%d%s", joy->js_id + 1, REGSTR_VAL_JOYOEMNAME );
+ _snprintf ( buffer, sizeof(buffer), "Joystick%d%s", joy->js_id + 1, REGSTR_VAL_JOYOEMNAME );
lr = RegQueryValueEx ( hKey, buffer, 0, 0, (LPBYTE) OEMKey, &dwcb);
RegCloseKey ( hKey );
lr = RegQueryValueEx ( hKey, buffer, 0, 0, (LPBYTE) OEMKey, &dwcb);
RegCloseKey ( hKey );
@@
-1017,7
+1037,7
@@
static int fghJoystickGetOEMProductName ( SFG_Joystick* joy, char *buf, int buf_
if ( lr != ERROR_SUCCESS ) return 0;
/* Open OEM Key from ...MediaProperties */
if ( lr != ERROR_SUCCESS ) return 0;
/* Open OEM Key from ...MediaProperties */
- sprintf ( buffer, "%s\\%s", REGSTR_PATH_JOYOEM, OEMKey );
+ _snprintf ( buffer, sizeof(buffer), "%s\\%s", REGSTR_PATH_JOYOEM, OEMKey );
lr = RegOpenKeyEx ( HKEY_LOCAL_MACHINE, buffer, 0, KEY_QUERY_VALUE, &hKey );
lr = RegOpenKeyEx ( HKEY_LOCAL_MACHINE, buffer, 0, KEY_QUERY_VALUE, &hKey );
@@
-1039,7
+1059,7
@@
static int fghJoystickGetOEMProductName ( SFG_Joystick* joy, char *buf, int buf_
static void fghJoystickOpen( SFG_Joystick* joy )
{
static void fghJoystickOpen( SFG_Joystick* joy )
{
- int i;
+ int i = 0;
#if TARGET_HOST_MACINTOSH
OSStatus err;
#endif
#if TARGET_HOST_MACINTOSH
OSStatus err;
#endif
@@
-1060,8
+1080,8
@@
static void fghJoystickOpen( SFG_Joystick* joy )
# ifdef JS_NEW
unsigned char u;
# else
# ifdef JS_NEW
unsigned char u;
# else
-# if defined( __linux__ )
- int counter;
+# if defined( __linux__ ) || TARGET_HOST_SOLARIS
+ int counter = 0;
# endif
# endif
#endif
# endif
# endif
#endif
@@
-1298,8
+1318,10
@@
static void fghJoystickOpen( SFG_Joystick* joy )
joy->os->fd = open( joy->os->fname, O_RDONLY | O_NONBLOCK);
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 );
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 );
joy->error =( joy->os->fd < 0 );
@@
-1325,7
+1347,7
@@
static void fghJoystickOpen( SFG_Joystick* joy )
if( joy->error )
return;
if( joy->error )
return;
- sprintf( joyfname, "%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 );
joyfile = fopen( joyfname, "r" );
joy->error =( joyfile == NULL );
@@
-1394,7
+1416,7
@@
static void fghJoystickOpen( SFG_Joystick* joy )
# endif
#endif
# endif
#endif
-#if defined( __linux__ )
+#if defined( __linux__ ) || TARGET_HOST_SOLARIS
/* Default for older Linux systems. */
joy->num_axes = 2;
joy->num_buttons = 32;
/* Default for older Linux systems. */
joy->num_axes = 2;
joy->num_buttons = 32;
@@
-1488,7
+1510,7
@@
static void fghJoystickInit( int ident )
#if TARGET_HOST_MACINTOSH
fgJoystick[ ident ]->id = ident;
#if TARGET_HOST_MACINTOSH
fgJoystick[ ident ]->id = ident;
- sprintf( fgJoystick[ ident ]->fname, "/dev/js%d", ident ); /* FIXME */
+ snprintf( fgJoystick[ ident ]->fname, sizeof(fgJoystick[ ident ]->fname), "/dev/js%d", ident ); /* FIXME */
fgJoystick[ ident ]->error = GL_FALSE;
#endif
fgJoystick[ ident ]->error = GL_FALSE;
#endif
@@
-1563,18
+1585,18
@@
static void fghJoystickInit( int ident )
if( ident < USB_IDENT_OFFSET )
fgJoystick[ ident ]->os->is_analog = 1;
if( fgJoystick[ ident ]->os->is_analog )
if( ident < USB_IDENT_OFFSET )
fgJoystick[ ident ]->os->is_analog = 1;
if( fgJoystick[ ident ]->os->is_analog )
- sprintf( fgJoystick[ ident ]->os->fname, "%s%d", AJSDEV, ident );
+ snprintf( fgJoystick[ ident ]->os->fname, sizeof(fgJoystick[ ident ]->os->fname), "%s%d", AJSDEV, ident );
else
else
- sprintf( fgJoystick[ ident ]->os->fname, "%s%d", UHIDDEV,
+ snprintf( fgJoystick[ ident ]->os->fname, sizeof(fgJoystick[ ident ]->os->fname), "%s%d", UHIDDEV,
ident - USB_IDENT_OFFSET );
# elif defined( __linux__ )
fgJoystick[ ident ]->id = ident;
fgJoystick[ ident ]->error = GL_FALSE;
ident - USB_IDENT_OFFSET );
# elif defined( __linux__ )
fgJoystick[ ident ]->id = ident;
fgJoystick[ ident ]->error = GL_FALSE;
- sprintf( fgJoystick[ident]->fname, "/dev/input/js%d", ident );
+ snprintf( fgJoystick[ident]->fname, sizeof(fgJoystick[ident]->fname), "/dev/input/js%d", ident );
if( access( fgJoystick[ ident ]->fname, F_OK ) != 0 )
if( access( fgJoystick[ ident ]->fname, F_OK ) != 0 )
- sprintf( fgJoystick[ ident ]->fname, "/dev/js%d", ident );
+ snprintf( fgJoystick[ ident ]->fname, sizeof(fgJoystick[ ident ]->fname), "/dev/js%d", ident );
# endif
#endif
# endif
#endif
@@
-1688,9
+1710,6
@@
int fgJoystickDetect( void )
fgInitialiseJoysticks ();
fgInitialiseJoysticks ();
- if ( !fgJoystick )
- return 0;
-
if ( !fgState.JoysticksInitialised )
return 0;
if ( !fgState.JoysticksInitialised )
return 0;