fixed bugs in nwio connect timeout for os2
added pid and tid into PROCINFO for os2 awk
This commit is contained in:
parent
3021fd0a82
commit
be69e7b40c
@ -40,7 +40,9 @@
|
|||||||
# include <windows.h>
|
# include <windows.h>
|
||||||
# include <tchar.h>
|
# include <tchar.h>
|
||||||
#elif defined(__OS2__)
|
#elif defined(__OS2__)
|
||||||
/* anything ? */
|
# define INCL_DOSPROCESS
|
||||||
|
# define INCL_DOSERRORS
|
||||||
|
# include <os2.h>
|
||||||
#elif defined(__DOS__)
|
#elif defined(__DOS__)
|
||||||
/* anything ? */
|
/* anything ? */
|
||||||
#else
|
#else
|
||||||
@ -1639,6 +1641,11 @@ static int build_procinfo (qse_awk_rtx_t* rtx, int gbl_id)
|
|||||||
qse_awk_val_t* v_tmp;
|
qse_awk_val_t* v_tmp;
|
||||||
qse_size_t i;
|
qse_size_t i;
|
||||||
|
|
||||||
|
#if defined(__OS2__)
|
||||||
|
PTIB tib;
|
||||||
|
PPIB pib;
|
||||||
|
#endif
|
||||||
|
|
||||||
static qse_cstr_t names[] =
|
static qse_cstr_t names[] =
|
||||||
{
|
{
|
||||||
{ QSE_T("pid"), 3 },
|
{ QSE_T("pid"), 3 },
|
||||||
@ -1662,6 +1669,14 @@ static int build_procinfo (qse_awk_rtx_t* rtx, int gbl_id)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(__OS2__)
|
||||||
|
if (DosGetInfoBlocks (&tib, &pib) != NO_ERROR)
|
||||||
|
{
|
||||||
|
tib = QSE_NULL;
|
||||||
|
pib = QSE_NULL;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
for (i = 0; i < QSE_COUNTOF(names); i++)
|
for (i = 0; i < QSE_COUNTOF(names); i++)
|
||||||
{
|
{
|
||||||
qse_long_t val = -99931; /* -99931 randomly chosen */
|
qse_long_t val = -99931; /* -99931 randomly chosen */
|
||||||
@ -1673,7 +1688,11 @@ static int build_procinfo (qse_awk_rtx_t* rtx, int gbl_id)
|
|||||||
case 7: val = GetCurrentThreadId(); break;
|
case 7: val = GetCurrentThreadId(); break;
|
||||||
}
|
}
|
||||||
#elif defined(__OS2__)
|
#elif defined(__OS2__)
|
||||||
/* TODO: */
|
switch (i)
|
||||||
|
{
|
||||||
|
case 0: if (pib) val = pib->pib_ulpid; break;
|
||||||
|
case 7: if (tib && tib->tib_ptib2) val = tib->tib_ptib2->tib2_ultid; break;
|
||||||
|
}
|
||||||
#elif defined(__DOS__)
|
#elif defined(__DOS__)
|
||||||
/* TODO: */
|
/* TODO: */
|
||||||
#else
|
#else
|
||||||
|
@ -30,6 +30,8 @@
|
|||||||
# include <types.h>
|
# include <types.h>
|
||||||
# include <sys/socket.h>
|
# include <sys/socket.h>
|
||||||
# include <netinet/in.h>
|
# include <netinet/in.h>
|
||||||
|
# include <tcpustd.h>
|
||||||
|
# include <sys/ioctl.h>
|
||||||
# include <nerrno.h>
|
# include <nerrno.h>
|
||||||
# pragma library("tcpip32.lib")
|
# pragma library("tcpip32.lib")
|
||||||
#elif defined(__DOS__)
|
#elif defined(__DOS__)
|
||||||
@ -282,7 +284,7 @@ static int wait_for_data (qse_nwio_t* nwio, int tmout, int what)
|
|||||||
|
|
||||||
count[what]++;
|
count[what]++;
|
||||||
|
|
||||||
xret = select (&nwio->handle, count[0], count[1], 0, tmout);
|
xret = os2_select (&nwio->handle, count[0], count[1], 0, tmout);
|
||||||
if (xret <= -1)
|
if (xret <= -1)
|
||||||
{
|
{
|
||||||
nwio->errnum = syserr_to_errnum (sock_errno());
|
nwio->errnum = syserr_to_errnum (sock_errno());
|
||||||
@ -586,7 +588,7 @@ int qse_nwio_init (
|
|||||||
{
|
{
|
||||||
int noblk = 0;
|
int noblk = 0;
|
||||||
|
|
||||||
if ((xret <= -1 && sock_errno() != SOCEWOULDBLOCK) ||
|
if ((xret <= -1 && sock_errno() != SOCEINPROGRESS) ||
|
||||||
ioctl (nwio->handle, FIONBIO, &noblk, QSE_SIZEOF(noblk)) <= -1)
|
ioctl (nwio->handle, FIONBIO, &noblk, QSE_SIZEOF(noblk)) <= -1)
|
||||||
{
|
{
|
||||||
nwio->errnum = syserr_to_errnum (sock_errno());
|
nwio->errnum = syserr_to_errnum (sock_errno());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user