Applied the two patches from Kevin for gsocket
and wxGetTUCTime. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@26882 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
5614d24d40
commit
4056c8fe0c
@ -193,51 +193,9 @@ long wxGetLocalTime()
|
||||
// Get UTC time as seconds since 00:00:00, Jan 1st 1970
|
||||
long wxGetUTCTime()
|
||||
{
|
||||
struct tm tm;
|
||||
struct tm *ptm;
|
||||
time_t t0, t1;
|
||||
|
||||
// This cannot be made static because mktime can overwrite it
|
||||
//
|
||||
memset(&tm, 0, sizeof(tm));
|
||||
tm.tm_year = 70;
|
||||
tm.tm_mon = 0;
|
||||
tm.tm_mday = 5; // not Jan 1st 1970 due to mktime 'feature'
|
||||
tm.tm_hour = 0;
|
||||
tm.tm_min = 0;
|
||||
tm.tm_sec = 0;
|
||||
tm.tm_isdst = -1; // let mktime guess
|
||||
|
||||
// Note that mktime assumes that the struct tm contains local time.
|
||||
//
|
||||
t1 = time(&t1); // now
|
||||
t0 = mktime(&tm); // origin in localtime
|
||||
|
||||
if (( t0 != (time_t)-1 ) && ( t1 != (time_t)-1 ))
|
||||
{
|
||||
// To get t0 as GMT we convert to a struct tm with gmtime,
|
||||
// and then back again.
|
||||
//
|
||||
ptm = gmtime(&t0);
|
||||
|
||||
if (ptm)
|
||||
{
|
||||
memcpy(&tm, ptm, sizeof(tm));
|
||||
t0 = mktime(&tm);
|
||||
|
||||
if (t0 != (time_t)-1 )
|
||||
return (long)difftime(t1, t0) + (60 * 60 * 24 * 4);
|
||||
wxLogSysError(_("mktime() failed"));
|
||||
}
|
||||
else
|
||||
{
|
||||
wxLogSysError(_("gmtime() failed"));
|
||||
}
|
||||
}
|
||||
|
||||
wxLogError(_("Failed to get the UTC system time."));
|
||||
|
||||
return -1;
|
||||
long timenow = 0;
|
||||
time(&timenow);
|
||||
return timenow;
|
||||
}
|
||||
|
||||
#if wxUSE_LONGLONG
|
||||
|
@ -800,27 +800,26 @@ int GSocket_Read(GSocket *socket, char *buffer, int size)
|
||||
|
||||
assert(socket != NULL);
|
||||
|
||||
/* When using CFSocket we MUST NOT reenable events until we finish reading */
|
||||
#ifndef __DARWIN__
|
||||
/* Reenable INPUT events */
|
||||
_GSocket_Enable(socket, GSOCK_INPUT);
|
||||
#endif
|
||||
|
||||
if (socket->m_fd == INVALID_SOCKET || socket->m_server)
|
||||
{
|
||||
socket->m_error = GSOCK_INVSOCK;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Disable events during query of socket status */
|
||||
_GSocket_Disable(socket, GSOCK_INPUT);
|
||||
|
||||
/* If the socket is blocking, wait for data (with a timeout) */
|
||||
if (_GSocket_Input_Timeout(socket) == GSOCK_TIMEDOUT)
|
||||
return -1;
|
||||
|
||||
/* Read the data */
|
||||
if (socket->m_stream)
|
||||
ret = _GSocket_Recv_Stream(socket, buffer, size);
|
||||
else
|
||||
ret = _GSocket_Recv_Dgram(socket, buffer, size);
|
||||
/* We no longer return here immediately, otherwise socket events would not be re-enabled! */
|
||||
ret = -1;
|
||||
else {
|
||||
/* Read the data */
|
||||
if (socket->m_stream)
|
||||
ret = _GSocket_Recv_Stream(socket, buffer, size);
|
||||
else
|
||||
ret = _GSocket_Recv_Dgram(socket, buffer, size);
|
||||
}
|
||||
|
||||
if (ret == -1)
|
||||
{
|
||||
@ -830,11 +829,9 @@ int GSocket_Read(GSocket *socket, char *buffer, int size)
|
||||
socket->m_error = GSOCK_IOERR;
|
||||
}
|
||||
|
||||
#ifdef __DARWIN__
|
||||
/* Reenable INPUT events */
|
||||
/* Enable events again now that we are done processing */
|
||||
_GSocket_Enable(socket, GSOCK_INPUT);
|
||||
#endif
|
||||
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user