#include <GL/freeglut.h>
#include "freeglut_internal.h"
-#if TARGET_HOST_UNIX_X11
+#if TARGET_HOST_POSIX_X11
+#if HAVE_ERRNO
#include <errno.h>
+#endif
#include <sys/ioctl.h>
#include <sys/time.h>
#include <time.h>
struct termios termio, termio_save;
} SERIALPORT;
-#elif TARGET_HOST_WIN32
+#elif TARGET_HOST_MS_WINDOWS
#include <sys/types.h>
#include <winbase.h>
typedef struct {
*/
void fgInitialiseInputDevices ( void )
{
- const char *dial_device=NULL;
if( !fgState.InputDevsInitialised )
{
+ /* will return true for VC8 (VC2005) and higher */
+#if TARGET_HOST_MS_WINDOWS && ( _MSC_VER >= 1400 ) && HAVE_ERRNO
+ char *dial_device=NULL;
+ size_t sLen;
+ errno_t err = _dupenv_s( &dial_device, &sLen, "GLUT_DIALS_SERIAL" );
+ if (err)
+ fgError("Error getting GLUT_DIALS_SERIAL environment variable");
+#else
+ const char *dial_device=NULL;
dial_device = getenv ( "GLUT_DIALS_SERIAL" );
-#if TARGET_HOST_WIN32
+#endif
+#if TARGET_HOST_MS_WINDOWS
if (!dial_device){
static char devname[256];
DWORD size=sizeof(devname);
#endif
if ( !dial_device ) return;
if ( !( dialbox_port = serial_open ( dial_device ) ) ) return;
+ /* will return true for VC8 (VC2005) and higher */
+#if TARGET_HOST_MS_WINDOWS && ( _MSC_VER >= 1400 ) && HAVE_ERRNO
+ free ( dial_device ); dial_device = NULL; /* dupenv_s allocates a string that we must free */
+#endif
serial_putchar(dialbox_port,DIAL_INITIALIZE);
glutTimerFunc ( 10, poll_dials, 0 );
fgState.InputDevsInitialised = GL_TRUE;
/******** OS Specific Serial I/O routines *******/
-#if TARGET_HOST_UNIX_X11 /* ==> Linux/BSD/UNIX POSIX serial I/O */
+#if TARGET_HOST_POSIX_X11 /* ==> Linux/BSD/UNIX POSIX serial I/O */
static SERIALPORT *serial_open ( const char *device )
{
int fd;
tcflush ( port->fd, TCIOFLUSH );
}
-#elif TARGET_HOST_WIN32
+#elif TARGET_HOST_MS_WINDOWS
static SERIALPORT *serial_open(const char *device){
HANDLE fh;