X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Ffreeglut_joystick.c;h=8260340ab2a2553d79e3e833f14d5bf231d0f1a6;hb=4f4c33c357f3dae74ac98fbdb450b3f624026049;hp=af7c54c328ac870298b78c7c1af9f0a9d63a37da;hpb=d864471d255dcf0479b64fc034086eab9c3cdb8f;p=freeglut diff --git a/src/freeglut_joystick.c b/src/freeglut_joystick.c index af7c54c..8260340 100644 --- a/src/freeglut_joystick.c +++ b/src/freeglut_joystick.c @@ -59,7 +59,7 @@ # include #endif -#if TARGET_HOST_WIN32 +#if TARGET_HOST_MS_WINDOWS && !defined(_WIN32_WCE) # define _JS_MAX_AXES 8 # include # include @@ -67,7 +67,7 @@ #endif -#if TARGET_HOST_UNIX_X11 +#if TARGET_HOST_POSIX_X11 # define _JS_MAX_AXES 16 # if HAVE_SYS_IOCTL_H # include @@ -230,7 +230,7 @@ static int fghJoystickFindUSBdev(char *name, char *out, int outlen) 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); @@ -385,14 +385,14 @@ struct tagSFG_Joystick maxReport[_JS_MAX_AXES]; #endif -#if TARGET_HOST_WIN32 +#if TARGET_HOST_MS_WINDOWS && !defined(_WIN32_WCE) JOYCAPS jsCaps; JOYINFOEX js; UINT js_id; #endif -#if TARGET_HOST_UNIX_X11 +#if TARGET_HOST_POSIX_X11 # if defined(__FreeBSD__) || defined(__NetBSD__) struct os_specific_s *os; # endif @@ -455,7 +455,7 @@ static SFG_Joystick *fgJoystick [ MAX_NUM_JOYSTICKS ]; */ static void fghJoystickRawRead( SFG_Joystick* joy, int* buttons, float* axes ) { -#if TARGET_HOST_WIN32 +#if TARGET_HOST_MS_WINDOWS && !defined(_WIN32_WCE) MMRESULT status; #else int status; @@ -531,7 +531,7 @@ static void fghJoystickRawRead( SFG_Joystick* joy, int* buttons, float* axes ) } #endif -#if TARGET_HOST_WIN32 +#if TARGET_HOST_MS_WINDOWS && !defined(_WIN32_WCE) status = joyGetPosEx( joy->js_id, &joy->js ); if ( status != JOYERR_NOERROR ) @@ -597,7 +597,7 @@ static void fghJoystickRawRead( SFG_Joystick* joy, int* buttons, float* axes ) } #endif -#if TARGET_HOST_UNIX_X11 +#if TARGET_HOST_POSIX_X11 # if defined(__FreeBSD__) || defined(__NetBSD__) if ( joy->os->is_analog ) { @@ -975,11 +975,11 @@ static void fghJoystickAddHatElement ( SFG_Joystick *joy, CFDictionaryRef button } #endif -#if TARGET_HOST_WIN32 +#if TARGET_HOST_MS_WINDOWS && !defined(_WIN32_WCE) /* Inspired by http://msdn.microsoft.com/archive/en-us/dnargame/html/msdn_sidewind3d.asp */ -# if defined(_MSC_VER) +# if FREEGLUT_LIB_PRAGMAS # pragma comment (lib, "advapi32.lib") # endif @@ -997,9 +997,9 @@ static int fghJoystickGetOEMProductName ( SFG_Joystick* joy, char *buf, int buf_ 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); @@ -1009,7 +1009,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. */ - 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 ); @@ -1017,7 +1017,7 @@ static int fghJoystickGetOEMProductName ( SFG_Joystick* joy, char *buf, int buf_ 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 ); @@ -1039,7 +1039,7 @@ static int fghJoystickGetOEMProductName ( SFG_Joystick* joy, char *buf, int buf_ static void fghJoystickOpen( SFG_Joystick* joy ) { - int i; + int i = 0; #if TARGET_HOST_MACINTOSH OSStatus err; #endif @@ -1053,15 +1053,15 @@ static void fghJoystickOpen( SFG_Joystick* joy ) CFDictionaryRef props; CFTypeRef topLevelElement; #endif -#if TARGET_HOST_UNIX_X11 +#if TARGET_HOST_POSIX_X11 # if defined( __FreeBSD__ ) || defined( __NetBSD__ ) char *cp; # endif # ifdef JS_NEW unsigned char u; # else -# if defined( __linux__ ) - int counter; +# if defined( __linux__ ) || TARGET_HOST_SOLARIS + int counter = 0; # endif # endif #endif @@ -1227,7 +1227,7 @@ static void fghJoystickOpen( SFG_Joystick* joy ) CFRelease( props ); #endif -#if TARGET_HOST_WIN32 +#if TARGET_HOST_MS_WINDOWS && !defined(_WIN32_WCE) joy->js.dwFlags = JOY_RETURNALL; joy->js.dwSize = sizeof( joy->js ); @@ -1289,7 +1289,7 @@ static void fghJoystickOpen( SFG_Joystick* joy ) } #endif -#if TARGET_HOST_UNIX_X11 +#if TARGET_HOST_POSIX_X11 #if defined( __FreeBSD__ ) || defined( __NetBSD__ ) for( i = 0; i < _JS_MAX_AXES; i++ ) joy->os->cache_axes[ i ] = 0.0f; @@ -1325,7 +1325,7 @@ static void fghJoystickOpen( SFG_Joystick* joy ) if( joy->error ) return; - sprintf( joyfname, "%s/.joy%drc", getenv( "HOME" ), joy->id ); + snprintf( joyfname, sizeof(buffer), "%s/.joy%drc", getenv( "HOME" ), joy->id ); joyfile = fopen( joyfname, "r" ); joy->error =( joyfile == NULL ); @@ -1394,7 +1394,7 @@ static void fghJoystickOpen( SFG_Joystick* joy ) # endif #endif -#if defined( __linux__ ) +#if defined( __linux__ ) || TARGET_HOST_SOLARIS /* Default for older Linux systems. */ joy->num_axes = 2; joy->num_buttons = 32; @@ -1488,7 +1488,7 @@ static void fghJoystickInit( int 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 @@ -1535,7 +1535,7 @@ static void fghJoystickInit( int ident ) } #endif -#if TARGET_HOST_WIN32 +#if TARGET_HOST_MS_WINDOWS && !defined(_WIN32_WCE) switch( ident ) { case 0: @@ -1553,7 +1553,7 @@ static void fghJoystickInit( int ident ) } #endif -#if TARGET_HOST_UNIX_X11 +#if TARGET_HOST_POSIX_X11 # if defined( __FreeBSD__ ) || defined( __NetBSD__ ) fgJoystick[ ident ]->id = ident; fgJoystick[ ident ]->error = GL_FALSE; @@ -1563,18 +1563,18 @@ static void fghJoystickInit( int ident ) 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 - 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; - 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 ) - sprintf( fgJoystick[ ident ]->fname, "/dev/js%d", ident ); + snprintf( fgJoystick[ ident ]->fname, sizeof(fgJoystick[ ident ]->fname), "/dev/js%d", ident ); # endif #endif @@ -1618,11 +1618,11 @@ void fgJoystickClose( void ) close( fgJoystick[ ident ]->hidDev ); #endif -#if TARGET_HOST_WIN32 +#if TARGET_HOST_MS_WINDOWS && !defined(_WIN32_WCE) /* Do nothing special */ #endif -#if TARGET_HOST_UNIX_X11 +#if TARGET_HOST_POSIX_X11 #if defined( __FreeBSD__ ) || defined( __NetBSD__ ) if( fgJoystick[ident]->os ) { @@ -1688,9 +1688,6 @@ int fgJoystickDetect( void ) fgInitialiseJoysticks (); - if ( !fgJoystick ) - return 0; - if ( !fgState.JoysticksInitialised ) return 0;