Ignore:
Timestamp:
Aug 22, 2000, 10:09:21 AM (25 years ago)
Author:
phaller
Message:

Restructured

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/msvcrt/msvcrt.cpp

    r4067 r4069  
    1 /* $Id: msvcrt.cpp,v 1.13 2000-08-22 02:45:40 phaller Exp $ */
     1/* $Id: msvcrt.cpp,v 1.14 2000-08-22 08:09:21 phaller Exp $ */
    22
    33/*
     
    2424
    2525ODINDEBUGCHANNEL(msvcrt)
     26
     27
     28/*****************************************************************************
     29 * local variables                                                           *
     30 *****************************************************************************/
     31
     32wchar_t ** __wargv;
     33wchar_t * _wpgmptr;
     34wchar_t ** _wenviron;
     35
     36int __app_type;
     37int __usermatherr;
     38
     39static new_handler_type new_handler;
     40
     41// var Defs
     42UINT    MSVCRT___argc;     
     43LPSTR   *MSVCRT___argv;     
     44int     MSVCRT___mb_cur_max;
     45LPSTR   MSVCRT__acmdln;     
     46UINT    MSVCRT__basemajor; 
     47UINT    MSVCRT__baseminor; 
     48UINT    MSVCRT__baseversion;
     49UINT    MSVCRT__commode;   
     50UINT    MSVCRT__daylight;   
     51LPSTR   MSVCRT__environ;   
     52LPSTR   MSVCRT__fileinfo;   
     53UINT    MSVCRT__fmode;     
     54double  *MSVCRT__HUGE;     
     55UINT    MSVCRT__osmajor;   
     56UINT    MSVCRT__osminor;   
     57UINT    MSVCRT__osmode;     
     58UINT    MSVCRT__osver;     
     59UINT    MSVCRT__osversion; 
     60USHORT  MSVCRT__pctype[] = {0,0};
     61LPSTR   MSVCRT__pgmptr;     
     62USHORT *MSVCRT__pwctype;     
     63UINT    MSVCRT__timezone;   
     64LPSTR   MSVCRT__tzname;
     65UINT    MSVCRT__winmajor;   
     66UINT    MSVCRT__winminor;   
     67UINT    MSVCRT__winver;     
     68
     69
     70// syserr / sysnerr Defs
     71const 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};
     81int __sys_nerr = sizeof(MSVCRT_sys_errlist) / sizeof(MSVCRT_sys_errlist[0]);
     82int*    MSVCRT__sys_nerr = &__sys_nerr;
     83
     84
    2685
    2786/*********************************************************************
     
    12511310
    12521311/*********************************************************************
    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 0x11
    1259  
    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.CPP
    1273 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 message
    1287    
    1288     MSVCRT__lock(CRITSEC_TABLE_LOCK); // lock table
    1289     if (pCS != NULL) // has been modified meanwhile by other thread ?
    1290       free(pCSNew);
    1291     else
    1292     {
    1293       InitializeCriticalSection(pCSNew);
    1294       arrpCriticalSections[ulIndex] = pCSNew;
    1295     }
    1296      
    1297     MSVCRT__unlock(CRITSEC_TABLE_LOCK); // unlock table
    1298   }
    1299    
    1300   EnterCriticalSection(pCS);
    1301 }
    1302 
    1303 
    1304 /*********************************************************************
    13051312 *                  _lseeki64    (MSVCRT.326)
    13061313 */
Note: See TracChangeset for help on using the changeset viewer.