From simon.urbanek at math.uni-augsburg.de  Fri Oct  3 19:08:15 2003
From: simon.urbanek at math.uni-augsburg.de (Simon Urbanek)
Date: Fri Oct  3 19:07:32 2003
Subject: [Rd] latest beta + MinGW 3.1.0-1 = minor fix needed
Message-ID: <3F7DACFF.9030306@math.uni-augsburg.de>

MinGW 3.1.0-1 is currently the latest official MinGW release, therefore 
I tried to compile the latest R beta (rsync today). There is one minor 
problem when trying that:

gcc  -O2 -Wall -pedantic -I../../include -I../../gnuwin32 
-DHAVE_CONFIG_H  -c internet.c -o internet.o
In file included from internet.c:880:
sock.h:23: conflicting types for `ssize_t'
n:/MinGW/include/sys/types.h:119: previous declaration of `ssize_t'
make[3]: *** [internet.o] Error 1

(This is in src/modules/internet)

Obviously ssize_t was added to the system types in MinGW. The 
corresponding files:

MinGW: sys/types.h:

#ifndef _SSIZE_T_
#define _SSIZE_T_
typedef long _ssize_t;

R: src/modules/internet/sock.h

#ifdef Win32
typedef int ssize_t;
#endif

There are two possible fixes for this:
1) make sock.h use long instead of int.
2) use something like:
#if defined Win32 && !defined _SSIZE_T_

I don't think either fix is "better" in any way, but personally I'd go 
for the "long" (for Win32 I don't see any difference, but for Win64 fix 
2) may be less safe?).

Configuration:
MinGW 3.1.0-1
w32api 2.4

Simon


[Rd] latest beta + MinGW 3.1.0-1 = minor fix needed
Simon Urbanek