Changeset 4069 for trunk/src/msvcrt/msvcrt.cpp
- Timestamp:
- Aug 22, 2000, 10:09:21 AM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/msvcrt/msvcrt.cpp
r4067 r4069 1 /* $Id: msvcrt.cpp,v 1.1 3 2000-08-22 02:45:40phaller Exp $ */1 /* $Id: msvcrt.cpp,v 1.14 2000-08-22 08:09:21 phaller Exp $ */ 2 2 3 3 /* … … 24 24 25 25 ODINDEBUGCHANNEL(msvcrt) 26 27 28 /***************************************************************************** 29 * local variables * 30 *****************************************************************************/ 31 32 wchar_t ** __wargv; 33 wchar_t * _wpgmptr; 34 wchar_t ** _wenviron; 35 36 int __app_type; 37 int __usermatherr; 38 39 static new_handler_type new_handler; 40 41 // var Defs 42 UINT MSVCRT___argc; 43 LPSTR *MSVCRT___argv; 44 int MSVCRT___mb_cur_max; 45 LPSTR MSVCRT__acmdln; 46 UINT MSVCRT__basemajor; 47 UINT MSVCRT__baseminor; 48 UINT MSVCRT__baseversion; 49 UINT MSVCRT__commode; 50 UINT MSVCRT__daylight; 51 LPSTR MSVCRT__environ; 52 LPSTR MSVCRT__fileinfo; 53 UINT MSVCRT__fmode; 54 double *MSVCRT__HUGE; 55 UINT MSVCRT__osmajor; 56 UINT MSVCRT__osminor; 57 UINT MSVCRT__osmode; 58 UINT MSVCRT__osver; 59 UINT MSVCRT__osversion; 60 USHORT MSVCRT__pctype[] = {0,0}; 61 LPSTR MSVCRT__pgmptr; 62 USHORT *MSVCRT__pwctype; 63 UINT MSVCRT__timezone; 64 LPSTR MSVCRT__tzname; 65 UINT MSVCRT__winmajor; 66 UINT MSVCRT__winminor; 67 UINT MSVCRT__winver; 68 69 70 // syserr / sysnerr Defs 71 const char *MSVCRT_sys_errlist[] = { 72 __syserr00, __syserr01, __syserr02, __syserr03, __syserr04, 73 __syserr05, __syserr06, __syserr07, __syserr08, __syserr09, 74 __syserr10, __syserr11, __syserr12, __syserr13, __syserr14, 75 __syserr15, __syserr16, __syserr17, __syserr18, __syserr19, 76 __syserr20, __syserr21, __syserr22, __syserr23, __syserr24, 77 __syserr25, __syserr26, __syserr27, __syserr28, __syserr29, 78 __syserr30, __syserr31, __syserr32, __syserr33, __syserr34, 79 __syserr35, __syserr36, __syserr37, __syserr38 80 }; 81 int __sys_nerr = sizeof(MSVCRT_sys_errlist) / sizeof(MSVCRT_sys_errlist[0]); 82 int* MSVCRT__sys_nerr = &__sys_nerr; 83 84 26 85 27 86 /********************************************************************* … … 1251 1310 1252 1311 /********************************************************************* 1253 * _unlock (MSVCRT.480)1254 */1255 // Note: PH 2000/08/22 array size is probably larger than 0x12!1256 static CRITICAL_SECTION* arrpCriticalSections[0x12] = {0};1257 1258 #define CRITSEC_TABLE_LOCK 0x111259 1260 VOID CDECL MSVCRT__unlock(unsigned long ulIndex)1261 {1262 dprintf(("MSVCRT: _unlock\n"));1263 1264 CRITICAL_SECTION *pCS = arrpCriticalSections[ulIndex];1265 LeaveCriticalSection(pCS);1266 }1267 1268 1269 /*********************************************************************1270 * _lock (MSVCRT.318)1271 */1272 // Prototype from CRTDLL.CPP1273 VOID CDECL amsg_exit(int errnum);1274 1275 VOID CDECL MSVCRT__lock(unsigned long ulIndex)1276 {1277 dprintf(("MSVCRT: _lock\n"));1278 1279 CRITICAL_SECTION *pCS = arrpCriticalSections[ulIndex];1280 if (pCS == NULL)1281 {1282 CRITICAL_SECTION *pCSNew;1283 1284 pCSNew = (CRITICAL_SECTION*)malloc( sizeof(CRITICAL_SECTION) );1285 if (pCSNew == NULL)1286 amsg_exit(0x11); // yield error message1287 1288 MSVCRT__lock(CRITSEC_TABLE_LOCK); // lock table1289 if (pCS != NULL) // has been modified meanwhile by other thread ?1290 free(pCSNew);1291 else1292 {1293 InitializeCriticalSection(pCSNew);1294 arrpCriticalSections[ulIndex] = pCSNew;1295 }1296 1297 MSVCRT__unlock(CRITSEC_TABLE_LOCK); // unlock table1298 }1299 1300 EnterCriticalSection(pCS);1301 }1302 1303 1304 /*********************************************************************1305 1312 * _lseeki64 (MSVCRT.326) 1306 1313 */
Note:
See TracChangeset
for help on using the changeset viewer.