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:
Robert Roebling 2004-04-20 18:54:39 +00:00
parent 5614d24d40
commit 4056c8fe0c
2 changed files with 17 additions and 62 deletions

View File

@ -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

View File

@ -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;
/* 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,10 +829,8 @@ 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;
}