Ignore:
Timestamp:
Nov 30, 1999, 3:18:07 PM (26 years ago)
Author:
sandervl
Message:

JW's update

File:
1 edited

Legend:

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

    r1862 r1884  
    1 /* $Id: msvcrt.cpp,v 1.6 1999-11-27 19:52:20 sandervl Exp $ */
     1/* $Id: msvcrt.cpp,v 1.7 1999-11-30 14:17:08 sandervl Exp $ */
    22
    33/*
     
    1414#include <wchar.h>
    1515#include <except.h>
     16#include <heapstring.h>
     17#include <crtdll.h>
     18#include "msvcrt.h"
    1619
    1720ODINDEBUGCHANNEL(msvcrt)
    1821
    19 int __app_type;
    20 int __usermatherr;
    21 
    22 typedef struct
    23 {
    24     HANDLE handle;
    25     int      pad[7];
    26 } CRTDLL_FILE, *PCRTDLL_FILE;
    27 
    28 extern LPSTR    _acmdln_dll;     
    29 extern UINT     _commode_dll;   
    30 extern UINT     _fmode_dll;     
    31 extern INT      __mb_cur_max_dll;
    32 extern USHORT   _pctype_dll;
    33 extern CRTDLL_FILE _iob;
    34 wchar_t ** __wargv;
    35 wchar_t * _wpgmptr;
    36 wchar_t ** _wenviron;
    37 
    38 
    3922/*********************************************************************
    4023 *                  ??3@YAXPAX@Z    (MSVCRT.1)
     
    207190/*********************************************************************
    208191 *                  ??2@YAPAXI@Z    (MSVCRT.15)
    209  *      FIXME - Could not find anything about it
    210  */
    211 INT CDECL MSVCRT_EXP15(DWORD ret)
    212 {
    213   dprintf(("MSVCRT: MSVCRT_EXP15 not implemented.\n"));
    214   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
    215   return FALSE;
     192 */
     193VOID* CDECL MSVCRT_new(DWORD size)
     194{
     195    dprintf(("MSVCRT: ??2@YAPAXI@Z\n"));
     196    VOID* result;
     197    if(!(result = HeapAlloc(GetProcessHeap(),0,size)) && new_handler)
     198        (*new_handler)();
     199    return result;
    216200}
    217201
     
    219203/*********************************************************************
    220204 *                  ??3@YAXPAX@Z    (MSVCRT.16)
    221  *      FIXME - Could not find anything about it
    222  */
    223 INT CDECL MSVCRT_EXP16(DWORD ret)
    224 {
    225   dprintf(("MSVCRT: MSVCRT_EXP16 not implemented.\n"));
    226   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
    227   return FALSE;
     205 */
     206VOID CDECL MSVCRT_delete(VOID* ptr)
     207{
     208    dprintf(("MSVCRT: ??3@YAXPAX@Z\n"));
     209    HeapFree(GetProcessHeap(),0,ptr);
    228210}
    229211
     
    470452
    471453/*********************************************************************
    472  *                  ??3@YAXPAX@Z    (MSVCRT.37)
    473  *      FIXME - Could not find anything about it
    474  */
    475 INT CDECL MSVCRT_EXP37(DWORD ret)
    476 {
    477   dprintf(("MSVCRT: MSVCRT_EXP37 not implemented.\n"));
    478   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
    479   return FALSE;
     454 *                  ?_set_new_handler@@YAP6AHI@ZP6AHI@Z@Z    (MSVCRT.37)
     455 */
     456new_handler_type CDECL MSVCRT_set_new_handler(new_handler_type func)
     457{
     458    dprintf(("MSVCRT: ?_set_new_handler@@YAP6AHI@ZP6AHI@Z@Z\n"));
     459    new_handler_type old_handler = new_handler;
     460    new_handler = func;
     461    return old_handler;
    480462}
    481463
     
    662644
    663645/*********************************************************************
     646 *                  __GetMainArgs  (MSVCRT.89)
     647 */
     648DWORD CDECL MSVCRT___GetMainArgs(LPDWORD argc,LPSTR **argv,
     649                                LPSTR *environ,DWORD flag)
     650{
     651        char *cmdline;
     652        char  **xargv;
     653        int     xargc,i,afterlastspace;
     654        DWORD   version;
     655
     656        dprintf(("MSVCRT: GetMainArgs\n"));
     657
     658        MSVCRT__acmdln = cmdline = HEAP_strdupA( GetProcessHeap(), 0,
     659                                                    GetCommandLineA() );
     660
     661        version = GetVersion();
     662        MSVCRT__osver       = version >> 16;
     663        MSVCRT__winminor    = version & 0xFF;
     664        MSVCRT__winmajor    = (version>>8) & 0xFF;
     665        MSVCRT__baseversion = version >> 16;
     666        MSVCRT__winver      = ((version >> 8) & 0xFF) + ((version & 0xFF) << 8);
     667        MSVCRT__baseminor   = (version >> 16) & 0xFF;
     668        MSVCRT__basemajor   = (version >> 24) & 0xFF;
     669        MSVCRT__osversion   = version & 0xFFFF;
     670        MSVCRT__osminor     = version & 0xFF;
     671        MSVCRT__osmajor     = (version>>8) & 0xFF;
     672
     673        /* missing threading init */
     674
     675        i=0;xargv=NULL;xargc=0;afterlastspace=0;
     676        while (cmdline[i]) {
     677                if (cmdline[i]==' ') {
     678                        xargv=(char**)HeapReAlloc( GetProcessHeap(), 0, xargv,
     679                                                   sizeof(char*)*(++xargc));
     680                        cmdline[i]='\0';
     681                        xargv[xargc-1] = HEAP_strdupA( GetProcessHeap(), 0,
     682                                                       cmdline+afterlastspace);
     683                        i++;
     684                        while (cmdline[i]==' ')
     685                                i++;
     686                        if (cmdline[i])
     687                                afterlastspace=i;
     688
     689                } else
     690                        i++;
     691
     692        }
     693
     694        xargv=(char**)HeapReAlloc( GetProcessHeap(), 0, xargv,
     695                                   sizeof(char*)*(++xargc));
     696        cmdline[i]='\0';
     697        xargv[xargc-1] = HEAP_strdupA( GetProcessHeap(), 0,
     698                                       cmdline+afterlastspace);
     699        MSVCRT___argc   = xargc;
     700        *argc           = xargc;
     701        MSVCRT___argv   = xargv;
     702        *argv           = xargv;
     703        dprintf(("MSVCRT: GetMainArgs end\n"));
     704        MSVCRT__environ = *environ = GetEnvironmentStringsA();
     705        return 0;
     706}
     707
     708
     709/*********************************************************************
     710 *                  __initenv    (MSVCRT.90)
     711 *      FIXME - Could not find anything about it
     712 */
     713INT CDECL MSVCRT___initenv(DWORD ret)
     714{
     715  dprintf(("MSVCRT: __initenv not implemented.\n"));
     716  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
     717  return FALSE;
     718}
     719
     720
     721/*********************************************************************
     722 *                  __p___argc  (MSVCRT.99)
     723 */
     724int * CDECL MSVCRT___p___argc()
     725{
     726  dprintf(("MSVCRT: __p___argc\n"));
     727        return (int*)&MSVCRT___argc;
     728}
     729
     730
     731/*********************************************************************
     732 *                  __p___argv  (MSVCRT.100)
     733 */
     734char ** CDECL MSVCRT___p___argv()
     735{
     736  dprintf(("MSVCRT: __p___argv\n"));
     737        return (char**)&MSVCRT___argv;
     738}
     739
     740
     741/*********************************************************************
    664742 *                  __p__initenv  (MSVCRT.101)
    665743 */
     
    667745{
    668746  dprintf(("MSVCRT: __p__initenv not implemented\n"));
    669         return &_acmdln_dll;
     747        return &MSVCRT__acmdln;
    670748}
    671749
     
    677755{
    678756  dprintf(("MSVCRT: __p___mb_cur_max\n"));
    679         return &__mb_cur_max_dll;
     757        return &MSVCRT___mb_cur_max;
    680758}
    681759
     
    687765{
    688766  dprintf(("MSVCRT: __p__acmdln\n"));
    689         return &_acmdln_dll;
    690 }
     767        return &MSVCRT__acmdln;
     768}
     769
    691770
    692771/*********************************************************************
     
    696775{
    697776  dprintf(("MSVCRT: __p__fmode\n"));
    698         return (int*)&_fmode_dll;
     777        return (int*)&MSVCRT__fmode;
     778}
     779
     780
     781/*********************************************************************
     782 *                  __p__daylight  (MSVCRT.108)
     783 */
     784int * CDECL MSVCRT___p__daylight()
     785{
     786  dprintf(("MSVCRT: __p__daylight\n"));
     787        return (int*)&MSVCRT__daylight;
     788}
     789
     790
     791/*********************************************************************
     792 *                  __p__environ  (MSVCRT.110)
     793 */
     794char ** CDECL MSVCRT___p__environ()
     795{
     796  dprintf(("MSVCRT: __p__environ\n"));
     797        return &MSVCRT__environ;
     798}
     799
     800
     801/*********************************************************************
     802 *                  __p__fileinfo  (MSVCRT.111)
     803 */
     804char ** CDECL MSVCRT___p__fileinfo()
     805{
     806  dprintf(("MSVCRT: __p__fileinfo\n"));
     807        return &MSVCRT__fileinfo;
    699808}
    700809
     
    706815{
    707816  dprintf(("MSVCRT: __p__commode\n"));
    708         return (int*)&_commode_dll;
     817        return (int*)&MSVCRT__commode;
    709818}
    710819
     
    721830
    722831/*********************************************************************
     832 *                  __p__osver  (MSVCRT.116)
     833 */
     834int * CDECL MSVCRT___p__osver()
     835{
     836  dprintf(("MSVCRT: __p__osver\n"));
     837        return (int*)&MSVCRT__osver;
     838}
     839
     840
     841/*********************************************************************
    723842 *                  __p__pctype  (MSVCRT.117)
    724843 */
     
    726845{
    727846  dprintf(("MSVCRT: __p__pctype\n"));
    728         return &_pctype_dll;
     847        return (USHORT*)&MSVCRT__pctype;
     848}
     849
     850
     851/*********************************************************************
     852 *                  __p__pgmptr  (MSVCRT.118)
     853 */
     854char ** CDECL MSVCRT___p__pgmptr()
     855{
     856  dprintf(("MSVCRT: __p__pgmptr\n"));
     857        return (char**)&MSVCRT__pgmptr;
     858}
     859
     860
     861/*********************************************************************
     862 *                  __p__pwctype  (MSVCRT.119)
     863 */
     864USHORT * CDECL MSVCRT___p__pwctype()
     865{
     866  dprintf(("MSVCRT: __p__pwctype\n"));
     867        return (USHORT*)&MSVCRT__pwctype;
     868}
     869
     870
     871/*********************************************************************
     872 *                  __p__timezone  (MSVCRT.120)
     873 */
     874int * CDECL MSVCRT___p__timezone()
     875{
     876  dprintf(("MSVCRT: __p__timezone\n"));
     877        return (int*)&MSVCRT__timezone;
     878}
     879
     880
     881/*********************************************************************
     882 *                  __p__tzname  (MSVCRT.121)
     883 */
     884char ** CDECL MSVCRT___p__tzname()
     885{
     886  dprintf(("MSVCRT: __p__tzname\n"));
     887        return (char**)&MSVCRT__tzname;
     888}
     889
     890
     891/*********************************************************************
     892 *                  __p__winmajor  (MSVCRT.124)
     893 */
     894int * CDECL MSVCRT___p__winmajor()
     895{
     896  dprintf(("MSVCRT: __p__winmajor\n"));
     897        return (int*)&MSVCRT__winmajor;
     898}
     899
     900
     901/*********************************************************************
     902 *                  __p__winminor  (MSVCRT.125)
     903 */
     904int * CDECL MSVCRT___p__winminor()
     905{
     906  dprintf(("MSVCRT: __p__winminor\n"));
     907        return (int*)&MSVCRT__winminor;
     908}
     909
     910
     911/*********************************************************************
     912 *                  __p__winver  (MSVCRT.126)
     913 */
     914int * CDECL MSVCRT___p__winver()
     915{
     916  dprintf(("MSVCRT: __p__winver\n"));
     917        return (int*)&MSVCRT__winver;
    729918}
    730919
     
    763952
    764953/*********************************************************************
     954 *                  _aexit_rtn    (MSVCRT.159)
     955 */
     956VOID CDECL MSVCRT__aexit_rtn(int exitcode)
     957{
     958  dprintf(("MSVCRT: _aexit_rtn\n"));
     959  ExitProcess(exitcode);
     960}
     961
     962
     963/*********************************************************************
    765964 *                  _atoi64    (MSVCRT.163)
    766965 */
Note: See TracChangeset for help on using the changeset viewer.