Changeset 1207 for trunk/src/crtdll/crtdll.cpp
- Timestamp:
- Oct 9, 1999, 11:39:13 AM (26 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/crtdll/crtdll.cpp
r1160 r1207 1 /* $Id: crtdll.cpp,v 1. 8 1999-10-07 09:28:48sandervl Exp $ */1 /* $Id: crtdll.cpp,v 1.9 1999-10-09 09:39:12 sandervl Exp $ */ 2 2 3 3 /* … … 6 6 * Implements C run-time functionality as known from UNIX. 7 7 * 8 * Partialy based on Wine and ReactOS 9 * 8 10 * Copyright 1996,1998 Marcus Meissner 9 11 * Copyright 1996 Jukka Iivonen … … 11 13 * Copyright 1999 Jens Wiessner 12 14 */ 13 14 15 15 16 #include <os2win.h> … … 41 42 #include <fcntl.h> 42 43 #include <search.h> 44 #include <heap.h> 43 45 #include <sys\utime.h> 44 46 #include <sys\stat.h> … … 46 48 #include <crtdll.h> 47 49 #include "crtinc.h" 48 49 50 50 51 DEFAULT_DEBUG_CHANNEL(crtdll) … … 360 361 * __doserrno (CRTDLL.26) 361 362 */ 362 long* CDECL CRTDLL___doserrno()363 int * CDECL CRTDLL___doserrno() 363 364 { 364 dprintf(("__doserrno not implemented.\n")); 365 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 366 return FALSE; 367 // return _doserrno(); 365 dprintf(("__doserrno\n")); 366 _doserrno = GetLastError(); 367 return &_doserrno; 368 368 } 369 369 … … 385 385 int CDECL CRTDLL___isascii(int i) 386 386 { 387 dprintf(("CRTDLL: __isascii not implemented.\n")); 388 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 389 return FALSE; 387 dprintf(("CRTDLL: __isascii\n")); 388 return (!((i)&(~0x7f))); 390 389 } 391 390 … … 394 393 * CRTDLL___iscsym (CRTDLL.29) 395 394 */ 396 int CDECL CRTDLL___iscsym(int i) 397 { 398 dprintf(("CRTDLL: __iscsym not implemented.\n")); 399 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 400 return FALSE; 395 int CDECL CRTDLL___iscsym(int c) 396 { 397 dprintf(("CRTDLL: __iscsym\n")); 398 return (CRTDLL_isalnum(c) || ( c == '_' )) ; 401 399 } 402 400 … … 405 403 * CRTDLL___iscsymf (CRTDLL.30) 406 404 */ 407 int CDECL CRTDLL___iscsymf(int i) 408 { 409 dprintf(("CRTDLL: __iscsymf not implemented.\n")); 410 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 411 return FALSE; 405 int CDECL CRTDLL___iscsymf(int c) 406 { 407 dprintf(("CRTDLL: __iscsymf\n")); 408 return (isalpha(c) || ( c == '_' )) ; 412 409 } 413 410 … … 429 426 unsigned long CDECL CRTDLL___threadhandle( void ) 430 427 { 431 dprintf(("CRTDLL: __threadhandle not implemented.\n")); 432 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 433 return FALSE; 428 dprintf(("CRTDLL: __threadhandle\n")); 429 return GetCurrentThread(); 434 430 } 435 431 … … 438 434 * CRTDLL___threadid (CRTDLL.34) 439 435 */ 440 int * CDECL CRTDLL___threadid(void) 441 { 442 dprintf(("CRTDLL: __threadid not implemented.\n")); 443 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 444 return FALSE; 436 unsigned long CDECL CRTDLL___threadid(void) 437 { 438 dprintf(("CRTDLL: __threadid\n")); 439 return GetCurrentThreadId(); 445 440 } 446 441 … … 511 506 * CRTDLL__beep (CRTDLL.45) 512 507 */ 513 void CDECL CRTDLL__beep(unsigned i1, unsigned i2)508 void CDECL CRTDLL__beep(unsigned nFreq, unsigned nDur) 514 509 { 515 dprintf(("_beep not implemented.\n")); 510 dprintf(("_beep\n")); 511 Beep(nFreq,nDur); 516 512 } 517 513 … … 520 516 * CRTDLL__beginthread (CRTDLL.46) 521 517 */ 522 unsigned long CDECL CRTDLL__beginthread( register void (*start_address)(void *), 523 unsigned stack_size, void *arglist ) 524 { 525 dprintf(("CRTDLL: _beginthread not implemented.\n")); 526 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 527 return FALSE; 518 unsigned long CDECL CRTDLL__beginthread(void (*pfuncStart)(void *), 519 unsigned unStackSize, void* pArgList) 520 { 521 DWORD ThreadId; 522 HANDLE hThread; 523 if ( pfuncStart == NULL ) 524 __set_errno(EINVAL); 525 526 hThread = CreateThread( NULL,unStackSize,(LPTHREAD_START_ROUTINE)pfuncStart,pArgList,0, &ThreadId); 527 if (hThread == NULL ) { 528 __set_errno(EAGAIN); 529 return -1; 530 } 531 return (unsigned long)hThread; 528 532 } 529 533 … … 543 547 * CRTDLL__cabs (CRTDLL.48) 544 548 */ 545 double CDECL CRTDLL__cabs(struct complex * c) 546 { 547 dprintf(("CRTDLL: _cabs not implemented.\n")); 548 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 549 return FALSE; 550 // return (_cabs(c)); 549 double CDECL CRTDLL__cabs(struct complex * z) 550 { 551 dprintf(("CRTDLL: _cabs not implemented\n")); 552 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 553 return FALSE; 551 554 } 552 555 … … 554 557 /********************************************************************* 555 558 * _cexit (CRTDLL.49) 556 *557 559 */ 558 560 void CDECL CRTDLL__cexit(INT ret) … … 656 658 { 657 659 dprintf(("CRTDLL: _commit not implemented.\n")); 658 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 659 return FALSE; 660 // if (! FlushFileBuffers(_get_osfhandle(_fd)) ) { 661 // __set_errno(EBADF); 662 // return -1; 663 // } 664 return 0; 660 665 } 661 666 … … 995 1000 wint_t CDECL CRTDLL__fgetwchar( void *i ) 996 1001 { 997 dprintf(("CRTDLL: _fgetwchar not implemented.\n")); 998 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 999 return FALSE; 1002 dprintf(("CRTDLL: _fgetwchar\n")); 1003 return CRTDLL__getch(); 1000 1004 } 1001 1005 … … 1037 1041 int CDECL CRTDLL__findclose( long handle ) 1038 1042 { 1039 dprintf(("CRTDLL: _findclose not implemented.\n")); 1040 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 1041 return FALSE; 1043 dprintf(("CRTDLL: _findclose\n")); 1044 // check no wildcards or invalid handle 1045 if ( handle == 0 || handle == -1) 1046 return 0; 1047 return FindClose(handle); 1042 1048 } 1043 1049 … … 1115 1121 dprintf(("CRTDLL: _fpieee_flt not implemented.\n")); 1116 1122 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 1117 return FALSE;1123 return 0; 1118 1124 } 1119 1125 … … 1155 1161 * _fsopen (CRTDLL.110) 1156 1162 */ 1157 FILE * CDECL CRTDLL__fsopen( const char *file name, const char *mode, int shflag )1163 FILE * CDECL CRTDLL__fsopen( const char *file, const char *mode, int shflag ) 1158 1164 { 1159 1165 dprintf(("CRTDLL: _fsopen not implemented.\n")); … … 1221 1227 long CDECL CRTDLL__get_osfhandle( int posixhandle ) 1222 1228 { 1223 dprintf(("CRTDLL: _g cvtnot implemented.\n"));1229 dprintf(("CRTDLL: _get_osfhandle not implemented.\n")); 1224 1230 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 1225 1231 return FALSE; … … 1270 1276 * _getdiskfree (CRTDLL.122) 1271 1277 */ 1272 unsigned CDECL CRTDLL__getdiskfree( unsigned drive, struct _diskfree_t *diskspace) 1273 { 1274 dprintf(("CRTDLL: _getdiskfree not implemented.\n")); 1275 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 1276 return FALSE; 1278 unsigned int CDECL CRTDLL__getdiskfree( unsigned int drive, struct _diskfree_t *diskspace) 1279 { 1280 dprintf(("CRTDLL: _getdiskfree\n")); 1281 char RootPathName[10]; 1282 RootPathName[0] = toupper(drive +'@'); 1283 RootPathName[1] = ':'; 1284 RootPathName[2] = '\\'; 1285 RootPathName[3] = 0; 1286 if ( diskspace == NULL ) 1287 return 0; 1288 1289 if ( !GetDiskFreeSpaceA(RootPathName,(LPDWORD)&diskspace->sectors_per_cluster,(LPDWORD)&diskspace->bytes_per_sector, 1290 (LPDWORD )&diskspace->avail_clusters,(LPDWORD )&diskspace->total_clusters ) ) 1291 return 0; 1292 return diskspace->avail_clusters; 1277 1293 } 1278 1294 … … 1307 1323 unsigned long CDECL CRTDLL__getdrives(void) 1308 1324 { 1309 dprintf(("CRTDLL: _getdrives not implemented.\n")); 1310 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 1311 return FALSE; 1325 dprintf(("CRTDLL: _getdrives\n")); 1326 return GetLogicalDrives(); 1312 1327 } 1313 1328 … … 1337 1352 * _getw (CRTDLL.128) 1338 1353 */ 1339 int CDECL CRTDLL__getw( FILE *fp ) 1340 { 1341 dprintf(("CRTDLL: _getw not implemented.\n")); 1342 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 1343 return FALSE; 1354 int CDECL CRTDLL__getw( FILE *stream ) 1355 { 1356 dprintf(("CRTDLL: _getw\n")); 1357 int w; 1358 1359 /* Is there a better way? */ 1360 if (CRTDLL_fread( &w, sizeof(w), 1, stream) != 1) 1361 return(EOF); 1362 return(w); 1344 1363 } 1345 1364 … … 1461 1480 * _ismbbalnum (CRTDLL.139) 1462 1481 */ 1463 int CDECL CRTDLL__ismbbalnum( unsigned int ch ) 1464 { 1465 dprintf(("CRTDLL: _ismbbalnum not implemented.\n")); 1466 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 1467 return FALSE; 1482 int CDECL CRTDLL__ismbbalnum( unsigned int c ) 1483 { 1484 dprintf(("CRTDLL: _ismbbalnum\n")); 1485 return (CRTDLL_isalnum(c) || CRTDLL__ismbbkalnum(c)); 1468 1486 } 1469 1487 … … 1472 1490 * _ismbbalpha (CRTDLL.140) 1473 1491 */ 1474 int CDECL CRTDLL__ismbbalpha( unsigned int ch ) 1475 { 1476 dprintf(("CRTDLL: _ismbbalpha not implemented.\n")); 1477 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 1478 return FALSE; 1492 int CDECL CRTDLL__ismbbalpha( unsigned int c ) 1493 { 1494 dprintf(("CRTDLL: _ismbbalpha\n")); 1495 return (isalpha(c) || CRTDLL__ismbbkalnum(c)); 1479 1496 } 1480 1497 … … 1483 1500 * _ismbbgraph (CRTDLL.141) 1484 1501 */ 1485 int CDECL CRTDLL__ismbbgraph( unsigned int ch ) 1486 { 1487 dprintf(("CRTDLL: _ismbbgraph not implemented.\n")); 1488 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 1489 return FALSE; 1502 int CDECL CRTDLL__ismbbgraph( unsigned int c ) 1503 { 1504 dprintf(("CRTDLL: _ismbbgraph\n")); 1505 return (CRTDLL_isgraph(c) || CRTDLL__ismbbkana(c)); 1490 1506 } 1491 1507 … … 1494 1510 * _ismbbkalnum (CRTDLL.142) 1495 1511 */ 1496 int CDECL CRTDLL__ismbbkalnum( unsigned int ch ) 1497 { 1498 dprintf(("CRTDLL: _ismbbkalnum not implemented.\n")); 1499 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 1500 return FALSE; 1512 int CDECL CRTDLL__ismbbkalnum( unsigned int c ) 1513 { 1514 dprintf(("CRTDLL: _ismbbkalnum\n")); 1515 return ((_jctype+1)[(unsigned char)(c)] & (_KNJ_P)); 1501 1516 } 1502 1517 … … 1505 1520 * _ismbbkana (CRTDLL.143) 1506 1521 */ 1507 int CDECL CRTDLL__ismbbkana( unsigned int ch ) 1508 { 1509 dprintf(("CRTDLL: _ismbbkana not implemented.\n")); 1510 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 1511 return FALSE; 1522 int CDECL CRTDLL__ismbbkana( unsigned int c ) 1523 { 1524 dprintf(("CRTDLL: _ismbbkana\n")); 1525 return ((_jctype+1)[(unsigned char)(c)] & (_KNJ_M|_KNJ_P)); 1512 1526 } 1513 1527 … … 1516 1530 * _ismbbkpunct (CRTDLL.144) 1517 1531 */ 1518 int CDECL CRTDLL__ismbbkpunct( unsigned int ch ) 1519 { 1520 dprintf(("CRTDLL: _ismbbkpunct not implemented.\n")); 1521 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 1522 return FALSE; 1532 int CDECL CRTDLL__ismbbkpunct( unsigned int c ) 1533 { 1534 dprintf(("CRTDLL: _ismbbkpunct\n")); 1535 return ((_jctype+1)[(unsigned char)(c)] & (_KNJ_P)); 1523 1536 } 1524 1537 … … 1527 1540 * _ismbblead (CRTDLL.145) 1528 1541 */ 1529 int CDECL CRTDLL__ismbblead( unsigned int ch ) 1530 { 1531 dprintf(("CRTDLL: _ismbblead not implemented.\n")); 1532 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 1533 return FALSE; 1542 int CDECL CRTDLL__ismbblead( unsigned int c ) 1543 { 1544 dprintf(("CRTDLL: _ismbblead\n")); 1545 return ((_jctype+1)[(unsigned char)(c)] & _KNJ_1); 1534 1546 } 1535 1547 … … 1538 1550 * _ismbbprint (CRTDLL.146) 1539 1551 */ 1540 int CDECL CRTDLL__ismbbprint( unsigned int ch ) 1541 { 1542 dprintf(("CRTDLL: _ismbbprint not implemented.\n")); 1543 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 1544 return FALSE; 1552 int CDECL CRTDLL__ismbbprint( unsigned int c ) 1553 { 1554 dprintf(("CRTDLL: _ismbbprint\n")); 1555 return (isprint(c) || CRTDLL__ismbbkana(c)); 1545 1556 } 1546 1557 … … 1549 1560 * _ismbbpunct (CRTDLL.147) 1550 1561 */ 1551 int CDECL CRTDLL__ismbbpunct( unsigned int ch ) 1552 { 1553 dprintf(("CRTDLL: _ismbbpunct not implemented.\n")); 1554 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 1555 return FALSE; 1562 int CDECL CRTDLL__ismbbpunct( unsigned int c ) 1563 { 1564 dprintf(("CRTDLL: _ismbbpunct\n")); 1565 return (ispunct(c) || CRTDLL__ismbbkana(c)); 1556 1566 } 1557 1567 … … 1560 1570 * _ismbbtrail (CRTDLL.148) 1561 1571 */ 1562 int CDECL CRTDLL__ismbbtrail( unsigned int ch ) 1563 { 1564 dprintf(("CRTDLL: _ismbbtrail not implemented.\n")); 1565 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 1566 return FALSE; 1572 int CDECL CRTDLL__ismbbtrail( unsigned int c ) 1573 { 1574 dprintf(("CRTDLL: _ismbbtrail\n")); 1575 return ((_jctype+1)[(unsigned char)(c)] & _KNJ_2); 1567 1576 } 1568 1577 … … 1571 1580 * _ismbcalpha (CRTDLL.149) 1572 1581 */ 1573 int CDECL CRTDLL__ismbcalpha( unsigned int ch ) 1574 { 1575 dprintf(("CRTDLL: _ismbcalpha not implemented.\n")); 1576 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 1577 return FALSE; 1582 int CDECL CRTDLL__ismbcalpha( unsigned int c ) 1583 { 1584 dprintf(("CRTDLL: _ismbcalpha\n")); 1585 if ((c & 0xFF00) != 0) { 1586 // true multibyte character 1587 return 0; 1588 } 1589 else 1590 return CRTDLL__ismbbalpha(c); 1591 1592 return 0; 1578 1593 } 1579 1594 … … 1582 1597 * _ismbcdigit (CRTDLL.150) 1583 1598 */ 1584 int CDECL CRTDLL__ismbcdigit( unsigned int ch ) 1585 { 1586 dprintf(("CRTDLL: _ismbcdigit not implemented.\n")); 1587 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 1588 return FALSE; 1599 int CDECL CRTDLL__ismbcdigit( unsigned int c ) 1600 { 1601 dprintf(("CRTDLL: _ismbcdigit\n")); 1602 if ((c & 0xFF00) != 0) { 1603 // true multibyte character 1604 return 0; 1605 } 1606 else 1607 return 0; 1608 // return _ismbbdigit(c); 1609 1610 return 0; 1589 1611 } 1590 1612 … … 1593 1615 * _ismbchira (CRTDLL.151) 1594 1616 */ 1595 int CDECL CRTDLL__ismbchira( unsigned int ch ) 1596 { 1597 dprintf(("CRTDLL: _ismbchira not implemented.\n")); 1598 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 1599 return FALSE; 1617 int CDECL CRTDLL__ismbchira( unsigned int c ) 1618 { 1619 dprintf(("CRTDLL: _ismbchira\n")); 1620 return ((c>=0x829F) && (c<=0x82F1)); 1600 1621 } 1601 1622 … … 1604 1625 * _ismbckata (CRTDLL.152) 1605 1626 */ 1606 int CDECL CRTDLL__ismbckata( unsigned int ch ) 1607 { 1608 dprintf(("CRTDLL: _ismbckata not implemented.\n")); 1609 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 1610 return FALSE; 1627 int CDECL CRTDLL__ismbckata( unsigned int c ) 1628 { 1629 dprintf(("CRTDLL: _ismbckata\n")); 1630 return ((c>=0x8340) && (c<=0x8396)); 1611 1631 } 1612 1632 … … 1618 1638 dprintf(("CRTDLL: _ismbcl0 not implemented.\n")); 1619 1639 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 1620 return FALSE;1640 return 0; 1621 1641 } 1622 1642 … … 1629 1649 dprintf(("CRTDLL: _ismbcl1 not implemented.\n")); 1630 1650 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 1631 return FALSE;1651 return 0; 1632 1652 } 1633 1653 … … 1640 1660 dprintf(("CRTDLL: _ismbcl2 not implemented.\n")); 1641 1661 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 1642 return FALSE;1662 return 0; 1643 1663 } 1644 1664 … … 1647 1667 * _ismbclegal (CRTDLL.156) 1648 1668 */ 1649 int CDECL CRTDLL__ismbclegal( unsigned int ch ) 1650 { 1651 dprintf(("CRTDLL: _ismbclegal not implemented.\n")); 1652 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 1653 return FALSE; 1669 int CDECL CRTDLL__ismbclegal( unsigned int c ) 1670 { 1671 dprintf(("CRTDLL: _ismbclegal\n")); 1672 if ((c & 0xFF00) != 0) { 1673 return CRTDLL__ismbblead(c>>8) && CRTDLL__ismbbtrail(c&0xFF); 1674 } 1675 else 1676 return CRTDLL__ismbbtrail(c&0xFF); 1677 1678 return 0; 1654 1679 } 1655 1680 … … 1658 1683 * _ismbclower (CRTDLL.157) 1659 1684 */ 1660 int CDECL CRTDLL__ismbclower( unsigned int ch ) 1661 { 1662 dprintf(("CRTDLL: _ismbclower not implemented.\n")); 1663 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 1664 return FALSE; 1685 int CDECL CRTDLL__ismbclower( unsigned int c ) 1686 { 1687 dprintf(("CRTDLL: _ismbclower\n")); 1688 if ((c & 0xFF00) != 0) { 1689 if ( c >= 0x829A && c<= 0x829A ) 1690 return 1; 1691 } 1692 else 1693 return isupper(c); 1665 1694 } 1666 1695 … … 1669 1698 * _ismbcprint (CRTDLL.158) 1670 1699 */ 1671 int CDECL CRTDLL__ismbcprint( unsigned int ch ) 1672 { 1673 dprintf(("CRTDLL: _ismbcprint not implemented.\n")); 1674 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 1675 return FALSE; 1700 int CDECL CRTDLL__ismbcprint( unsigned int c ) 1701 { 1702 dprintf(("CRTDLL: _ismbcprint\n")); 1703 if ((c & 0xFF00) != 0) { 1704 // true multibyte character 1705 return 0; 1706 } 1707 else 1708 return 0; 1709 // return _ismbbdigit(c); 1710 1711 return 0; 1676 1712 } 1677 1713 … … 1680 1716 * _ismbcspace (CRTDLL.159) 1681 1717 */ 1682 int CDECL CRTDLL__ismbcspace( unsigned int c h)1718 int CDECL CRTDLL__ismbcspace( unsigned int c ) 1683 1719 { 1684 1720 dprintf(("CRTDLL: _ismbcspace not implemented.\n")); 1685 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 1686 return FALSE; 1721 if ((c & 0xFF00) != 0) { 1722 // true multibyte character 1723 return 0; 1724 } 1725 else 1726 return 0; 1727 // return _ismbbdigit(c); 1728 1729 return 0; 1687 1730 } 1688 1731 … … 1691 1734 * _ismbcsymbol (CRTDLL.160) 1692 1735 */ 1693 int CDECL CRTDLL__ismbcsymbol( unsigned int ch ) 1694 { 1695 dprintf(("CRTDLL: _ismbcsymbol not implemented.\n")); 1696 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 1697 return FALSE; 1736 int CDECL CRTDLL__ismbcsymbol( unsigned int c ) 1737 { 1738 dprintf(("CRTDLL: _ismbcsymbol\n")); 1739 if ((c & 0xFF00) != 0) { 1740 // true multibyte character 1741 return 0; 1742 } 1743 else 1744 return 0; 1745 // return _ismbbdigit(c); 1746 1747 return 0; 1698 1748 } 1699 1749 … … 1702 1752 * _ismbcupper (CRTDLL.161) 1703 1753 */ 1704 int CDECL CRTDLL__ismbcupper( unsigned int ch ) 1705 { 1706 dprintf(("CRTDLL: _ismbcupper not implemented.\n")); 1707 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 1708 return FALSE; 1754 int CDECL CRTDLL__ismbcupper( unsigned int c ) 1755 { 1756 dprintf(("CRTDLL: _ismbcupper\n")); 1757 if ((c & 0xFF00) != 0) { 1758 if ( c >= 0x8260 && c<= 0x8279 ) 1759 return 1; 1760 } 1761 else 1762 return isupper(c); 1709 1763 } 1710 1764 … … 1713 1767 * _ismbslead (CRTDLL.162) 1714 1768 */ 1715 int CDECL CRTDLL__ismbslead(const unsigned char *s1, const unsigned char *s2) 1716 { 1717 dprintf(("CRTDLL: _ismbslead not implemented.\n")); 1718 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 1719 return FALSE; 1769 int CDECL CRTDLL__ismbslead(const unsigned char *str, const unsigned char *t) 1770 { 1771 dprintf(("CRTDLL: _ismbslead\n")); 1772 unsigned char *s = (unsigned char *)str; 1773 while(*s != 0 && s != t) 1774 { 1775 s+= _mbclen2(*s); 1776 } 1777 return CRTDLL__ismbblead( *s); 1720 1778 } 1721 1779 … … 1724 1782 * _ismbstrail (CRTDLL.163) 1725 1783 */ 1726 int CDECL CRTDLL__ismbstrail(const unsigned char *s1, const unsigned char *s2) 1727 { 1728 dprintf(("CRTDLL: _ismbstrail not implemented.\n")); 1729 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 1730 return FALSE; 1784 int CDECL CRTDLL__ismbstrail(const unsigned char *str, const unsigned char *t) 1785 { 1786 dprintf(("CRTDLL: _ismbstrail\n")); 1787 unsigned char *s = (unsigned char *)str; 1788 while(*s != 0 && s != t) 1789 { 1790 1791 s+= _mbclen2(*s); 1792 } 1793 1794 return CRTDLL__ismbbtrail(*s); 1731 1795 } 1732 1796 … … 1891 1955 1892 1956 1957 /********************************************************************* 1958 * _matherr (CRTDLL.181) 1959 */ 1893 1960 #if (__IBMCPP__ > 300) 1894 1961 #define exception _exception 1895 1962 #endif 1896 1963 1897 /*********************************************************************1898 * _matherr (CRTDLL.181)1899 */1900 1964 double CDECL CRTDLL__matherr( struct exception * excep ) 1901 1965 { … … 1908 1972 * _mbbtombc (CRTDLL.182) 1909 1973 */ 1910 unsigned int CDECL CRTDLL__mbbtombc( unsigned int c h)1974 unsigned int CDECL CRTDLL__mbbtombc( unsigned int c ) 1911 1975 { 1912 1976 dprintf(("CRTDLL: _mbbtombc\n")); 1913 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 1914 return FALSE; 1977 if (c >= 0x20 && c <= 0x7e) { 1978 return han_to_zen_ascii_table[c - 0x20]; 1979 } else if (ISKANA(c)) { 1980 return han_to_zen_kana_table[c - 0xa0]; 1981 } 1982 return c; 1915 1983 } 1916 1984 … … 1919 1987 * _mbbtype (CRTDLL.183) 1920 1988 */ 1921 int CDECL CRTDLL__mbbtype( unsigned char s, int i ) 1922 { 1923 dprintf(("CRTDLL: _mbbtype not implemented.\n")); 1924 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 1925 return FALSE; 1989 int CDECL CRTDLL__mbbtype( unsigned char c, int type ) 1990 { 1991 dprintf(("CRTDLL: _mbbtype\n")); 1992 if ( type == 1 ) { 1993 if ((c >= 0x40 && c <= 0x7e ) || (c >= 0x80 && c <= 0xfc ) ) 1994 { 1995 return _MBC_TRAIL; 1996 } 1997 else if (( c >= 0x20 && c >= 0x7E ) || ( c >= 0xA1 && c <= 0xDF ) || 1998 ( c >= 0x81 && c <= 0x9F ) || ( c >= 0xE0 && c <= 0xFC ) ) 1999 return _MBC_ILLEGAL; 2000 else 2001 return 0; 2002 2003 } 2004 else { 2005 if (( c >= 0x20 && c <= 0x7E ) || ( c >= 0xA1 && c <= 0xDF )) { 2006 return _MBC_SINGLE; 2007 } 2008 else if ( (c >= 0x81 && c <= 0x9F ) || ( c >= 0xE0 && c <= 0xFC) ) 2009 return _MBC_LEAD; 2010 else if (( c >= 0x20 && c >= 0x7E ) || ( c >= 0xA1 && c <= 0xDF ) || 2011 ( c >= 0x81 && c <= 0x9F ) || ( c >= 0xE0 && c <= 0xFC ) ) 2012 return _MBC_ILLEGAL; 2013 else 2014 return 0; 2015 2016 } 2017 2018 2019 return 0; 1926 2020 } 1927 2021 … … 1930 2024 * _mbccpy (CRTDLL.184) 1931 2025 */ 1932 void CDECL CRTDLL__mbccpy( unsigned char *dest, const unsigned char *ch ) 1933 { 1934 dprintf(("CRTDLL: _mbccpy not implemented.\n")); 1935 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 2026 void CDECL CRTDLL__mbccpy( unsigned char *dst, const unsigned char *src ) 2027 { 2028 dprintf(("CRTDLL: _mbccpy\n")); 2029 2030 if (!CRTDLL__ismbblead(*src) ) 2031 return; 2032 2033 memcpy(dst,src,_mbclen2(*src)); 1936 2034 } 1937 2035 … … 1940 2038 * _mbcjistojms (CRTDLL.185) 1941 2039 */ 1942 int CDECL CRTDLL__mbcjistojms( unsigned int ch ) 1943 { 1944 dprintf(("CRTDLL: _mbcjistojms not implemented.\n")); 1945 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 1946 return FALSE; 2040 int CDECL CRTDLL__mbcjistojms( unsigned int c ) 2041 { 2042 dprintf(("CRTDLL: _mbcjistojms\n")); 2043 int c1, c2; 2044 2045 c2 = (unsigned char)c; 2046 c1 = c >> 8; 2047 if (c1 >= 0x21 && c1 <= 0x7e && c2 >= 0x21 && c2 <= 0x7e) { 2048 if (c1 & 0x01) { 2049 c2 += 0x1f; 2050 if (c2 >= 0x7f) 2051 c2 ++; 2052 } else { 2053 c2 += 0x7e; 2054 } 2055 c1 += 0xe1; 2056 c1 >>= 1; 2057 if (c1 >= 0xa0) 2058 c1 += 0x40; 2059 return ((c1 << 8) | c2); 2060 } 2061 return 0; 1947 2062 } 1948 2063 … … 1951 2066 * _mbcjmstojis (CRTDLL.186) 1952 2067 */ 1953 int CDECL CRTDLL__mbcjmstojis( unsigned int ch ) 1954 { 1955 dprintf(("CRTDLL: _mbcjmstojis not implemented.\n")); 1956 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 1957 return FALSE; 2068 int CDECL CRTDLL__mbcjmstojis( unsigned int c ) 2069 { 2070 dprintf(("CRTDLL: _mbcjmstojis\n")); 2071 int c1, c2; 2072 2073 c2 = (unsigned char)c; 2074 c1 = c >> 8; 2075 if (c1 < 0xf0 && CRTDLL__ismbblead(c1) && CRTDLL__ismbbtrail(c2)) { 2076 if (c1 >= 0xe0) 2077 c1 -= 0x40; 2078 c1 -= 0x70; 2079 c1 <<= 1; 2080 if (c2 < 0x9f) { 2081 c1 --; 2082 c2 -= 0x1f; 2083 if (c2 >= (0x80-0x1f)) 2084 c2 --; 2085 } else { 2086 c2 -= 0x7e; 2087 } 2088 return ((c1 << 8) | c2); 2089 } 2090 return 0; 1958 2091 } 1959 2092 … … 1962 2095 * _mbclen (CRTDLL.187) 1963 2096 */ 1964 size_t CDECL CRTDLL__mbclen( const unsigned char *ch ) 1965 { 1966 dprintf(("CRTDLL: _mbclen not implemented.\n")); 1967 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 1968 return FALSE; 2097 size_t CDECL CRTDLL__mbclen( const unsigned char *s ) 2098 { 2099 dprintf(("CRTDLL: _mbclen\n")); 2100 return (CRTDLL__ismbblead(*s>>8) && CRTDLL__ismbbtrail(*s&0x00FF)) ? 2 : 1; 1969 2101 } 1970 2102 … … 1973 2105 * _mbctohira (CRTDLL.188) 1974 2106 */ 1975 int CDECL CRTDLL__mbctohira( unsigned int ch ) 1976 { 1977 dprintf(("CRTDLL: _mbctohira not implemented.\n")); 1978 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 1979 return FALSE; 2107 int CDECL CRTDLL__mbctohira( unsigned int c ) 2108 { 2109 dprintf(("CRTDLL: _mbctohira\n")); 2110 return c; 1980 2111 } 1981 2112 … … 1984 2115 * _mbctokata (CRTDLL.189) 1985 2116 */ 1986 int CDECL CRTDLL__mbctokata( unsigned int ch ) 1987 { 1988 dprintf(("CRTDLL: _mbctokata not implemented.\n")); 1989 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 1990 return FALSE; 2117 int CDECL CRTDLL__mbctokata( unsigned int c ) 2118 { 2119 dprintf(("CRTDLL: _mbctokata\n")); 2120 return c; 1991 2121 } 1992 2122 … … 1995 2125 * _mbctolower (CRTDLL.190) 1996 2126 */ 1997 unsigned int CDECL CRTDLL__mbctolower( unsigned int ch ) 1998 { 1999 dprintf(("CRTDLL: _mbctolower not implemented.\n")); 2000 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 2001 return FALSE; 2127 unsigned int CDECL CRTDLL__mbctolower( unsigned int c ) 2128 { 2129 dprintf(("CRTDLL: _mbctolower\n")); 2130 if ((c & 0xFF00) != 0) { 2131 // true multibyte case conversion needed 2132 if ( CRTDLL__ismbclower(c) ) 2133 return c + CASE_DIFF; 2134 2135 } else 2136 return _mbbtolower(c); 2137 2138 return 0; 2002 2139 } 2003 2140 … … 2006 2143 * _mbctombb (CRTDLL.191) 2007 2144 */ 2008 unsigned int CDECL CRTDLL__mbctombb( unsigned int ch ) 2009 { 2010 dprintf(("CRTDLL: _mbctombb not implemented.\n")); 2011 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 2012 return FALSE; 2145 unsigned int CDECL CRTDLL__mbctombb( unsigned int c ) 2146 { 2147 dprintf(("CRTDLL: _mbctombb\n")); 2148 int i; 2149 unsigned short *p; 2150 2151 if (JISKANA(c)) { 2152 return zen_to_han_kana_table[c - 0x8340]; 2153 } else if (JISHIRA(c)) { 2154 c = JTOKANA(c); 2155 return zen_to_han_kana_table[c - 0x8340]; 2156 } else if (c <= 0x8396) { 2157 for (i = 0x20, p = han_to_zen_ascii_table; i <= 0x7e; i++, p++) { 2158 if (*p == c) { 2159 return i; 2160 } 2161 } 2162 for (i = 0; i < ZTOH_SYMBOLS; i++) { 2163 if (zen_to_han_symbol_table_1[i] == c) { 2164 return zen_to_han_symbol_table_2[i]; 2165 } 2166 } 2167 } 2168 return c; 2013 2169 } 2014 2170 … … 2017 2173 * _mbctoupper (CRTDLL.192) 2018 2174 */ 2019 unsigned int CDECL CRTDLL__mbctoupper( unsigned int ch ) 2020 { 2021 dprintf(("CRTDLL: _mbctoupper not implemented.\n")); 2022 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 2023 return FALSE; 2175 unsigned int CDECL CRTDLL__mbctoupper( unsigned int c ) 2176 { 2177 dprintf(("CRTDLL: _mbctoupper\n")); 2178 if ((c & 0xFF00) != 0) { 2179 // true multibyte case conversion needed 2180 if ( CRTDLL__ismbcupper(c) ) 2181 return c + CASE_DIFF; 2182 2183 } else 2184 return _mbbtoupper(c); 2185 2186 return 0; 2024 2187 } 2025 2188 … … 2028 2191 * _mbsbtype (CRTDLL.194) 2029 2192 */ 2030 int CDECL CRTDLL__mbsbtype( const unsigned char *s1, int ch ) 2031 { 2032 dprintf(("CRTDLL: _mbsbtype not implemented.\n")); 2033 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 2034 return FALSE; 2193 int CDECL CRTDLL__mbsbtype( const unsigned char *str, int n ) 2194 { 2195 dprintf(("CRTDLL: _mbsbtype\n")); 2196 if ( str == NULL ) 2197 return -1; 2198 return CRTDLL__mbbtype(*(str+n),1); 2035 2199 } 2036 2200 … … 2039 2203 * _mbscat (CRTDLL.195) 2040 2204 */ 2041 unsigned char * CDECL CRTDLL__mbscat( unsigned char * s1, const unsigned char *s2)2042 { 2043 dprintf(("CRTDLL: _mbscat not implemented.\n"));2205 unsigned char * CDECL CRTDLL__mbscat( unsigned char *dst, const unsigned char *src ) 2206 { 2207 dprintf(("CRTDLL: _mbscat not implemented.\n")); 2044 2208 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 2045 2209 return FALSE; … … 2050 2214 * _mbschr (CRTDLL.196) 2051 2215 */ 2052 unsigned char * CDECL CRTDLL__mbschr( const unsigned char *s , unsigned int ch)2216 unsigned char * CDECL CRTDLL__mbschr( const unsigned char *str, unsigned int c ) 2053 2217 { 2054 2218 dprintf(("CRTDLL: _mbschr not implemented.\n")); … … 2083 2247 * _mbscspn (CRTDLL.199) 2084 2248 */ 2085 size_t CDECL CRTDLL__mbscspn( const unsigned char *s , const unsigned char *charset)2249 size_t CDECL CRTDLL__mbscspn( const unsigned char *s1, const unsigned char *s2 ) 2086 2250 { 2087 2251 dprintf(("CRTDLL: _mbscspn not implemented.\n")); … … 2092 2256 2093 2257 /********************************************************************* 2094 * CRTDLL__mbsdec (CRTDLL.200) 2095 */ 2096 unsigned char * CDECL CRTDLL__mbsdec( const unsigned char *s, const unsigned char *ch ) 2097 { 2098 dprintf(("CRTDLL: _mbsdec not implemented.\n")); 2099 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 2100 return FALSE; 2101 } 2102 2103 2104 /********************************************************************* 2105 * CRTDLL__mbsdec (CRTDLL.201) 2258 * _mbsdec (CRTDLL.200) 2259 */ 2260 unsigned char * CDECL CRTDLL__mbsdec( const unsigned char *str, const unsigned char *cur ) 2261 { 2262 dprintf(("CRTDLL: _mbsdec\n")); 2263 unsigned char *s = (unsigned char *)cur; 2264 if ( str >= cur ) 2265 return NULL; 2266 s--; 2267 if (CRTDLL__ismbblead(*(s-1)) ) 2268 s--; 2269 2270 return s; 2271 } 2272 2273 2274 /********************************************************************* 2275 * _mbsdup (CRTDLL.201) 2106 2276 */ 2107 2277 unsigned char * CDECL CRTDLL__mbsdup( unsigned char *src ) … … 2162 2332 2163 2333 /********************************************************************* 2164 * CRTDLL__mbslwr (CRTDLL.205) 2165 */ 2166 unsigned char * CDECL CRTDLL__mbslwr( unsigned char *s ) 2167 { 2168 dprintf(("CRTDLL: _mbslwr not implemented.\n")); 2169 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 2170 return FALSE; 2171 } 2172 2173 2174 /********************************************************************* 2175 * CRTDLL__mbsnbcat (CRTDLL.206) 2176 */ 2177 unsigned char * CDECL CRTDLL__mbsnbcat( unsigned char *s1, const unsigned char *s2, size_t n ) 2178 { 2179 dprintf(("CRTDLL: _mbsnbcat not implemented.\n")); 2180 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 2181 return FALSE; 2182 } 2183 2184 2185 /********************************************************************* 2186 * CRTDLL__mbsnbcmp (CRTDLL.207) 2187 */ 2188 int CDECL CRTDLL__mbsnbcmp( const unsigned char *s1, const unsigned char *s2, size_t n ) 2189 { 2190 dprintf(("CRTDLL: _mbsnbcmp not implemented.\n")); 2191 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 2192 return FALSE; 2193 } 2194 2195 2196 /********************************************************************* 2197 * CRTDLL__mbsnbcnt (CRTDLL.208) 2198 */ 2199 size_t CDECL CRTDLL__mbsnbcnt( const unsigned char *s, size_t n ) 2200 { 2201 dprintf(("CRTDLL: _mbsnbcnt not implemented.\n")); 2202 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 2203 return FALSE; 2204 } 2205 2206 2207 /********************************************************************* 2208 * CRTDLL__mbsnbcpy (CRTDLL.209) 2209 */ 2210 unsigned char * CDECL CRTDLL__mbsnbcpy( unsigned char *s1, const unsigned char *s2, size_t n ) 2211 { 2212 dprintf(("CRTDLL: _mbsnbcpy not implemented.\n")); 2213 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 2214 return FALSE; 2215 } 2216 2217 2218 /********************************************************************* 2219 * CRTDLL__mbsnbicmp (CRTDLL.210) 2334 * _mbslwr (CRTDLL.205) 2335 */ 2336 unsigned char * CDECL CRTDLL__mbslwr( unsigned char *x ) 2337 { 2338 dprintf(("CRTDLL: _mbslwr\n")); 2339 unsigned char *y=x; 2340 2341 while (*y) { 2342 if (!CRTDLL__ismbblead(*y) ) 2343 *y = tolower(*y); 2344 else { 2345 *y=CRTDLL__mbctolower(*(unsigned short *)y); 2346 y++; 2347 } 2348 } 2349 return x; 2350 } 2351 2352 2353 /********************************************************************* 2354 * _mbsnbcat (CRTDLL.206) 2355 */ 2356 unsigned char * CDECL CRTDLL__mbsnbcat( unsigned char *dst, const unsigned char *src, size_t n ) 2357 { 2358 dprintf(("CRTDLL: _mbsnbcat\n")); 2359 char *d; 2360 char *s = (char *)src; 2361 if (n != 0) { 2362 d = (char*)dst + strlen((char*)dst); // get the end of string 2363 d += _mbclen2(*d); // move 1 or 2 up 2364 2365 do { 2366 if ((*d++ = *s++) == 0) 2367 { 2368 while (--n != 0) 2369 *d++ = 0; 2370 break; 2371 } 2372 if ( !(n==1 && CRTDLL__ismbblead(*s)) ) 2373 n--; 2374 } while (n > 0); 2375 } 2376 return dst; 2377 } 2378 2379 2380 /********************************************************************* 2381 * _mbsnbcmp (CRTDLL.207) 2382 */ 2383 int CDECL CRTDLL__mbsnbcmp( const unsigned char *str1, const unsigned char *str2, size_t n ) 2384 { 2385 dprintf(("CRTDLL: _mbsnbcmp\n")); 2386 unsigned char *s1 = (unsigned char *)str1; 2387 unsigned char *s2 = (unsigned char *)str2; 2388 2389 unsigned short *short_s1, *short_s2; 2390 2391 int l1, l2; 2392 2393 if (n == 0) 2394 return 0; 2395 do { 2396 2397 if (*s1 == 0) 2398 break; 2399 2400 l1 = CRTDLL__ismbblead(*s1); 2401 l2 = CRTDLL__ismbblead(*s2); 2402 if ( !l1 && !l2 ) { 2403 2404 if (*s1 != *s2) 2405 return *s1 - *s2; 2406 else { 2407 s1 += 1; 2408 s2 += 1; 2409 n--; 2410 } 2411 } 2412 else if ( l1 && l2 ){ 2413 short_s1 = (unsigned short *)s1; 2414 short_s2 = (unsigned short *)s2; 2415 if ( *short_s1 != *short_s2 ) 2416 return *short_s1 - *short_s2; 2417 else { 2418 s1 += 2; 2419 s2 += 2; 2420 n-=2; 2421 2422 } 2423 } 2424 else 2425 return *s1 - *s2; 2426 } while (n > 0); 2427 return 0; 2428 } 2429 2430 2431 /********************************************************************* 2432 * _mbsnbcnt (CRTDLL.208) 2433 */ 2434 size_t CDECL CRTDLL__mbsnbcnt( const unsigned char *str, size_t n ) 2435 { 2436 dprintf(("CRTDLL: _mbsnbcnt\n")); 2437 unsigned char *s = (unsigned char *)str; 2438 while(*s != 0 && n > 0) { 2439 if (!CRTDLL__ismbblead(*s) ) 2440 n--; 2441 s++; 2442 } 2443 2444 return (size_t)(s - str); 2445 } 2446 2447 2448 /********************************************************************* 2449 * _mbsnbcpy (CRTDLL.209) 2450 */ 2451 unsigned char * CDECL CRTDLL__mbsnbcpy( unsigned char *str1, const unsigned char *str2, size_t n ) 2452 { 2453 dprintf(("CRTDLL: _mbsnbcpy\n")); 2454 unsigned char *s1 = (unsigned char *)str1; 2455 unsigned char *s2 = (unsigned char *)str2; 2456 2457 unsigned short *short_s1, *short_s2; 2458 2459 if (n == 0) 2460 return 0; 2461 do { 2462 2463 if (*s2 == 0) 2464 break; 2465 2466 if ( !CRTDLL__ismbblead(*s2) ) { 2467 2468 *s1 = *s2; 2469 s1 += 1; 2470 s2 += 1; 2471 n--; 2472 } 2473 else { 2474 short_s1 = (unsigned short *)s1; 2475 short_s2 = (unsigned short *)s2; 2476 *short_s1 = *short_s2; 2477 s1 += 2; 2478 s2 += 2; 2479 n-=2; 2480 } 2481 } while (n > 0); 2482 return str1; 2483 } 2484 2485 2486 /********************************************************************* 2487 * _mbsnbicmp (CRTDLL.210) 2220 2488 */ 2221 2489 int CDECL CRTDLL__mbsnbicmp( const unsigned char *s1, const unsigned char *s2, size_t n ) 2222 2490 { 2223 dprintf(("CRTDLL: _mbsnbicmp not implemented.\n")); 2224 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 2225 return FALSE; 2226 } 2227 2228 2229 /********************************************************************* 2230 * CRTDLL__mbsnbset (CRTDLL.211) 2231 */ 2232 unsigned char * CDECL CRTDLL__mbsnbset( unsigned char *s, unsigned int ch, size_t n ) 2233 { 2234 dprintf(("CRTDLL: _mbsnbset not implemented.\n")); 2235 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 2236 return FALSE; 2237 } 2238 2239 2240 /********************************************************************* 2241 * CRTDLL__mbsncat (CRTDLL.212) 2242 */ 2243 unsigned char * CDECL CRTDLL__mbsncat( unsigned char *s1, const unsigned char *s2, size_t n ) 2244 { 2245 dprintf(("CRTDLL: _mbsncat not implemented.\n")); 2246 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 2247 return FALSE; 2248 } 2249 2250 2251 /********************************************************************* 2252 * CRTDLL__mbsnccnt (CRTDLL.213) 2253 */ 2254 size_t CDECL CRTDLL__mbsnccnt( const unsigned char *s, size_t n ) 2255 { 2256 dprintf(("CRTDLL: _mbsnccnt not implemented.\n")); 2257 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 2258 return FALSE; 2259 } 2260 2261 2262 /********************************************************************* 2263 * CRTDLL__mbsncmp (CRTDLL.214) 2264 */ 2265 int CDECL CRTDLL__mbsncmp( const unsigned char *s1, const unsigned char *s2, size_t n ) 2266 { 2267 dprintf(("CRTDLL: _mbsncmp not implemented.\n")); 2268 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 2269 return FALSE; 2270 } 2271 2272 2273 /********************************************************************* 2274 * CRTDLL__mbsncpy (CRTDLL.215) 2275 */ 2276 unsigned char * CDECL CRTDLL__mbsncpy( unsigned char *s1, const unsigned char *s2, size_t n ) 2277 { 2278 dprintf(("CRTDLL: _mbsncpy not implemented.\n")); 2279 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 2280 return FALSE; 2281 } 2282 2283 2284 /********************************************************************* 2285 * CRTDLL__mbsnextc (CRTDLL.216) 2286 */ 2287 unsigned int CDECL CRTDLL__mbsnextc( const unsigned char *s ) 2288 { 2289 dprintf(("CRTDLL: _mbsnextc not implemented.\n")); 2290 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 2291 return FALSE; 2292 } 2293 2294 2295 /********************************************************************* 2296 * CRTDLL__mbsnicmp (CRTDLL.217) 2491 dprintf(("CRTDLL: _mbsnbicmp\n")); 2492 if (n == 0) 2493 return 0; 2494 do { 2495 if (_mbbtoupper(*s1) != _mbbtoupper(*s2)) 2496 return _mbbtoupper(*(unsigned const char *)s1) - _mbbtoupper(*(unsigned const char *)s2); 2497 s1 += _mbclen2(*s1); 2498 s2 += _mbclen2(*s2); 2499 2500 2501 if (*s1 == 0) 2502 break; 2503 n--; 2504 } while (n > 0); 2505 return 0; 2506 } 2507 2508 2509 /********************************************************************* 2510 * _mbsnbset (CRTDLL.211) 2511 */ 2512 unsigned char * CDECL CRTDLL__mbsnbset( unsigned char *src, unsigned int val, size_t count ) 2513 { 2514 dprintf(("CRTDLL: _mbsnbset\n")); 2515 unsigned char *char_src = (unsigned char *)src; 2516 unsigned short *short_src = (unsigned short *)src; 2517 2518 if ( _mbclen2(val) == 1 ) { 2519 2520 while(count > 0) { 2521 *char_src = val; 2522 char_src++; 2523 count--; 2524 } 2525 *char_src = 0; 2526 } 2527 else { 2528 while(count > 0) { 2529 *short_src = val; 2530 short_src++; 2531 count-=2; 2532 } 2533 *short_src = 0; 2534 } 2535 2536 return src; 2537 } 2538 2539 2540 /********************************************************************* 2541 * _mbsncat (CRTDLL.212) 2542 */ 2543 unsigned char * CDECL CRTDLL__mbsncat( unsigned char *dst, const unsigned char *src, size_t n ) 2544 { 2545 dprintf(("CRTDLL: _mbsncat\n")); 2546 char *d = (char *)dst; 2547 char *s = (char *)src; 2548 if (n != 0) { 2549 d = (char*)dst + strlen((char*)dst); // get the end of string 2550 d += _mbclen2(*d); // move 1 or 2 up 2551 2552 do { 2553 if ((*d++ = *s++) == 0) 2554 { 2555 while (--n != 0) 2556 *d++ = 0; 2557 break; 2558 } 2559 if (!CRTDLL__ismbblead(*s) ) 2560 n--; 2561 } while (n > 0); 2562 } 2563 return dst; 2564 } 2565 2566 2567 /********************************************************************* 2568 * _mbsnccnt (CRTDLL.213) 2569 */ 2570 size_t CDECL CRTDLL__mbsnccnt( const unsigned char *str, size_t n ) 2571 { 2572 dprintf(("CRTDLL: _mbsnccnt\n")); 2573 unsigned char *s = (unsigned char *)str; 2574 size_t cnt = 0; 2575 while(*s != 0 && n > 0) { 2576 if (CRTDLL__ismbblead(*s) ) 2577 s++; 2578 else 2579 n--; 2580 s++; 2581 cnt++; 2582 } 2583 2584 return cnt; 2585 } 2586 2587 2588 /********************************************************************* 2589 * _mbsncmp (CRTDLL.214) 2590 */ 2591 int CDECL CRTDLL__mbsncmp( const unsigned char *str1, const unsigned char *str2, size_t n ) 2592 { 2593 dprintf(("CRTDLL: _mbsncmp\n")); 2594 unsigned char *s1 = (unsigned char *)str1; 2595 unsigned char *s2 = (unsigned char *)str2; 2596 2597 unsigned short *short_s1, *short_s2; 2598 2599 int l1, l2; 2600 2601 if (n == 0) 2602 return 0; 2603 do { 2604 2605 if (*s1 == 0) 2606 break; 2607 2608 l1 = CRTDLL__ismbblead(*s1); 2609 l2 = CRTDLL__ismbblead(*s2); 2610 if ( !l1 && !l2 ) { 2611 2612 if (*s1 != *s2) 2613 return *s1 - *s2; 2614 else { 2615 s1 += 1; 2616 s2 += 1; 2617 n--; 2618 } 2619 } 2620 else if ( l1 && l2 ){ 2621 short_s1 = (unsigned short *)s1; 2622 short_s2 = (unsigned short *)s2; 2623 if ( *short_s1 != *short_s2 ) 2624 return *short_s1 - *short_s2; 2625 else { 2626 s1 += 2; 2627 s2 += 2; 2628 n--; 2629 2630 } 2631 } 2632 else 2633 return *s1 - *s2; 2634 } while (n > 0); 2635 return 0; 2636 } 2637 2638 2639 /********************************************************************* 2640 * _mbsncpy (CRTDLL.215) 2641 */ 2642 unsigned char * CDECL CRTDLL__mbsncpy( unsigned char *str1, const unsigned char *str2, size_t n ) 2643 { 2644 dprintf(("CRTDLL: _mbsncpy\n")); 2645 unsigned char *s1 = (unsigned char *)str1; 2646 unsigned char *s2 = (unsigned char *)str2; 2647 2648 unsigned short *short_s1, *short_s2; 2649 2650 if (n == 0) 2651 return 0; 2652 do { 2653 2654 if (*s2 == 0) 2655 break; 2656 2657 if ( !CRTDLL__ismbblead(*s2) ) { 2658 2659 *s1 = *s2; 2660 s1 += 1; 2661 s2 += 1; 2662 n--; 2663 } 2664 else { 2665 short_s1 = (unsigned short *)s1; 2666 short_s2 = (unsigned short *)s2; 2667 *short_s1 = *short_s2; 2668 s1 += 2; 2669 s2 += 2; 2670 n--; 2671 } 2672 } while (n > 0); 2673 return str1; 2674 } 2675 2676 2677 /********************************************************************* 2678 * _mbsnextc (CRTDLL.216) 2679 */ 2680 unsigned int CDECL CRTDLL__mbsnextc( const unsigned char *src ) 2681 { 2682 dprintf(("CRTDLL: _mbsnextc\n")); 2683 unsigned char *char_src = (unsigned char *)src; 2684 unsigned short *short_src = (unsigned short *)src; 2685 2686 if ( src == NULL ) 2687 return 0; 2688 2689 if ( !CRTDLL__ismbblead(*src) ) 2690 return *char_src; 2691 else 2692 return *short_src; 2693 return 0; 2694 2695 } 2696 2697 2698 /********************************************************************* 2699 * _mbsnicmp (CRTDLL.217) 2297 2700 */ 2298 2701 int CDECL CRTDLL__mbsnicmp( const unsigned char *s1, const unsigned char *s2, size_t n ) 2299 2702 { 2300 dprintf(("CRTDLL: _mbsnicmp not implemented.\n")); 2301 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 2302 return FALSE; 2303 } 2304 2305 2306 /********************************************************************* 2307 * CRTDLL__mbsninc (CRTDLL.218) 2308 */ 2309 unsigned char * CDECL CRTDLL__mbsninc( const unsigned char *s, size_t count ) 2310 { 2311 dprintf(("CRTDLL: _mbsninc not implemented.\n")); 2312 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 2313 return FALSE; 2314 } 2315 2316 2317 /********************************************************************* 2318 * CRTDLL__mbsnset (CRTDLL.219) 2319 */ 2320 unsigned char * CDECL CRTDLL__mbsnset( unsigned char *s, unsigned int ch, size_t n ) 2321 { 2322 dprintf(("CRTDLL: _mbsnset not implemented.\n")); 2323 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 2324 return FALSE; 2325 } 2326 2327 2328 /********************************************************************* 2329 * CRTDLL__mbspbrk (CRTDLL.220) 2330 */ 2331 unsigned char * CDECL CRTDLL__mbspbrk( const unsigned char *s, const unsigned char *charset ) 2332 { 2333 dprintf(("CRTDLL: _mbspbrk not implemented.\n")); 2334 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 2335 return FALSE; 2703 dprintf(("CRTDLL: _mbsnicmp\n")); 2704 if (n == 0) 2705 return 0; 2706 do { 2707 if (_mbbtoupper(*s1) != _mbbtoupper(*s2)) 2708 return _mbbtoupper(*(unsigned const char *)s1) - _mbbtoupper(*(unsigned const char *)s2); 2709 2710 // Next 2 lines won't compile 2711 // *s1 += _mbclen2(*s1); 2712 // *s2 += _mbclen2(*s2); 2713 2714 2715 if (*s1 == 0) 2716 break; 2717 if (!CRTDLL__ismbblead(*s1) ) 2718 n--; 2719 } while (n > 0); 2720 return 0; 2721 } 2722 2723 2724 /********************************************************************* 2725 * _mbsninc (CRTDLL.218) 2726 */ 2727 unsigned char * CDECL CRTDLL__mbsninc( const unsigned char *str, size_t n ) 2728 { 2729 dprintf(("CRTDLL: _mbsninc\n")); 2730 unsigned char *s = (unsigned char *)str; 2731 while(*s != 0 && n > 0) { 2732 if (!CRTDLL__ismbblead(*s) ) 2733 n--; 2734 s++; 2735 } 2736 2737 return s; 2738 } 2739 2740 2741 /********************************************************************* 2742 * _mbsnset (CRTDLL.219) 2743 */ 2744 unsigned char * CDECL CRTDLL__mbsnset( unsigned char *src, unsigned int val, size_t count ) 2745 { 2746 dprintf(("CRTDLL: _mbsnset\n")); 2747 unsigned char *char_src = (unsigned char *)src; 2748 unsigned short *short_src = (unsigned short *)src; 2749 2750 if ( _mbclen2(val) == 1 ) { 2751 2752 while(count > 0) { 2753 *char_src = val; 2754 char_src++; 2755 count--; 2756 } 2757 *char_src = 0; 2758 } 2759 else { 2760 while(count > 0) { 2761 *short_src = val; 2762 short_src++; 2763 count-=2; 2764 } 2765 *short_src = 0; 2766 } 2767 2768 return src; 2769 2770 } 2771 2772 2773 /********************************************************************* 2774 * _mbspbrk (CRTDLL.220) 2775 */ 2776 unsigned char * CDECL CRTDLL__mbspbrk( const unsigned char *s1, const unsigned char *s2 ) 2777 { 2778 dprintf(("CRTDLL: _mbspbrk\n")); 2779 const char *scanp; 2780 int c, sc; 2781 2782 while ((c = *s1++) != 0) 2783 { 2784 for (scanp = (char*)s2; (sc = *scanp++) != 0;) 2785 if (sc == c) 2786 return (unsigned char *)((char *)s1 - (char *)1); 2787 } 2788 return 0; 2336 2789 } 2337 2790 … … 2349 2802 2350 2803 /********************************************************************* 2351 * CRTDLL__mbsrev (CRTDLL.222)2804 * _mbsrev (CRTDLL.222) 2352 2805 */ 2353 2806 unsigned char * CDECL CRTDLL__mbsrev( unsigned char *s ) 2354 2807 { 2355 dprintf(("CRTDLL: _mbsrev not implemented.\n")); 2356 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 2357 return FALSE; 2358 } 2359 2360 2361 /********************************************************************* 2362 * CRTDLL__mbsset (CRTDLL.223) 2363 */ 2364 unsigned char * CDECL CRTDLL__mbsset( unsigned char *s, unsigned int ch ) 2365 { 2366 dprintf(("CRTDLL: _mbsset not implemented.\n")); 2367 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 2368 return FALSE; 2369 } 2370 2371 2372 /********************************************************************* 2373 * CRTDLL__mbsspn (CRTDLL.224) 2374 */ 2375 size_t CDECL CRTDLL__mbsspn( const unsigned char *s, const unsigned char *charset ) 2376 { 2377 dprintf(("CRTDLL: _mbsspn not implemented.\n")); 2378 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 2379 return FALSE; 2380 } 2381 2382 2383 /********************************************************************* 2384 * CRTDLL__mbsspnp (CRTDLL.225) 2385 */ 2386 unsigned char * CDECL CRTDLL__mbsspnp( const unsigned char *s, const unsigned char *charset ) 2387 { 2388 dprintf(("CRTDLL: _mbsspnp not implemented.\n")); 2389 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 2390 return FALSE; 2391 } 2392 2393 2394 /********************************************************************* 2395 * CRTDLL__mbsstr (CRTDLL.226) 2808 dprintf(("CRTDLL: _mbsrev\n")); 2809 unsigned char *e; 2810 unsigned char a; 2811 e=s; 2812 while (*e) { 2813 if ( CRTDLL__ismbblead(*e) ) { 2814 a = *e; 2815 *e = *++e; 2816 if ( *e == 0 ) 2817 break; 2818 *e = a; 2819 } 2820 e++; 2821 } 2822 while (s<e) { 2823 a=*s; 2824 *s=*e; 2825 *e=a; 2826 s++; 2827 e--; 2828 } 2829 2830 2831 return s; 2832 } 2833 2834 2835 /********************************************************************* 2836 * _mbsset (CRTDLL.223) 2837 */ 2838 unsigned char * CDECL CRTDLL__mbsset( unsigned char *src, unsigned int c ) 2839 { 2840 dprintf(("CRTDLL: _mbsset\n")); 2841 unsigned char *char_src = src; 2842 unsigned short *short_src = (unsigned short*)src; 2843 2844 if ( _mbclen2(c) == 1 ) { 2845 2846 while(*char_src != 0) { 2847 *char_src = c; 2848 char_src++; 2849 } 2850 *char_src = 0; 2851 } 2852 else { 2853 while(*short_src != 0) { 2854 *short_src = c; 2855 short_src++; 2856 } 2857 *short_src = 0; 2858 } 2859 2860 return src; 2861 } 2862 2863 2864 /********************************************************************* 2865 * _mbsspn (CRTDLL.224) 2866 */ 2867 size_t CDECL CRTDLL__mbsspn( const unsigned char *s1, const unsigned char *s2 ) 2868 { 2869 dprintf(("CRTDLL: _mbsspn\n")); 2870 const char *p = (char*)s1, *spanp; 2871 char c, sc; 2872 2873 cont: 2874 c = *p++; 2875 for (spanp = (char*)s2; (sc = *spanp++) != 0;) 2876 if (sc == c) 2877 goto cont; 2878 return (size_t)(p - 1) - (size_t)s1; 2879 } 2880 2881 2882 /********************************************************************* 2883 * _mbsspnp (CRTDLL.225) 2884 */ 2885 unsigned char * CDECL CRTDLL__mbsspnp( const unsigned char *s1, const unsigned char *s2 ) 2886 { 2887 dprintf(("CRTDLL: _mbsspnp\n")); 2888 const char *p = (char*)s1, *spanp; 2889 char c, sc; 2890 2891 cont: 2892 c = *p++; 2893 for (spanp = (char*)s2; (sc = *spanp++) != 0;) 2894 if (sc == c) 2895 goto cont; 2896 return (unsigned char*)p; 2897 } 2898 2899 2900 /********************************************************************* 2901 * _mbsstr (CRTDLL.226) 2396 2902 */ 2397 2903 unsigned char * CDECL CRTDLL__mbsstr( const unsigned char *s1, const unsigned char *s2 ) … … 2404 2910 2405 2911 /********************************************************************* 2406 * CRTDLL__mbstok (CRTDLL.227)2912 * _mbstok (CRTDLL.227) 2407 2913 */ 2408 2914 unsigned char * CDECL CRTDLL__mbstok( unsigned char *s, const unsigned char *delim ) 2409 2915 { 2410 dprintf(("CRTDLL: _mbstok not implemented.\n")); 2411 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 2412 return FALSE; 2413 } 2414 2415 2416 /********************************************************************* 2417 * CRTDLL__mbstrlen (CRTDLL.228) 2418 */ 2419 size_t CDECL CRTDLL__mbstrlen(const char *s) 2420 { 2421 dprintf(("CRTDLL: _mbstrlen not implemented.\n")); 2422 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 2423 return FALSE; 2424 } 2425 2426 2427 /********************************************************************* 2428 * CRTDLL__mbsupr (CRTDLL.229) 2429 */ 2430 unsigned char * CDECL CRTDLL__mbsupr( unsigned char *s ) 2431 { 2432 dprintf(("CRTDLL: _mbsupr not implemented.\n")); 2433 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 2434 return FALSE; 2916 dprintf(("CRTDLL: _mbstok not implemented\n")); 2917 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 2918 return FALSE; 2919 } 2920 2921 2922 /********************************************************************* 2923 * _mbstrlen (CRTDLL.228) 2924 */ 2925 size_t CDECL CRTDLL__mbstrlen(const char *string) 2926 { 2927 dprintf(("CRTDLL: _mbstrlen\n")); 2928 char *s = (char *)string; 2929 size_t i; 2930 while ( *s != 0 ) { 2931 if ( CRTDLL__ismbblead(*s) ) 2932 s++; 2933 s++; 2934 i++; 2935 } 2936 return i; 2937 } 2938 2939 2940 /********************************************************************* 2941 * _mbsupr (CRTDLL.229) 2942 */ 2943 unsigned char * CDECL CRTDLL__mbsupr( unsigned char *x ) 2944 { 2945 dprintf(("CRTDLL: _mbsupr\n")); 2946 unsigned char *y=x; 2947 while (*y) { 2948 if (!CRTDLL__ismbblead(*y) ) 2949 *y = toupper(*y); 2950 else { 2951 *y=CRTDLL__mbctoupper(*(unsigned short *)y); 2952 y++; 2953 } 2954 } 2955 return x; 2435 2956 } 2436 2957 … … 2439 2960 * CRTDLL__memccpy (CRTDLL.230) 2440 2961 */ 2441 void * CDECL CRTDLL__memccpy(void * v1, const void *v2, int i, size_t s)2442 { 2443 dprintf(("CRTDLL: _memccpy not implemented.\n"));2444 SetLastError(ERROR_CALL_NOT_IMPLEMENTED);2445 return FALSE;2962 void * CDECL CRTDLL__memccpy(void *to, const void *from,int c,size_t count) 2963 { 2964 dprintf(("CRTDLL: _memccpy\n")); 2965 memcpy(to,from,count); 2966 return memchr(to,c,count); 2446 2967 } 2447 2968 … … 2462 2983 * _mktemp (CRTDLL.233) 2463 2984 */ 2464 char * CDECL CRTDLL__mktemp( char * templt ) 2465 { 2466 dprintf(("CRTDLL: _mktemp not implemented.\n")); 2467 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 2468 return FALSE; 2985 char * CDECL CRTDLL__mktemp( char * _template ) 2986 { 2987 dprintf(("CRTDLL: _mktemp\n")); 2988 static int count = 0; 2989 char *cp, *dp; 2990 int i, len, xcount, loopcnt; 2991 2992 2993 2994 len = strlen (_template); 2995 cp = _template + len; 2996 2997 xcount = 0; 2998 while (xcount < 6 && cp > _template && cp[-1] == 'X') 2999 xcount++, cp--; 3000 3001 if (xcount) { 3002 dp = cp; 3003 while (dp > _template && dp[-1] != '/' && dp[-1] != '\\' && dp[-1] != ':') 3004 dp--; 3005 3006 /* Keep the first characters of the template, but turn the rest into 3007 Xs. */ 3008 while (cp > dp + 8 - xcount) { 3009 *--cp = 'X'; 3010 xcount = (xcount >= 6) ? 6 : 1 + xcount; 3011 } 3012 3013 /* If dots occur too early -- squash them. */ 3014 while (dp < cp) { 3015 if (*dp == '.') *dp = 'a'; 3016 dp++; 3017 } 3018 3019 /* Try to add ".tmp" to the filename. Truncate unused Xs. */ 3020 if (cp + xcount + 3 < _template + len) 3021 strcpy (cp + xcount, ".tmp"); 3022 else 3023 cp[xcount] = 0; 3024 3025 for (loopcnt = 0; loopcnt < (1 << (5 * xcount)); loopcnt++) { 3026 int c = count++; 3027 for (i = 0; i < xcount; i++, c >>= 5) 3028 cp[i] = "abcdefghijklmnopqrstuvwxyz012345"[c & 0x1f]; 3029 if (CRTDLL__access(_template,0) == -1) 3030 return _template; 3031 } 3032 } 3033 /* Failure: truncate the template and return NULL. */ 3034 *_template = 0; 3035 return 0; 2469 3036 } 2470 3037 … … 2641 3208 * _putw (CRTDLL.252) 2642 3209 */ 2643 INT CDECL CRTDLL__putw( int binint, FILE *fp ) 2644 { 2645 dprintf(("CRTDLL: _putw not implemented.\n")); 2646 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 2647 return FALSE; 3210 INT CDECL CRTDLL__putw( int w, FILE *stream ) 3211 { 3212 dprintf(("CRTDLL: _putw\n")); 3213 if (fwrite( &w, sizeof(w), 1, stream) < 1) 3214 return(EOF); 3215 return(0); 2648 3216 } 2649 3217 … … 2663 3231 * _rmdir (CRTDLL.255) 2664 3232 */ 2665 INT CDECL CRTDLL__rmdir(const char * s1)3233 INT CDECL CRTDLL__rmdir(const char *path) 2666 3234 { 2667 3235 dprintf(("CRTDLL: _rmdir\n")); 2668 SetLastError(ERROR_CALL_NOT_IMPLEMENTED);2669 return FALSE;2670 // return (_rmdir(s1));3236 if (!RemoveDirectoryA(path)) 3237 return -1; 3238 return 0; 2671 3239 } 2672 3240 … … 2703 3271 2704 3272 /********************************************************************* 2705 * CRTDLL__scalb (CRTDLL.259)3273 * _scalb (CRTDLL.259) 2706 3274 */ 2707 3275 double CDECL CRTDLL__scalb( double x, long exp ) … … 2716 3284 * CRTDLL__searchenv (CRTDLL.260) 2717 3285 */ 2718 void CDECL CRTDLL__searchenv( const char *name, const char *env_var, char *buf ) 2719 { 2720 dprintf(("CRTDLL: _searchenv not implemented.\n")); 2721 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 3286 void CDECL CRTDLL__searchenv(const char *file,const char *var,char *path ) 3287 { 3288 dprintf(("CRTDLL: _searchenv\n")); 3289 char *env = CRTDLL_getenv(var); 3290 3291 char *x; 3292 char *y; 3293 char *FilePart; 3294 x = strchr(env,'='); 3295 if ( x != NULL ) { 3296 *x = 0; 3297 x++; 3298 } 3299 y = strchr(env,';'); 3300 while ( y != NULL ) { 3301 *y = 0; 3302 if ( SearchPathA(x,file,NULL,MAX_PATH,path,&FilePart) > 0 ) { 3303 return; 3304 } 3305 x = y+1; 3306 y = strchr(env,';'); 3307 } 3308 return; 2722 3309 } 2723 3310 … … 2728 3315 void CDECL CRTDLL__seterrormode(int i) 2729 3316 { 2730 dprintf(("CRTDLL: _seterrormode not implemented.\n")); 2731 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 3317 dprintf(("CRTDLL: _seterrormode\n")); 3318 SetErrorMode(i); 3319 return; 2732 3320 } 2733 3321 … … 2775 3363 2776 3364 /********************************************************************* 2777 * CRTDLL__sopen (CRTDLL.268)3365 * _sopen (CRTDLL.268) 2778 3366 */ 2779 3367 int CDECL CRTDLL__sopen( const char *s, int i1, int i2, ... ) … … 2919 3507 2920 3508 /********************************************************************* 2921 * CRTDLL__strerror (CRTDLL.284)3509 * _strerror (CRTDLL.284) 2922 3510 */ 2923 3511 char * CDECL CRTDLL__strerror(const char *s) … … 2935 3523 int CDECL CRTDLL__stricoll( const char *s1, const char *s2 ) 2936 3524 { 2937 dprintf(("CRTDLL: _stricoll not implemented.\n")); 2938 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 2939 return FALSE; 3525 dprintf(("CRTDLL: _stricoll\n")); 3526 return stricmp(s1,s2); 2940 3527 } 2941 3528 … … 2985 3572 * CRTDLL__strnset (CRTDLL.293) 2986 3573 */ 2987 char * CDECL CRTDLL__strnset( char *string, int c, size_t len ) 2988 { 2989 dprintf(("CRTDLL: _strnset not implemented.\n")); 2990 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 2991 return FALSE; 3574 char * CDECL CRTDLL__strnset(char* szToFill, int szFill, size_t sizeMaxFill) 3575 { 3576 dprintf(("CRTDLL: _strnset\n")); 3577 char *t = szToFill; 3578 int i = 0; 3579 while( *szToFill != 0 && i < sizeMaxFill) 3580 { 3581 *szToFill = szFill; 3582 szToFill++; 3583 i++; 3584 } 3585 return t; 2992 3586 } 2993 3587 … … 2996 3590 * CRTDLL__strrev (CRTDLL.294) 2997 3591 */ 2998 char * CDECL CRTDLL__strrev( char *string ) 2999 { 3000 dprintf(("CRTDLL: _strrev not implemented.\n")); 3001 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 3002 return FALSE; 3592 char * CDECL CRTDLL__strrev( char *s ) 3593 { 3594 dprintf(("CRTDLL: _strrev\n")); 3595 char *e; 3596 char a; 3597 e=s; 3598 while (*e) 3599 e++; 3600 while (s<e) { 3601 a=*s; 3602 *s=*e; 3603 *e=a; 3604 s++; 3605 e--; 3606 } 3607 return s; 3003 3608 } 3004 3609 … … 3007 3612 * CRTDLL__strset (CRTDLL.295) 3008 3613 */ 3009 char * CDECL CRTDLL__strset( char *string, int c ) 3010 { 3011 dprintf(("CRTDLL: _strset not implemented.\n")); 3012 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 3013 return FALSE; 3614 char * CDECL CRTDLL__strset(char* szToFill, int szFill) 3615 { 3616 dprintf(("CRTDLL: _strset\n")); 3617 char *t = szToFill; 3618 while( *szToFill != 0 ) 3619 { 3620 *szToFill = szFill; 3621 szToFill++; 3622 } 3623 return t; 3014 3624 } 3015 3625 … … 3086 3696 3087 3697 /********************************************************************* 3088 * CRTDLL__tzset (CRTDLL.308)3698 * _tzset (CRTDLL.308) 3089 3699 */ 3090 3700 void CDECL CRTDLL__tzset( void ) … … 3276 3886 { 3277 3887 dprintf(("CRTDLL: _y1\n")); 3278 SetLastError(ERROR_CALL_NOT_IMPLEMENTED);3279 3888 return (_y1(x)); 3280 3889 } … … 3365 3974 * bsearch (CRTDLL.346) 3366 3975 */ 3367 void * CDECL CRTDLL_bsearch( const void *key, const void *base, size_t nmemb, 3368 size_t size, int (*compar)(const void *pkey, const void *pbase) ) 3369 { 3370 dprintf(("CRTDLL: bsearch not implemented.\n")); 3371 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 3372 return FALSE; 3976 void * CDECL CRTDLL_bsearch( const void *key, const void *base0, size_t nelem, 3977 size_t size, int (*cmp)(const void *ck, const void *ce)) 3978 { 3979 dprintf(("CRTDLL: bsearch\n")); 3980 char *base = (char *)base0; 3981 int lim, cmpval; 3982 void *p; 3983 3984 for (lim = nelem; lim != 0; lim >>= 1) 3985 { 3986 p = base + (lim >> 1) * size; 3987 cmpval = (*cmp)(key, p); 3988 if (cmpval == 0) 3989 return p; 3990 if (cmpval > 0) 3991 { /* key > p: move right */ 3992 base = (char *)p + size; 3993 lim--; 3994 } /* else move left */ 3995 } 3996 return 0; 3373 3997 } 3374 3998 … … 3798 4422 /********************************************************************* 3799 4423 * is_wctype (CRTDLL.390) 3800 * FIXME - Could not find anything about it 3801 */ 3802 INT CDECL CRTDLL_is_wctype(DWORD ret) 3803 { 3804 dprintf(("CRTDLL: is_wctype\n")); 4424 */ 4425 INT CDECL CRTDLL_is_wctype(wint_t wc, wctype_t wctypeFlags) 4426 { 4427 dprintf(("CRTDLL: is_wctype not implemented.\n")); 3805 4428 return 0; 3806 4429 } … … 3871 4494 * iswascii (CRTDLL.404) 3872 4495 */ 3873 int CDECL CRTDLL_iswascii(wint_t i) 3874 { 3875 dprintf(("CRTDLL: iswascii(%08xh) not implemented.\n", i)); 3876 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); 3877 return FALSE; 4496 int CDECL CRTDLL_iswascii(wint_t c) 4497 { 4498 dprintf(("CRTDLL: iswascii\n", c)); 4499 return (!((c)&(~0x7f))); 3878 4500 } 3879 4501 … … 4554 5176 return FALSE; 4555 5177 } 5178 5179 5180 5181 /********************************************************************* 5182 * __set_errno (INTERNAL-#1) 5183 */ 5184 int __set_errno (int error) 5185 { 5186 errno = error; 5187 return error; 5188 } 5189 5190 5191 /********************************************************************* 5192 * _mbbtoupper (INTERNAL-#2) 5193 */ 5194 unsigned int _mbbtoupper(unsigned int c) 5195 { 5196 if (!CRTDLL__ismbblead(c) ) 5197 return toupper(c); 5198 5199 return c; 5200 } 5201 5202 5203 /********************************************************************* 5204 * _mbbtolower (INTERNAL-#3) 5205 */ 5206 unsigned int _mbbtolower(unsigned int c) 5207 { 5208 if (!CRTDLL__ismbblead(c) ) 5209 return tolower(c); 5210 return c; 5211 } 5212 5213 5214 /********************************************************************* 5215 * _mbclen2 (INTERNAL-#4) 5216 */ 5217 size_t _mbclen2(const unsigned int s) 5218 { 5219 return (CRTDLL__ismbblead(s>>8) && CRTDLL__ismbbtrail(s&0x00FF)) ? 2 : 1; 5220 }
Note:
See TracChangeset
for help on using the changeset viewer.