- Timestamp:
- May 27, 2007, 12:37:44 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/libc-0.6/src/emx/src/lib/sys/tcpipver.c
r2439 r3372 62 62 #define INCL_BASE 63 63 #define INCL_FSMACROS 64 #define INCL_EXAPIS 64 65 #include <os2emx.h> 65 66 #include <InnoTekLIBC/sharedpm.h> … … 171 172 172 173 static void TCPNAME(Cleanup)(void); 173 static int tcpipForkChild1(__LIBC_PFORKHANDLE pForkHandle, __LIBC_FORKOP enmOperation);174 174 175 175 … … 210 210 static int TCPNAME(ops_Close)(PLIBCFH pFH, int fh) 211 211 { 212 LIBCLOG_ENTER("pFH=%p:{ iSocket=%d} fh=%d\n", (void *)pFH, ((PLIBCSOCKETFH)pFH)->iSocket, fh);212 LIBCLOG_ENTER("pFH=%p:{.iSocket=%d} fh=%d\n", (void *)pFH, ((PLIBCSOCKETFH)pFH)->iSocket, fh); 213 213 PLIBCSOCKETFH pSocketFH = (PLIBCSOCKETFH)pFH; 214 214 int rc; … … 235 235 __libc_spmSocketRef(pSocketFH->iSocket); 236 236 } 237 /** @todo deal with EALREADY, it will leave an unclosed and soon to be invalid handle behind... */ 237 238 } 238 239 } … … 249 250 * Please note that removesocketfromlist returns a boolean success indicator and proably no errno. 250 251 */ 252 int iSavedTcpipErrno = TCPNAME(imp_sock_errno)(); 253 TCPNAME(imp_set_errno)(0); 251 254 rc = TCPNAME(imp_removesocketfromlist)(pSocketFH->iSocket); 252 255 if (!rc) … … 255 258 rc = -EBADF; /* this is an internal error, it should *NOT* happen! */ 256 259 } 260 else 261 rc = 0; 262 TCPNAME(imp_set_errno)(iSavedTcpipErrno); 257 263 } 258 264 259 265 /* 260 * Unlink from our list .266 * Unlink from our list (rc list must correspond to __libc_FHClose!). 261 267 */ 262 if (rc != -EBADF && rc != -ENOTSOCK && rc != -EALREADY) 263 { 268 if ( !rc 269 || rc == -EBADF 270 || rc == -ENOTSOCK) 271 { 272 LIBCLOG_MSG("Unlinking pSocketFH=%p:{iSocket=%d} fh=%d\n", pSocketFH, pSocketFH->iSocket, fh); 264 273 _smutex_request(&gsmtxSockets); 265 274 if (pSocketFH->pNext) … … 289 298 static int TCPNAME(ops_Read)(PLIBCFH pFH, int fh, void *pvBuf, size_t cbRead, size_t *pcbRead) 290 299 { 291 LIBCLOG_ENTER("pFH=%p:{ iSocket=%d} fh=%d pvBuf=%p cbRead=%d pcbRead=%p\n",300 LIBCLOG_ENTER("pFH=%p:{.iSocket=%d} fh=%d pvBuf=%p cbRead=%d pcbRead=%p\n", 292 301 (void *)pFH, ((PLIBCSOCKETFH)pFH)->iSocket, fh, pvBuf, cbRead, (void *)pcbRead); 293 302 PLIBCSOCKETFH pSocketFH = (PLIBCSOCKETFH)pFH; … … 321 330 static int TCPNAME(ops_Write)(PLIBCFH pFH, int fh, const void *pvBuf, size_t cbWrite, size_t *pcbWritten) 322 331 { 323 LIBCLOG_ENTER("pFH=%p:{ iSocket=%d} fh=%d pvBuf=%p cbWrite=%d pcbWritten=%p\n",332 LIBCLOG_ENTER("pFH=%p:{.iSocket=%d} fh=%d pvBuf=%p cbWrite=%d pcbWritten=%p\n", 324 333 (void *)pFH, ((PLIBCSOCKETFH)pFH)->iSocket, fh, pvBuf, cbWrite, (void *)pcbWritten); 325 334 PLIBCSOCKETFH pSocketFH = (PLIBCSOCKETFH)pFH; … … 357 366 { 358 367 PLIBCSOCKETFH pFHSocket = (PLIBCSOCKETFH)pFH; 359 LIBCLOG_ENTER("pFH=%p:{ iSocket=%d} fh=%d pfhNew=%p\n", (void *)pFH, pFHSocket->iSocket, fh, (void *)pfhNew);368 LIBCLOG_ENTER("pFH=%p:{.iSocket=%d} fh=%d pfhNew=%p\n", (void *)pFH, pFHSocket->iSocket, fh, (void *)pfhNew); 360 369 361 370 /* … … 391 400 static int TCPNAME(ops_FileControl)(PLIBCFH pFH, int fh, int iRequest, int iArg, int *prc) 392 401 { 393 LIBCLOG_ENTER("pFH=%p:{ iSocket=%d} fh=%d iRequest=%#x iArg=%#x prc=%p\n",402 LIBCLOG_ENTER("pFH=%p:{.iSocket=%d} fh=%d iRequest=%#x iArg=%#x prc=%p\n", 394 403 (void *)pFH, ((PLIBCSOCKETFH)pFH)->iSocket, fh, iRequest, iArg, (void *)prc); 395 404 int rc; … … 423 432 { 424 433 rc = __libc_Back_ioFileControlStandard(pFH, fh, iRequest, iArg, prc); 425 if (rc) 434 if (rc) 426 435 { 427 436 /* undo change on failure. */ … … 461 470 static int TCPNAME(ops_IOControl)(PLIBCFH pFH, int fh, int iIOControl, int iArg, int *prc) 462 471 { 463 LIBCLOG_ENTER("pFH=%p:{ iSocket=%d} fh=%d iIOControl=%#x iArg=%#x prc=%p\n",472 LIBCLOG_ENTER("pFH=%p:{.iSocket=%d} fh=%d iIOControl=%#x iArg=%#x prc=%p\n", 464 473 (void *)pFH, ((PLIBCSOCKETFH)pFH)->iSocket, fh, iIOControl, iArg, (void *)prc); 465 474 PLIBCSOCKETFH pSocketFH = (PLIBCSOCKETFH)pFH; … … 796 805 static int TCPNAME(ops_ForkChild)(struct __libc_FileHandle *pFH, int fh, __LIBC_PFORKHANDLE pForkHandle, __LIBC_FORKOP enmOperation) 797 806 { 798 LIBCLOG_ENTER("pFH=%p:{ iSocket=%d} fh=%d\n", (void *)pFH, ((PLIBCSOCKETFH)pFH)->iSocket, fh);807 LIBCLOG_ENTER("pFH=%p:{.iSocket=%d} fh=%d\n", (void *)pFH, ((PLIBCSOCKETFH)pFH)->iSocket, fh); 799 808 PLIBCSOCKETFH pSocketFH = (PLIBCSOCKETFH)pFH; 800 809 int rc = __libc_spmSocketRef(pSocketFH->iSocket); … … 847 856 * list for the current process. 848 857 * If clear we only increment the global reference counter. 849 * @param pfh Where to store the file name.858 * @param pfh Where to store the file handle. 850 859 * @param ppFHSocket Where to store the allocated socket handle. Optional. 851 860 */ 852 861 int TCPNAMEG(AllocFHEx)(int fh, int iSocket, unsigned fFlags, int fNew, int *pfh, PLIBCSOCKETFH *ppFHSocket) 853 862 { 854 LIBCLOG_ENTER(" iSocket=%d\n", iSocket);863 LIBCLOG_ENTER("fh=%d iSocket=%d fFlags=%#x fNew=%d pfh=%p:{%d} ppFHSocket=%p\n", fh, iSocket, fFlags, fNew, (void *)pfh, pfh ? *pfh : -2, (void *)ppFHSocket); 855 864 PLIBCFH pFHLibc; 856 865 int rc = __libc_FHAllocate(fh, fFlags, sizeof(LIBCSOCKETFH), &gSocketOps, &pFHLibc, pfh); … … 860 869 * Init the handle. 861 870 */ 862 PLIBCSOCKETFH 871 PLIBCSOCKETFH pFH = (PLIBCSOCKETFH)pFHLibc; 863 872 pFH->iSocket = iSocket; 864 873 … … 892 901 if (ppFHSocket) 893 902 *ppFHSocket = pFH; 894 LIBCLOG_RETURN_ INT(0);903 LIBCLOG_RETURN_MSG(0, "ret 0 *pfh=%d *ppFHSocket=%p\n", pfh ? *pfh : -2, pFH); 895 904 } 896 905 LIBCLOG_ERROR_RETURN_P(rc); … … 1198 1207 HMODULE hmod; 1199 1208 char szErr[16]; 1200 rc = DosLoadModule ((PSZ)szErr, sizeof(szErr), (PCSZ)gszDllName, &hmod);1209 rc = DosLoadModuleEx((PSZ)szErr, sizeof(szErr), (PCSZ)gszDllName, &hmod); 1201 1210 if (rc) 1202 1211 { … … 1374 1383 * Please note that removesocketfromlist is returning a boolean success indicator and probably no errno. 1375 1384 */ 1385 TCPNAME(imp_set_errno)(0); 1376 1386 rc = TCPNAME(imp_removesocketfromlist)(pFH->iSocket); 1377 1387 LIBC_ASSERTM(rc == 1, "removesocketfromlist(%d) -> rc=%d sock_errno()->%d\n", pFH->iSocket, rc, TCPNAME(imp_sock_errno)()); … … 1384 1394 } 1385 1395 1386 1387 #undef __LIBC_LOG_GROUP1388 #define __LIBC_LOG_GROUP __LIBC_LOG_GRP_FORK1389 1390 _FORK_CHILD1(0xffffff00, tcpipForkChild1)1391 1392 /**1393 * Reload the DLL in the child process.1394 *1395 * @returns 0 on success.1396 * @returns negative errno on failure.1397 * @param pForkHandle Pointer to fork handle.1398 * @param enmOperation Callback operation.1399 */1400 static int tcpipForkChild1(__LIBC_PFORKHANDLE pForkHandle, __LIBC_FORKOP enmOperation)1401 {1402 LIBCLOG_ENTER("pForkHandle=%p enmOperation=%d\n", (void *)pForkHandle, enmOperation);1403 int rc;1404 switch (enmOperation)1405 {1406 case __LIBC_FORK_OP_FORK_CHILD:1407 {1408 rc = 0;1409 if (ghmod)1410 rc = __libc_tcpipForkLoadModule(ghmod, gszDllName);1411 break;1412 }1413 1414 default:1415 rc = 0;1416 break;1417 }1418 1419 LIBCLOG_RETURN_INT(rc);1420 }1421 1422
Note:
See TracChangeset
for help on using the changeset viewer.