Changeset 10005 for trunk/src


Ignore:
Timestamp:
Apr 10, 2003, 12:28:07 PM (22 years ago)
Author:
sandervl
Message:

PF: MSVCRT update

Location:
trunk/src/msvcrt
Files:
5 added
1 deleted
42 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/msvcrt/LICENSE.TXT

    r9655 r10005  
    1 $Id: LICENSE.TXT,v 1.2 2003-01-10 13:13:48 sandervl Exp $
     1$Id: LICENSE.TXT,v 1.3 2003-04-10 10:27:59 sandervl Exp $
    22This is an additional Odin license agreement.
    33It supercedes the main Odin license, but is only valid in
  • trunk/src/msvcrt/console.c

    r9633 r10005  
    2929#include "mtdll.h"
    3030
     31#include <stdio.h>
     32#include <string.h>
     33
    3134#include "wine/debug.h"
    3235
     36
    3337WINE_DEFAULT_DEBUG_CHANNEL(msvcrt);
    34 
    3538
    3639
     
    7477 *              _cputs (MSVCRT.@)
    7578 */
    76 int _cputs(const char* str)
     79int MSVCRT__cputs(const char* str)
    7780{
    7881  DWORD count;
     
    9093 *              _getch (MSVCRT.@)
    9194 */
    92 int _getch(void)
     95int MSVCRT__getch(void)
    9396{
    9497  int retval = MSVCRT_EOF;
     
    135138 *              _putch (MSVCRT.@)
    136139 */
    137 int _putch(int c)
     140int MSVCRT__putch(int c)
    138141{
    139142  int retval = MSVCRT_EOF;
     
    149152 *              _getche (MSVCRT.@)
    150153 */
    151 int _getche(void)
     154int MSVCRT__getche(void)
    152155{
    153156  int retval;
    154157  LOCK_CONSOLE;
    155   retval = _getch();
     158  retval = MSVCRT__getch();
    156159  if (retval != MSVCRT_EOF)
    157     retval = _putch(retval);
     160    retval = MSVCRT__putch(retval);
    158161  UNLOCK_CONSOLE;
    159162  return retval;
     
    163166 *              _cgets (MSVCRT.@)
    164167 */
    165 char* _cgets(char* str)
     168char* MSVCRT__cgets(char* str)
    166169{
    167170  char *buf = str + 2;
    168171  int c;
    169172  str[1] = 0; /* Length */
     173  dprintf(("MSVCRT: _cgets")); 
    170174  /* FIXME: No editing of string supported */
    171175  LOCK_CONSOLE;
    172176  do
    173177  {
    174     if (str[1] >= str[0] || (str[1]++, c = _getche()) == MSVCRT_EOF || c == '\n')
     178    if (str[1] >= str[0] || (str[1]++, c = MSVCRT__getche()) == MSVCRT_EOF || c == '\n')
    175179      break;
    176180    *buf++ = c & 0xff;
     
    184188 *              _ungetch (MSVCRT.@)
    185189 */
    186 int _ungetch(int c)
     190int MSVCRT__ungetch(int c)
    187191{
    188192  int retval = MSVCRT_EOF;
     
    197201 *              _kbhit (MSVCRT.@)
    198202 */
    199 int _kbhit(void)
     203int MSVCRT__kbhit(void)
    200204{
    201205  int retval = 0;
    202 
     206  dprintf(("MSVCRT: kbhit()"));
    203207  LOCK_CONSOLE;
    204208  if (__MSVCRT_console_buffer != MSVCRT_EOF)
     
    235239 *              _cprintf (MSVCRT.@)
    236240 */
    237 int _cprintf(const char* format, ...)
     241int MSVCRT__cprintf(const char* format, ...)
    238242{
    239243  char buf[2048], *mem = buf;
    240244  int written, resize = sizeof(buf), retval;
    241245  va_list valist;
    242 
     246  dprintf(("MSVCRT: _cprintf %s",format));
    243247  va_start( valist, format );
    244248  /* There are two conventions for snprintf failing:
     
    259263  va_end(valist);
    260264  LOCK_CONSOLE;
    261   retval = _cputs( mem );
     265  retval = MSVCRT__cputs( mem );
    262266  UNLOCK_CONSOLE;
    263267  if (mem != buf)
  • trunk/src/msvcrt/cpp.c

    r9633 r10005  
    2222#include "msvcrt/eh.h"
    2323#include "msvcrt/stdlib.h"
    24 
     24#include <string.h>
    2525#include "wine/debug.h"
    2626
    2727WINE_DEFAULT_DEBUG_CHANNEL(msvcrt);
    28 
    2928
    3029typedef void (*v_table_ptr)();
     
    10099void MSVCRT_exception_ctor(exception * _this, const char ** name)
    101100{
    102   TRACE("(%p %s)\n",_this,*name);
     101  TRACE("MSVCRT: exception_ctor (%p %s)\n",_this,*name);
    103102  _this->vtable = exception_vtable;
    104103  _this->name = *name;
     
    112111void MSVCRT_exception_copy_ctor(exception * _this, const exception * rhs)
    113112{
    114   TRACE("(%p %p)\n",_this,rhs);
     113  TRACE("MSVCRT: exception_copy_ctor (%p %p)\n",_this,rhs);
    115114  if (_this != rhs)
    116115    memcpy (_this, rhs, sizeof (*_this));
     
    123122void MSVCRT_exception_default_ctor(exception * _this)
    124123{
    125   TRACE("(%p)\n",_this);
     124  TRACE("MSVCRT: exception_default_ctor (%p)\n",_this);
    126125  _this->vtable = exception_vtable;
    127126  _this->name = "";
     
    134133void MSVCRT_exception_dtor(exception * _this)
    135134{
    136   TRACE("(%p)\n",_this);
     135  TRACE("MSVCRT: exception_dtor(%p)\n",_this);
    137136}
    138137
     
    500499{
    501500  /* Note: cppobj _isn't_ a type_info, we use that struct for its vtable ptr */
    502   TRACE("(%p)\n",cppobj);
     501  TRACE("MSVCRT: ___RTCastToVoid (%p)\n",cppobj);
    503502
    504503  /* Casts to void* simply cast to the base object */
  • trunk/src/msvcrt/cppexcept.c

    r9633 r10005  
    2525#ifdef __WIN32OS2__
    2626#include <emxheader.h>
     27#include <string.h>
    2728#include "winbase.h"
    2829#else
     
    3839#include "wine/debug.h"
    3940
     41#include "cppexcept.h"
     42
    4043WINE_DEFAULT_DEBUG_CHANNEL(seh);
    41 
    42 #define CXX_FRAME_MAGIC    0x19930520
    43 #define CXX_EXCEPTION      0xe06d7363
    44 
    45 typedef struct __type_info
    46 {
    47   void *vtable;
    48   void *data;
    49   char name[1];
    50 } type_info;
    51 
    52 /* the exception frame used by CxxFrameHandler */
    53 typedef struct __cxx_exception_frame
    54 {
    55     EXCEPTION_FRAME  frame;    /* the standard exception frame */
    56     int              trylevel;
    57     DWORD            ebp;
    58 } cxx_exception_frame;
    59 
    60 /* info about a single catch {} block */
    61 typedef struct __catchblock_info
    62 {
    63     UINT       flags;         /* flags (see below) */
    64     type_info *type_info;     /* C++ type caught by this block */
    65     int        offset;        /* stack offset to copy exception object to */
    66     void     (*handler)();    /* catch block handler code */
    67 } catchblock_info;
    68 #define TYPE_FLAG_CONST      1
    69 #define TYPE_FLAG_VOLATILE   2
    70 #define TYPE_FLAG_REFERENCE  8
    71 
    72 /* info about a single try {} block */
    73 typedef struct __tryblock_info
    74 {
    75     int              start_level;      /* start trylevel of that block */
    76     int              end_level;        /* end trylevel of that block */
    77     int              catch_level;      /* initial trylevel of the catch block */
    78     int              catchblock_count; /* count of catch blocks in array */
    79     catchblock_info *catchblock;       /* array of catch blocks */
    80 } tryblock_info;
    81 
    82 /* info about the unwind handler for a given trylevel */
    83 typedef struct __unwind_info
    84 {
    85     int    prev;          /* prev trylevel unwind handler, to run after this one */
    86     void (*handler)();    /* unwind handler */
    87 } unwind_info;
    88 
    89 /* descriptor of all try blocks of a given function */
    90 typedef struct __cxx_function_descr
    91 {
    92     UINT           magic;          /* must be CXX_FRAME_MAGIC */
    93     UINT           unwind_count;   /* number of unwind handlers */
    94     unwind_info   *unwind_table;   /* array of unwind handlers */
    95     UINT           tryblock_count; /* number of try blocks */
    96     tryblock_info *tryblock;       /* array of try blocks */
    97     UINT           unknown[3];
    98 } cxx_function_descr;
    99 
    100 /* complete information about a C++ type */
    101 typedef struct __cxx_type_info
    102 {
    103     UINT        flags;         /* flags (see CLASS_* flags below) */
    104     type_info  *type_info;     /* C++ type info */
    105     int         this_offset;   /* offset of base class this pointer from start of object */
    106     int         vbase_descr;   /* offset of virtual base class descriptor */
    107     int         vbase_offset;  /* offset of this pointer offset in virtual base class descriptor */
    108     size_t      size;          /* object size */
    109     void      (*copy_ctor)();  /* copy constructor */
    110 } cxx_type_info;
    111 #define CLASS_IS_SIMPLE_TYPE          1
    112 #define CLASS_HAS_VIRTUAL_BASE_CLASS  4
    113 
    114 /* table of C++ types that apply for a given object */
    115 typedef struct __cxx_type_info_table
    116 {
    117     UINT           count;     /* number of types */
    118     cxx_type_info *info[1];   /* array of types */
    119 } cxx_type_info_table;
    120 
    121 typedef DWORD (*cxx_exc_custom_handler)( PEXCEPTION_RECORD, cxx_exception_frame*,
    122                                          PCONTEXT, struct __EXCEPTION_FRAME**,
    123                                          cxx_function_descr*, int nested_trylevel,
    124                                          EXCEPTION_FRAME *nested_frame, DWORD unknown3 );
    125 
    126 /* type information for an exception object */
    127 typedef struct __cxx_exception_type
    128 {
    129     UINT                   flags;            /* TYPE_FLAG flags */
    130     void                 (*destructor)();    /* exception object destructor */
    131     cxx_exc_custom_handler custom_handler;   /* custom handler for this exception */
    132     cxx_type_info_table   *type_info_table;  /* list of types for this exception object */
    133 } cxx_exception_type;
    134 
    13544
    13645#ifdef __i386__  /* CxxFrameHandler is not supported on non-i386 */
     
    17079
    17180
    172 static void dump_type( cxx_type_info *type )
     81static void dump_type( const cxx_type_info *type )
    17382{
    17483    DPRINTF( "flags %x type %p", type->flags, type->type_info );
    175     if (type->type_info) DPRINTF( " (%p %s)", type->type_info->data, type->type_info->name );
     84    if (type->type_info) DPRINTF( " (%p %s)", type->type_info->name, type->type_info->mangled );
    17685    DPRINTF( " offset %d vbase %d,%d size %d copy ctor %p\n", type->this_offset,
    17786             type->vbase_descr, type->vbase_offset, type->size, type->copy_ctor );
    17887}
    17988
    180 static void dump_exception_type( cxx_exception_type *type )
    181 {
    182     int i;
     89static void dump_exception_type( const cxx_exception_type *type )
     90{
     91    UINT i;
    18392
    18493    DPRINTF( "exception type:\n" );
     
    192101}
    193102
    194 static void dump_function_descr( cxx_function_descr *descr, cxx_exception_type *info )
    195 {
    196     int i, j;
     103static void dump_function_descr( const cxx_function_descr *descr, const cxx_exception_type *info )
     104{
     105    UINT i;
     106    int j;
    197107
    198108    DPRINTF( "function descr:\n" );
     
    216126            DPRINTF( "        %d: flags %x offset %d handler %p type %p",
    217127                     j, ptr->flags, ptr->offset, ptr->handler, ptr->type_info );
    218             if (ptr->type_info) DPRINTF( " (%p %s)", ptr->type_info->data, ptr->type_info->name );
     128            if (ptr->type_info) DPRINTF( " (%p %s)", ptr->type_info->name, ptr->type_info->mangled );
    219129            DPRINTF( "\n" );
    220130        }
     
    223133
    224134/* compute the this pointer for a base class of a given type */
    225 static void *get_this_pointer( cxx_type_info *type, void *object )
     135static void *get_this_pointer( const cxx_type_info *type, void *object )
    226136{
    227137    void *this_ptr;
     
    242152
    243153/* check if the exception type is caught by a given catch block, and return the type that matched */
    244 static cxx_type_info *find_caught_type( cxx_exception_type *exc_type, catchblock_info *catchblock )
     154static const cxx_type_info *find_caught_type( cxx_exception_type *exc_type, catchblock_info *catchblock )
    245155{
    246156    UINT i;
     
    248158    for (i = 0; i < exc_type->type_info_table->count; i++)
    249159    {
    250         cxx_type_info *type = exc_type->type_info_table->info[i];
     160        const cxx_type_info *type = exc_type->type_info_table->info[i];
    251161
    252162        if (!catchblock->type_info) return type;   /* catch(...) matches any type */
    253163        if (catchblock->type_info != type->type_info)
    254164        {
    255             if (strcmp( catchblock->type_info->name, type->type_info->name )) continue;
     165            if (strcmp( catchblock->type_info->mangled, type->type_info->mangled )) continue;
    256166        }
    257167        /* type is the same, now check the flags */
     
    268178/* copy the exception object where the catch block wants it */
    269179static void copy_exception( void *object, cxx_exception_frame *frame,
    270                             catchblock_info *catchblock, cxx_type_info *type )
     180                            catchblock_info *catchblock, const cxx_type_info *type )
    271181{
    272182    void **dest_ptr;
    273183
    274     if (!catchblock->type_info || !catchblock->type_info->name[0]) return;
     184    if (!catchblock->type_info || !catchblock->type_info->mangled[0]) return;
    275185    if (!catchblock->offset) return;
    276186    dest_ptr = (void **)((char *)&frame->ebp + catchblock->offset);
     
    357267                                      cxx_exception_type *info )
    358268{
    359     int i, j;
     269    UINT i;
     270    int j;
    360271    void *addr, *object = (void *)rec->ExceptionInformation[1];
    361272    struct catch_func_nested_frame nested_frame;
     
    374285        {
    375286            catchblock_info *catchblock = &tryblock->catchblock[j];
    376             cxx_type_info *type = find_caught_type( info, catchblock );
     287            const cxx_type_info *type = find_caught_type( info, catchblock );
    377288            if (!type) continue;
    378289
     
    497408 *              _CxxThrowException (MSVCRT.@)
    498409 */
    499 void _CxxThrowException( void *object, cxx_exception_type *type )
     410void _CxxThrowException( void *object, const cxx_exception_type *type )
    500411{
    501412    DWORD args[3];
     
    506417    RaiseException( CXX_EXCEPTION, EH_NONCONTINUABLE, 3, args );
    507418}
     419
     420/*********************************************************************
     421 *              __CxxDetectRethrow (MSVCRT.@)
     422 */
     423BOOL __CxxDetectRethrow(PEXCEPTION_POINTERS ptrs)
     424{
     425  PEXCEPTION_RECORD rec;
     426
     427  if (!ptrs)
     428    return FALSE;
     429
     430  rec = ptrs->ExceptionRecord;
     431
     432  if (rec->ExceptionCode == CXX_EXCEPTION &&
     433      rec->NumberParameters == 3 &&
     434      rec->ExceptionInformation[0] == CXX_FRAME_MAGIC &&
     435      rec->ExceptionInformation[2])
     436  {
     437    ptrs->ExceptionRecord = msvcrt_get_thread_data()->exc_record;
     438    return TRUE;
     439  }
     440  return (msvcrt_get_thread_data()->exc_record == rec);
     441}
     442
     443/*********************************************************************
     444 *              __CxxQueryExceptionSize (MSVCRT.@)
     445 */
     446unsigned int __CxxQueryExceptionSize(void)
     447{
     448  return sizeof(cxx_exception_type);
     449}
  • trunk/src/msvcrt/ctype.c

    r9633 r10005  
    1919 */
    2020#include "msvcrt.h"
    21 
     21#include <ctype.h>
    2222#include "msvcrt/ctype.h"
     23
    2324
    2425#include "wine/debug.h"
     
    8283int _isctype(int c, int type)
    8384{
     85  dprintf(("MSVCRT: _isctype %d %d",c, type));
    8486  if (c >= -1 && c <= 255)
    8587    return MSVCRT__pctype[c] & type;
  • trunk/src/msvcrt/data.c

    r9633 r10005  
    2222#else
    2323#include <emxheader.h>
     24#include <math.h>
     25#include <string.h>
    2426#endif
    2527
    2628#include "wine/port.h"
    2729
    28 #include <math.h>
    2930#include "msvcrt.h"
    3031
     
    6970int MSVCRT_timezone;
    7071int MSVCRT_app_type;
     72char MSVCRT_pgm[MAX_PATH];
     73char* MSVCRT__pgmptr = 0;
    7174
    7275/* Get a snapshot of the current environment
     
    147150 *              __p___argc (MSVCRT.@)
    148151 */
    149 int* __p___argc(void) { return &MSVCRT___argc; }
     152int* __p___argc(void) { dprintf(("MSVCRT: Query of p__argc")); return &MSVCRT___argc; }
    150153
    151154/***********************************************************************
    152155 *              __p__commode (MSVCRT.@)
    153156 */
    154 unsigned int* __p__commode(void) { return &MSVCRT__commode; }
     157unsigned int* __p__commode(void) { dprintf(("MSVCRT: Query of p__commode"));  return &MSVCRT__commode; }
     158
     159/***********************************************************************
     160 *              __p__pgmptr (MSVCRT.@)
     161 */
     162char** __p__pgmptr(void) { return &MSVCRT__pgmptr; }
    155163
    156164/***********************************************************************
    157165 *              __p__fmode (MSVCRT.@)
    158166 */
    159 unsigned int* __p__fmode(void) { return &MSVCRT__fmode; }
     167unsigned int* __p__fmode(void) {  dprintf(("MSVCRT: Query of p__fmode"));  return &MSVCRT__fmode; }
    160168
    161169/***********************************************************************
    162170 *              __p__osver (MSVCRT.@)
    163171 */
    164 unsigned int* __p__osver(void) { return &MSVCRT__osver; }
     172unsigned int* __p__osver(void) {  dprintf(("MSVCRT: Query of p__osver")); return &MSVCRT__osver; }
    165173
    166174/***********************************************************************
    167175 *              __p__winmajor (MSVCRT.@)
    168176 */
    169 unsigned int* __p__winmajor(void) { return &MSVCRT__winmajor; }
     177unsigned int* __p__winmajor(void) {  dprintf(("MSVCRT: Query of p__winmajor")); return &MSVCRT__winmajor; }
    170178
    171179/***********************************************************************
    172180 *              __p__winminor (MSVCRT.@)
    173181 */
    174 unsigned int* __p__winminor(void) { return &MSVCRT__winminor; }
     182unsigned int* __p__winminor(void) {  dprintf(("MSVCRT: Query of p__winminor")); return &MSVCRT__winminor; }
    175183
    176184/***********************************************************************
    177185 *              __p__winver (MSVCRT.@)
    178186 */
    179 unsigned int* __p__winver(void) { return &MSVCRT__winver; }
     187unsigned int* __p__winver(void) {  dprintf(("MSVCRT: Query of p__winver")); return &MSVCRT__winver; }
    180188
    181189/*********************************************************************
    182190 *              __p__acmdln (MSVCRT.@)
    183191 */
    184 char** __p__acmdln(void) { return &MSVCRT__acmdln; }
     192char** __p__acmdln(void) {  dprintf(("MSVCRT: Query of p__acmdln")); return &MSVCRT__acmdln; }
    185193
    186194/*********************************************************************
    187195 *              __p__wcmdln (MSVCRT.@)
    188196 */
    189 MSVCRT_wchar_t** __p__wcmdln(void) { return &MSVCRT__wcmdln; }
     197MSVCRT_wchar_t** __p__wcmdln(void) {  dprintf(("MSVCRT: Query of p__wcmdln")); return &MSVCRT__wcmdln; }
    190198
    191199/*********************************************************************
    192200 *              __p___argv (MSVCRT.@)
    193201 */
    194 char*** __p___argv(void) { return &MSVCRT___argv; }
     202char*** __p___argv(void) {  dprintf(("MSVCRT: Query of p__argv"));  return &MSVCRT___argv; }
    195203
    196204/*********************************************************************
    197205 *              __p___wargv (MSVCRT.@)
    198206 */
    199 MSVCRT_wchar_t*** __p___wargv(void) { return &MSVCRT___wargv; }
     207MSVCRT_wchar_t*** __p___wargv(void) {  dprintf(("MSVCRT: Query of p__wargv"));  return &MSVCRT___wargv; }
    200208
    201209/*********************************************************************
     
    204212char*** __p__environ(void)
    205213{
     214  dprintf(("MSVCRT: Query of p__environ"));
    206215  if (!MSVCRT__environ)
    207216    MSVCRT__environ = msvcrt_SnapshotOfEnvironmentA(NULL);
     
    214223MSVCRT_wchar_t*** __p__wenviron(void)
    215224{
     225  dprintf(("MSVCRT: Query of p__wenviron"));
    216226  if (!MSVCRT__wenviron)
    217227    MSVCRT__wenviron = msvcrt_SnapshotOfEnvironmentW(NULL);
     
    222232 *              __p___initenv (MSVCRT.@)
    223233 */
    224 char*** __p___initenv(void) { return &MSVCRT___initenv; }
     234char*** __p___initenv(void) {  dprintf(("MSVCRT: Query of p__initenv")); return &MSVCRT___initenv; }
    225235
    226236/*********************************************************************
    227237 *              __p___winitenv (MSVCRT.@)
    228238 */
    229 MSVCRT_wchar_t*** __p___winitenv(void) { return &MSVCRT___winitenv; }
     239MSVCRT_wchar_t*** __p___winitenv(void) {  dprintf(("MSVCRT: Query of p__winitenv")); return &MSVCRT___winitenv; }
    230240
    231241/*********************************************************************
    232242 *              __p__timezone (MSVCRT.@)
    233243 */
    234 int* __p__timezone(void) { return &MSVCRT_timezone; }
     244int* __p__timezone(void) {  dprintf(("MSVCRT: Query of p__timezone")); return &MSVCRT_timezone; }
    235245
    236246/* INTERNAL: Create a wide string from an ascii string */
     
    238248{
    239249  const size_t len = strlen(str) + 1 ;
     250  dprintf(("MSVCRT: wstrdupa %s",str));
    240251  MSVCRT_wchar_t *wstr = MSVCRT_malloc(len* sizeof (MSVCRT_wchar_t));
    241252  if (!wstr)
     
    252263static WCHAR **__wine_main_wargv = NULL;
    253264char *argv[255];
    254 
    255 extern char* strtok(char*,const char*);
    256265
    257266static void set_library_argv( char **incargv)
     
    313322  DWORD version;
    314323
    315   MSVCRT__acmdln = _strdup( GetCommandLineA() );
     324  MSVCRT__acmdln = MSVCRT__strdup( GetCommandLineA() );
    316325  MSVCRT__wcmdln = wstrdupa(MSVCRT__acmdln);
    317326#ifdef __WIN32OS2__
     
    342351  MSVCRT_timezone = 0;
    343352
    344   /* FIXME: set app type for Winelib apps */
    345 
    346353  MSVCRT___initenv= msvcrt_SnapshotOfEnvironmentA(NULL);
    347354  MSVCRT___winitenv= msvcrt_SnapshotOfEnvironmentW(NULL);
    348355
     356  MSVCRT_pgm[0] = '\0';
     357  GetModuleFileNameA(0, MSVCRT_pgm, sizeof(MSVCRT_pgm)/sizeof(MSVCRT_pgm[0]));
     358  MSVCRT__pgmptr = MSVCRT_pgm;
    349359}
    350360
  • trunk/src/msvcrt/dir.c

    r9633 r10005  
    2323#ifdef __WIN32OS2__
    2424#include <emxheader.h>
     25#include <stdlib.h>
     26#include <string.h>
     27#include <ctype.h>
    2528#include <winbase.h>
    2629#else
     
    9093 *              _chdir (MSVCRT.@)
    9194 */
    92 int _chdir(const char * newdir)
     95int MSVCRT__chdir(const char * newdir)
    9396{
    9497  if (!SetCurrentDirectoryA(newdir))
     
    116119 *              _chdrive (MSVCRT.@)
    117120 */
    118 int _chdrive(int newdrive)
     121int MSVCRT__chdrive(int newdrive)
    119122{
    120123  char buffer[3] = "A:";
     
    219222 *              _getcwd (MSVCRT.@)
    220223 */
    221 char* _getcwd(char * buf, int size)
     224char* MSVCRT__getcwd(char * buf, int size)
    222225{
    223226  char dir[MAX_PATH];
     
    230233  {
    231234    if (size < 0)
    232       return _strdup(dir);
     235      return MSVCRT__strdup(dir);
    233236    return msvcrt_strndup(dir,size);
    234237  }
     
    271274 *              _getdrive (MSVCRT.@)
    272275 */
    273 int _getdrive(void)
     276int MSVCRT__getdrive(void)
    274277{
    275278    char buffer[MAX_PATH];
     
    282285 *              _getdcwd (MSVCRT.@)
    283286 */
    284 char* _getdcwd(int drive, char * buf, int size)
     287char* MSVCRT__getdcwd(int drive, char * buf, int size)
    285288{
    286289  static char* dummy;
     
    288291  TRACE(":drive %d(%c), size %d\n",drive, drive + 'A' - 1, size);
    289292
    290   if (!drive || drive == _getdrive())
    291     return _getcwd(buf,size); /* current */
     293  if (!drive || drive == MSVCRT__getdrive())
     294    return MSVCRT__getcwd(buf,size); /* current */
    292295  else
    293296  {
     
    312315    TRACE(":returning '%s'\n", dir);
    313316    if (!buf)
    314       return _strdup(dir); /* allocate */
     317      return MSVCRT__strdup(dir); /* allocate */
    315318
    316319    strcpy(buf,dir);
     
    328331  TRACE(":drive %d(%c), size %d\n",drive, drive + 'A' - 1, size);
    329332
    330   if (!drive || drive == _getdrive())
     333  if (!drive || drive == MSVCRT__getdrive())
    331334    return _wgetcwd(buf,size); /* current */
    332335  else
     
    388391 *              _mkdir (MSVCRT.@)
    389392 */
    390 int _mkdir(const char * newdir)
     393int MSVCRT__mkdir(const char * newdir)
    391394{
    392395  if (CreateDirectoryA(newdir,NULL))
     
    410413 *              _rmdir (MSVCRT.@)
    411414 */
    412 int _rmdir(const char * dir)
     415int MSVCRT__rmdir(const char * dir)
    413416{
    414417  if (RemoveDirectoryA(dir))
     
    439442  MSVCRT_wchar_t pathbuff[MAX_PATH],*path=pathbuff;
    440443
    441   TRACE(":splitting path %s\n",debugstr_w(path));
     444  TRACE("MSVCRT: _wsplitpath %s\n",debugstr_w(path));
    442445  /* FIXME: Should be an strncpyW or something */
    443446  strcpyW(pathbuff, inpath);
     
    586589      if (q > r)
    587590      {
    588         strcpy(q, p + 3);
     591        strcpy(q, p + 3);
    589592        s = q;
    590593      }
     
    622625 *              _fullpath (MSVCRT.@)
    623626 */
    624 char *_fullpath(char * absPath, const char* relPath, unsigned int size)
     627char *MSVCRT__fullpath(char * absPath, const char* relPath, unsigned int size)
    625628{
    626629  char drive[5],dir[MAX_PATH],file[MAX_PATH],ext[MAX_PATH];
     
    631634
    632635  if (!relPath || !*relPath)
    633     return _getcwd(absPath, size);
     636    return MSVCRT__getcwd(absPath, size);
    634637
    635638  if (size < 4)
     
    639642  }
    640643
    641   TRACE(":resolving relative path '%s'\n",relPath);
     644  TRACE("MSVCRT: _fullpath '%s'\n",relPath);
    642645
    643646  _splitpath(relPath, drive, dir, file, ext);
     
    670673
    671674  if (!absPath)
    672     return _strdup(res);
     675    return MSVCRT__strdup(res);
    673676  strcpy(absPath,res);
    674677  return absPath;
     
    678681 *              _makepath (MSVCRT.@)
    679682 */
    680 VOID _makepath(char * path, const char * drive,
     683VOID MSVCRT__makepath(char * path, const char * drive,
    681684                              const char *directory, const char * filename,
    682685                              const char * extension )
     
    767770 *              _searchenv (MSVCRT.@)
    768771 */
    769 void _searchenv(const char* file, const char* env, char *buf)
     772void MSVCRT__searchenv(const char* file, const char* env, char *buf)
    770773{
    771774  char*envVal, *penv;
     
    824827  } while(1);
    825828}
     829
     830MSVCRT_wchar_t* _wfullpath(MSVCRT_wchar_t* absPath,const MSVCRT_wchar_t* relPath,MSVCRT(size_t) size)
     831{
     832   MSVCRT_wchar_t ch;
     833   char asciiabsPath[280], asciirelPath[280];
     834
     835   TRACE("MSVCRT: _wfullpath %s %d\n", debugstr_w(relPath),size);
     836
     837   WideCharToMultiByte(CP_ACP, 0, relPath, -1, (LPSTR)asciirelPath, 280, NULL, NULL);
     838   
     839   MSVCRT__fullpath(asciiabsPath, asciirelPath, size);
     840   
     841   MultiByteToWideChar(CP_ACP, 0, asciiabsPath, -1, absPath, size);
     842
     843   return absPath; 
     844}
  • trunk/src/msvcrt/emxheader.h

    r9633 r10005  
    22#define _EMXSTDDEF_H
    33
    4 #if !defined (_SIZE_T)
    5 #define _SIZE_T
    6 typedef unsigned long size_t;
    7 #endif
    8 
    9    #ifndef __time_t
    10       #define __time_t
    11       typedef long time_t;
    12    #endif
    13 
    14    #ifndef __tm_t
    15       #define __tm_t
    16       struct tm
    17          {
    18          int tm_sec;      /* seconds after the minute [0-61]        */
    19          int tm_min;      /* minutes after the hour [0-59]          */
    20          int tm_hour;     /* hours since midnight [0-23]            */
    21          int tm_mday;     /* day of the month [1-31]                */
    22          int tm_mon;      /* months since January [0-11]            */
    23          int tm_year;     /* years since 1900                       */
    24          int tm_wday;     /* days since Sunday [0-6]                */
    25          int tm_yday;     /* days since January 1 [0-365]           */
    26          int tm_isdst;    /* Daylight Saving Time flag              */
    27       };
    28    #endif
    29 
    30    typedef struct _div_t
    31        {
    32        int quot;        /* quotient of integer division       */
    33        int rem;         /* remainder of integer division      */
    34        } div_t;
    35 
    36    typedef struct _ldiv_t
    37        {
    38        long int quot;   /* quotient of long integer division  */
    39        long int rem;    /* remainder of long integer division */
    40        } ldiv_t;
    41 
    42     div_t    div( int, int );
    43     ldiv_t   ldiv( long int, long int );
    44 
    45 #define STDIN_FILENO  0
    46 #define STDOUT_FILENO 1
    47 #define STDERR_FILENO 2
    48 
    49 /* more file._flag flags, but these conflict with Unix */
    50 #define _IOFBF    0x0000
    51 #define _IONBF    0x0004
    52 #define _IOLBF    0x0040
    53 
    54 #define EOF       (-1)
    55 #define FILENAME_MAX 260
    56 #define FOPEN_MAX 20
    57 #define L_tmpnam  260
    58 
    59 #define BUFSIZ    512
    60 
    61 #ifndef SEEK_SET
    62 #define SEEK_SET  0
    63 #define SEEK_CUR  1
    64 #define SEEK_END  2
    65 #endif
    664
    675#define __ASM_NAME(name) "_" name
  • trunk/src/msvcrt/environ.c

    r9633 r10005  
    2323#ifdef __WIN32OS2__
    2424#include <winbase.h>
     25#include <string.h>
    2526#endif
    2627
     
    4445  unsigned int length=strlen(name);
    4546
     47  dprintf(("MSVCRT: %s",name));
     48
    4649  for (pp = environ; (*pp); pp = pp + strlen(pp) +1)
    4750  {
     
    4952      if ((pos) && ((pos - pp) == length))
    5053      {
    51           if (!strncasecmp(pp,name,length)) break;
     54          if (!_strnicmp(pp,name,length)) break;
    5255      }
    5356  }
     
    7174  MSVCRT_wchar_t* pp,*pos = NULL;
    7275  unsigned int length=strlenW(name);
     76
     77  dprintf(("MSVCRT: _wgetenv %s",debugstr_w(name))); 
    7378
    7479  for (pp = environ; (*pp); pp = pp + strlenW(pp) + 1)
     
    95100 *              _putenv (MSVCRT.@)
    96101 */
    97 int _putenv(const char *str)
     102int MSVCRT__putenv(const char *str)
    98103{
    99104 char name[256], value[512];
  • trunk/src/msvcrt/errno.c

    r9633 r10005  
    3838void MSVCRT__set_errno(int err)
    3939{
    40   int *errno = MSVCRT__errno();
    41   unsigned long *doserrno = __doserrno();
    42 
     40  int *msv_errno = MSVCRT__errno();
     41  unsigned long *doserrno = MSVCRT_doserrno();
     42 
    4343  *doserrno = err;
    4444
     
    4646  {
    4747#define ERR_CASE(oserr) case oserr:
    48 #define ERR_MAPS(oserr,crterr) case oserr:*errno = crterr;break;
     48#define ERR_MAPS(oserr,crterr) case oserr:*msv_errno = crterr;break;
    4949    ERR_CASE(ERROR_ACCESS_DENIED)
    5050    ERR_CASE(ERROR_NETWORK_ACCESS_DENIED)
     
    9191    /*  Remaining cases map to EINVAL */
    9292    /* FIXME: may be missing some errors above */
    93     *errno = MSVCRT_EINVAL;
     93    *msv_errno = MSVCRT_EINVAL;
    9494  }
    9595}
     
    100100int* MSVCRT__errno(void)
    101101{
    102     return &msvcrt_get_thread_data()->errno;
     102    dprintf(("MSVCRT: __errno %d",msvcrt_get_thread_data()->msv_errno)); 
     103    return &msvcrt_get_thread_data()->msv_errno;
    103104}
    104105
    105106/*********************************************************************
    106  *              __doserrno (MSVCRT.@)
     107 *              MSVCRT_doserrno (MSVCRT.@)
    107108 */
    108 unsigned long* __doserrno(void)
     109unsigned long* MSVCRT_doserrno(void)
    109110{
     111    dprintf(("MSVCRT: _doserrno %d",msvcrt_get_thread_data()->doserrno)); 
    110112    return &msvcrt_get_thread_data()->doserrno;
    111113}
     
    122124 *              _strerror       (MSVCRT.@)
    123125 */
    124 char* _strerror(const char* err)
     126char* MSVCRT__strerror(const char* err)
    125127{
    126128  static char strerrbuff[256]; /* FIXME: Per thread, nprintf */
    127   sprintf(strerrbuff,"%s: %s\n",err,MSVCRT_strerror(msvcrt_get_thread_data()->errno));
     129  sprintf(strerrbuff,"%s: %s\n",err,MSVCRT_strerror(msvcrt_get_thread_data()->msv_errno));
    128130  return strerrbuff;
    129131}
     
    134136void MSVCRT_perror(const char* str)
    135137{
    136   _cprintf("%s: %s\n",str,MSVCRT_strerror(msvcrt_get_thread_data()->errno));
     138  MSVCRT__cprintf("%s: %s\n",str,MSVCRT_strerror(msvcrt_get_thread_data()->msv_errno));
    137139}
  • trunk/src/msvcrt/except.c

    r9633 r10005  
    2828#ifdef __WIN32OS2__
    2929#include <emxheader.h>
     30#include <stdlib.h>
     31#include <string.h>
    3032#include <winbase.h>
    3133#else
     
    4042#include "msvcrt.h"
    4143
     44#include "msvcrt/stdlib.h"
    4245#include "msvcrt/setjmp.h"
    4346#include "excpt.h"
     
    144147  EXCEPTION_FRAME reg;
    145148
    146   TRACE("(%p,%d,%d)\n",frame, frame->trylevel, trylevel);
     149  TRACE("MSVCRT: _local_unwind2 (%p,%d,%d)\n",frame, frame->trylevel, trylevel);
    147150
    148151  /* Register a handler in case of a nested exception */
     
    195198  PSCOPETABLE pScopeTable;
    196199
    197   TRACE("exception %lx flags=%lx at %p handler=%p %p %p semi-stub\n",
     200  TRACE("MSVCRT: exception %lx flags=%lx at %p handler=%p %p %p semi-stub\n",
    198201        rec->ExceptionCode, rec->ExceptionFlags, rec->ExceptionAddress,
    199202        frame->handler, context, dispatcher);
     
    290293#endif
    291294{
    292     TRACE("(%p)\n",jmp);
     295    TRACE("MSVCRT: _setjmp (%p)\n",jmp);
    293296    jmp->Ebp = context->Ebp;
    294297    jmp->Ebx = context->Ebx;
     
    316319#endif
    317320{
    318     TRACE("(%p,%d)\n",jmp,nb_args);
     321    TRACE("MSVCRT: _setjmp3 (%p,%d)\n",jmp,nb_args);
    319322    jmp->Ebp = context->Ebp;
    320323    jmp->Ebx = context->Ebx;
     
    359362    unsigned long cur_frame = 0;
    360363
    361     TRACE("(%p,%d)\n", jmp, retval);
     364    TRACE("MSVCRT: longjmp (%p,%d)\n", jmp, retval);
    362365
    363366    cur_frame=(unsigned long)NtCurrentTeb()->except;
     
    404407#endif /* i386 */
    405408
     409
    406410/*********************************************************************
    407411 *              signal (MSVCRT.@)
     
    409413void* MSVCRT_signal(int sig, MSVCRT_sig_handler_func func)
    410414{
    411   FIXME("(%d %p):stub\n", sig, func);
    412   return (void*)-1;
    413 }
     415  dprintf(("MSVCRT: signal(%d %p): NOT COMPLETE\n", sig, func));
     416  return SIG_IGN_W;
     417}
  • trunk/src/msvcrt/exit.c

    r9633 r10005  
    2323#include "msvcrt/stdlib.h"
    2424#include "mtdll.h"
    25 
     25#include "winuser.h"
     26#include <string.h>
    2627#include "wine/debug.h"
    2728
     
    3738
    3839extern int MSVCRT_app_type;
     40extern char *MSVCRT__pgmptr;
     41
     42static LPCSTR szMsgBoxTitle = "Wine C++ Runtime Library";
    3943
    4044/* INTERNAL: call atexit functions */
     
    9296void MSVCRT__exit(int exitcode)
    9397{
    94   TRACE("(%d)\n", exitcode);
     98  TRACE("MSVCRT: _exit (%d)\n", exitcode);
    9599  ExitProcess(exitcode);
    96100}
    97101
     102/* Print out an error message with an option to debug */
     103static void DoMessageBox(LPCSTR lead, LPCSTR message)
     104{
     105  MSGBOXPARAMSA msgbox;
     106  char text[2048];
     107  INT ret;
     108
     109  _snprintf(text,sizeof(text),"%s\n\nProgram: %s\n%s\n\n"
     110               "Press OK to exit the program, or Cancel to start the Wine debugger.\n ",
     111               lead, MSVCRT__pgmptr, message);
     112
     113  msgbox.cbSize = sizeof(msgbox);
     114  msgbox.hwndOwner = GetActiveWindow();
     115  msgbox.hInstance = 0;
     116  msgbox.lpszText = text;
     117  msgbox.lpszCaption = szMsgBoxTitle;
     118  msgbox.dwStyle = MB_OKCANCEL|MB_ICONERROR;
     119  msgbox.lpszIcon = NULL;
     120  msgbox.dwContextHelpId = 0;
     121  msgbox.lpfnMsgBoxCallback = NULL;
     122  msgbox.dwLanguageId = LANG_NEUTRAL;
     123
     124  ret = MessageBoxIndirectA(&msgbox);
     125  if (ret == IDCANCEL)
     126    DebugBreak();
     127}
     128
    98129/*********************************************************************
    99130 *              _amsg_exit (MSVCRT.@)
     
    101132void MSVCRT__amsg_exit(int errnum)
    102133{
    103   TRACE("(%d)\n", errnum);
     134  TRACE("MSVCRT: _amsg_exit (%d)\n", errnum);
    104135  /* FIXME: text for the error number. */
    105136  if (MSVCRT_app_type == 2)
    106137  {
    107     /* FIXME: MsgBox */
    108   }
    109   _cprintf("\nruntime error R60%d\n",errnum);
     138    char text[32];
     139    sprintf(text, "Error: R60%d",errnum);
     140    DoMessageBox("Runtime error!", text);
     141  }
     142  else
     143    MSVCRT__cprintf("\nruntime error R60%d\n",errnum);
    110144  MSVCRT__exit(255);
    111145}
     
    116150void MSVCRT_abort(void)
    117151{
    118   TRACE("(void)\n");
     152  TRACE("MSVCRT: _abort");
    119153  if (MSVCRT_app_type == 2)
    120154  {
    121     /* FIXME: MsgBox */
    122   }
    123   _cputs("\nabnormal program termination\n");
     155    DoMessageBox("Runtime error!", "abnormal program termination");
     156  }
     157  else
     158    MSVCRT__cputs("\nabnormal program termination\n");
    124159  MSVCRT__exit(3);
    125160}
     
    130165void MSVCRT__assert(const char* str, const char* file, unsigned int line)
    131166{
    132   TRACE("(%s,%s,%d)\n",str,file,line);
     167  TRACE("MSVCRT: _assert (%s,%s,%d)\n",str,file,line);
    133168  if (MSVCRT_app_type == 2)
    134169  {
    135     /* FIXME: MsgBox */
    136   }
    137   _cprintf("Assertion failed: %s, file %s, line %d\n\n",str,file, line);
    138   MSVCRT_abort();
     170    char text[2048];
     171    _snprintf(text, sizeof(text), "File: %s\nLine: %d\n\nEpression: \"%s\"", file, line, str);
     172    DoMessageBox("Assertion failed!", text);
     173  }
     174  else
     175    MSVCRT__cprintf("Assertion failed: %s, file %s, line %d\n\n",str, file, line);
     176  MSVCRT__exit(3);
    139177}
    140178
     
    144182void MSVCRT__c_exit(void)
    145183{
    146   TRACE("(void)\n");
     184  TRACE("MSVCRT: _c_exit (void)\n");
    147185  /* All cleanup is done on DLL detach; Return to caller */
    148186}
     
    153191void MSVCRT__cexit(void)
    154192{
    155   TRACE("(void)\n");
     193  TRACE("MSVCRT: _cexit (void)\n");
    156194  /* All cleanup is done on DLL detach; Return to caller */
    157195}
     
    160198 *              _onexit (MSVCRT.@)
    161199 */
    162 _onexit_t _onexit(_onexit_t func)
    163 {
    164   TRACE("(%p)\n",func);
     200_onexit_t MSVCRT__onexit(_onexit_t func)
     201{
     202  TRACE("MSVCRT: _onexit (%p)\n",func);
    165203
    166204  if (!func)
     
    196234void MSVCRT_exit(int exitcode)
    197235{
    198   TRACE("(%d)\n",exitcode);
     236  TRACE("MSVCRT: _exit (%d)\n",exitcode);
    199237  LOCK_EXIT;
    200238  __MSVCRT__call_atexit();
     
    208246int MSVCRT_atexit(void (*func)(void))
    209247{
    210   TRACE("(%p)\n", func);
    211   return _onexit((_onexit_t)func) == (_onexit_t)func ? 0 : -1;
     248  TRACE("MSVCRT: _atexit (%p)\n", func);
     249  return MSVCRT__onexit((_onexit_t)func) == (_onexit_t)func ? 0 : -1;
    212250}
    213251
     
    218256void _purecall(void)
    219257{
    220   TRACE("(void)\n");
     258  TRACE("MSVCRT: _purecall (void)\n");
    221259  MSVCRT__amsg_exit( 25 );
    222260}
  • trunk/src/msvcrt/file.c

    r9633 r10005  
    2323#ifdef __WIN32OS2__
    2424#include <emxheader.h>
     25/* thanks to stupid unistd.h in win dir! */
     26#include <emxruntime\unistd.h>
    2527#include <winbase.h>
    2628#else
     
    2931#endif
    3032
     33#include <stdlib.h>
     34#include <stdio.h>
     35#include <ctype.h>
     36#include <string.h>
    3137#include <time.h>
    32 #include <stdio.h>
    33 #ifdef HAVE_UNISTD_H
    34 # include <unistd.h>
    35 #endif
     38
    3639
    3740#include "winternl.h"
     41#include "debugstr.h"
    3842#include "msvcrt.h"
    3943#include "msvcrt/errno.h"
     
    8286
    8387/* INTERNAL: process umask */
    84 static int MSVCRT_umask = 0;
     88static int MSVCRT__umask = 0;
    8589
    8690/* INTERNAL: Static buffer for temp file name */
     
    124128  {
    125129    WARN(":fd (%d) - no handle!\n",fd);
    126     *__doserrno() = 0;
     130    *MSVCRT_doserrno() = 0;
    127131    *MSVCRT__errno() = MSVCRT_EBADF;
    128132   return INVALID_HANDLE_VALUE;
     
    177181static MSVCRT_FILE* msvcrt_alloc_fp(int fd)
    178182{
    179   TRACE(":fd (%d) allocating FILE*\n",fd);
     183  TRACE("MSVCRT: fd (%d) allocating FILE*\n",fd);
    180184  if (fd < 0 || fd >= MSVCRT_fdend ||
    181185      MSVCRT_handles[fd] == INVALID_HANDLE_VALUE)
    182186  {
    183187    WARN(":invalid fd %d\n",fd);
    184     *__doserrno() = 0;
     188    *MSVCRT_doserrno() = 0;
    185189    *MSVCRT__errno() = MSVCRT_EBADF;
    186190    return NULL;
     
    227231void msvcrt_free_io(void)
    228232{
    229     _fcloseall();
    230     _close(0);
    231     _close(1);
    232     _close(2);
     233    MSVCRT__fcloseall();
     234    MSVCRT__close(0);
     235    MSVCRT__close(1);
     236    MSVCRT__close(2);
    233237}
    234238
     
    238242  if(file->_bufsiz) {
    239243        int cnt=file->_ptr-file->_base;
    240         if(cnt>0 && _write(file->_file, file->_base, cnt) != cnt) {
     244        if(cnt>0 && MSVCRT__write(file->_file, file->_base, cnt) != cnt) {
    241245                return MSVCRT_EOF;
    242246        }
     
    268272MSVCRT_FILE *__p__iob(void)
    269273{
     274 dprintf(("MSVCRT: __p__iob request"));
    270275 return &MSVCRT__iob[0];
    271276}
     
    274279 *              _access (MSVCRT.@)
    275280 */
    276 int _access(const char *filename, int mode)
     281int MSVCRT__access(const char *filename, int mode)
    277282{
    278283  DWORD attr = GetFileAttributesA(filename);
    279284
    280   TRACE("(%s,%d) %ld\n",filename,mode,attr);
     285  TRACE("MSVCRT _access (%s,%d) %ld\n",filename,mode,attr);
    281286
    282287  if (!filename || attr == 0xffffffff)
     
    300305  DWORD attr = GetFileAttributesW(filename);
    301306
    302   TRACE("(%s,%d) %ld\n",debugstr_w(filename),mode,attr);
     307  TRACE("MSVCRT: _waccess (%s,%d) %ld\n",debugstr_w(filename),mode,attr);
    303308
    304309  if (!filename || attr == 0xffffffff)
     
    318323 *              _chmod (MSVCRT.@)
    319324 */
    320 int _chmod(const char *path, int flags)
     325int MSVCRT__chmod(const char *path, int flags)
    321326{
    322327  DWORD oldFlags = GetFileAttributesA(path);
     328
     329  dprintf(("MSVCRT: _chmod %s",path));
    323330
    324331  if (oldFlags != 0x0FFFFFFFF)
     
    341348  DWORD oldFlags = GetFileAttributesW(path);
    342349
     350  dprintf(("MSVCRT: _wchmod %s",debugstr_w(path)));
     351
    343352  if (oldFlags != 0x0FFFFFFFF)
    344353  {
     
    356365 *              _unlink (MSVCRT.@)
    357366 */
    358 int _unlink(const char *path)
    359 {
    360   TRACE("(%s)\n",path);
     367int MSVCRT__unlink(const char *path)
     368{
     369  TRACE("MSVCRT: _unlink (%s)\n",path);
    361370  if(DeleteFileA(path))
    362371    return 0;
     
    382391 *              _close (MSVCRT.@)
    383392 */
    384 int _close(int fd)
     393int MSVCRT__close(int fd)
    385394{
    386395  HANDLE hand = msvcrt_fdtoh(fd);
    387396
    388   TRACE(":fd (%d) handle (%p)\n",fd,hand);
     397  TRACE("MSVCRT: _close fd (%d) handle (%p)\n",fd,hand);
    389398  if (hand == INVALID_HANDLE_VALUE)
    390399    return -1;
     
    413422  {
    414423    TRACE("deleting temporary file '%s'\n",MSVCRT_tempfiles[fd]);
    415     _unlink(MSVCRT_tempfiles[fd]);
     424    MSVCRT__unlink(MSVCRT_tempfiles[fd]);
    416425    MSVCRT_free(MSVCRT_tempfiles[fd]);
    417426    MSVCRT_tempfiles[fd] = NULL;
    418427  }
    419428
    420   TRACE(":ok\n");
     429  TRACE("MSVCRT: _close ok\n");
    421430  return 0;
    422431}
     
    429438  HANDLE hand = msvcrt_fdtoh(fd);
    430439
    431   TRACE(":fd (%d) handle (%p)\n",fd,hand);
     440  TRACE("MSVCRT: _commit fd (%d) handle (%p)\n",fd,hand);
    432441  if (hand == INVALID_HANDLE_VALUE)
    433442    return -1;
     
    458467  HANDLE hand = msvcrt_fdtoh(fd);
    459468
    460   TRACE(":fd (%d) handle (%p)\n",fd,hand);
     469  TRACE("MSVCRT: _eof fd (%d) handle (%p)\n",fd,hand);
    461470
    462471  if (hand == INVALID_HANDLE_VALUE)
     
    483492 *              _fcloseall (MSVCRT.@)
    484493 */
    485 int _fcloseall(void)
     494int MSVCRT__fcloseall(void)
    486495{
    487496  int num_closed = 0, i;
     497
     498  dprintf(("MSVCRT: _fcloseall"));
    488499
    489500  for (i = 3; i < MSVCRT_fdend; i++)
    490501    if (MSVCRT_handles[i] != INVALID_HANDLE_VALUE)
    491502    {
    492       _close(i);
     503      MSVCRT__close(i);
    493504      num_closed++;
    494505    }
     
    506517  HANDLE hand = msvcrt_fdtoh(fd);
    507518
    508   TRACE(":fd (%d) handle (%p)\n",fd,hand);
     519  TRACE("MSVCRT: _lseeki64 fd (%d) handle (%p)\n",fd,hand);
    509520  if (hand == INVALID_HANDLE_VALUE)
    510521    return -1;
     
    516527  }
    517528
    518   TRACE(":fd (%d) to 0x%08lx%08lx pos %s\n",
     529  TRACE("MSVCRT: _lseek fd (%d) to 0x%08lx%08lx pos %s\n",
    519530        fd,hoffset,(long)offset,
    520531        (whence==SEEK_SET)?"SEEK_SET":
     
    549560 *              _lseek (MSVCRT.@)
    550561 */
    551 LONG _lseek(int fd, LONG offset, int whence)
     562LONG MSVCRT__lseek(int fd, LONG offset, int whence)
    552563{
    553564    return _lseeki64(fd, offset, whence);
     
    565576  HANDLE hand = msvcrt_fdtoh(fd);
    566577
    567   TRACE(":fd (%d) handle (%p)\n",fd,hand);
     578  TRACE("MSVCRT: _locking fd (%d) handle (%p)\n",fd,hand);
    568579  if (hand == INVALID_HANDLE_VALUE)
    569580    return -1;
     
    597608      ret = LockFile(hand, cur_locn, 0L, nbytes, 0L);
    598609      if (ret) break;
    599       sleep (1);
     610      Sleep (1);
    600611    }
    601612  }
     
    613624void MSVCRT_rewind(MSVCRT_FILE* file)
    614625{
    615   TRACE(":file (%p) fd (%d)\n",file,file->_file);
     626  TRACE("MSVCRT: rewind file (%p) fd (%d)\n",file,file->_file);
    616627  MSVCRT_fseek(file, 0L, SEEK_SET);
    617628  MSVCRT_clearerr(file);
     
    621632 *              _fdopen (MSVCRT.@)
    622633 */
    623 MSVCRT_FILE* _fdopen(int fd, const char *mode)
     634MSVCRT_FILE* MSVCRT__fdopen(int fd, const char *mode)
    624635{
    625636  MSVCRT_FILE* file = msvcrt_alloc_fp(fd);
    626637
    627   TRACE(":fd (%d) mode (%s) FILE* (%p)\n",fd,mode,file);
     638  TRACE("MSVCRT: _fdopen fd (%d) mode (%s) FILE* (%p)\n",fd,mode,file);
    628639
    629640  return file;
     
    637648  MSVCRT_FILE* file = msvcrt_alloc_fp(fd);
    638649
    639   TRACE(":fd (%d) mode (%s) FILE* (%p)\n",fd,debugstr_w(mode),file);
     650  TRACE("MSVCRT: _wfdopen fd (%d) mode (%s) FILE* (%p)\n",fd,debugstr_w(mode),file);
    640651  if (file)
    641652    MSVCRT_rewind(file);
     
    647658 *              _filelength (MSVCRT.@)
    648659 */
    649 LONG _filelength(int fd)
    650 {
    651   LONG curPos = _lseek(fd, 0, SEEK_CUR);
     660LONG MSVCRT__filelength(int fd)
     661{
     662  LONG curPos = MSVCRT__lseek(fd, 0, SEEK_CUR);
     663
     664  dprintf(("MSVCRT: _filelength"));
     665
    652666  if (curPos != -1)
    653667  {
    654     LONG endPos = _lseek(fd, 0, SEEK_END);
     668    LONG endPos = MSVCRT__lseek(fd, 0, SEEK_END);
    655669    if (endPos != -1)
    656670    {
    657671      if (endPos != curPos)
    658         _lseek(fd, curPos, SEEK_SET);
     672        MSVCRT__lseek(fd, curPos, SEEK_SET);
    659673      return endPos;
    660674    }
     
    666680 *              _fileno (MSVCRT.@)
    667681 */
    668 int _fileno(MSVCRT_FILE* file)
    669 {
    670   TRACE(":FILE* (%p) fd (%d)\n",file,file->_file);
     682int MSVCRT__fileno(MSVCRT_FILE* file)
     683{
     684  TRACE("MSVCRT: _fileno FILE* (%p) fd (%d)\n",file,file->_file);
    671685  return file->_file;
    672686}
     
    675689 *              _flushall (MSVCRT.@)
    676690 */
    677 int _flushall(void)
     691int MSVCRT__flushall(void)
    678692{
    679693  int num_flushed = 0, i = 3;
     694
     695  dprintf(("MSVCRT: _flushall"));
    680696
    681697  while(i < MSVCRT_fdend)
     
    707723  HANDLE hand = msvcrt_fdtoh(fd);
    708724
    709   TRACE(":fd (%d) stat (%p)\n",fd,buf);
     725  TRACE("MSVCRT: _fstati64 fd (%d) stat (%p)\n",fd,buf);
    710726  if (hand == INVALID_HANDLE_VALUE)
    711727    return -1;
     
    722738  if (!GetFileInformationByHandle(hand, &hfi))
    723739  {
    724     WARN(":failed-last error (%ld)\n",GetLastError());
     740    WARN("MSVCRT: _fstati64 failed-last error (%ld)\n",GetLastError());
    725741    MSVCRT__set_errno(ERROR_INVALID_PARAMETER);
    726742    return -1;
     
    735751  return 0;
    736752}
     753
    737754
    738755/*********************************************************************
     
    810827 *              _isatty (MSVCRT.@)
    811828 */
    812 int _isatty(int fd)
     829int MSVCRT__isatty(int fd)
    813830{
    814831  HANDLE hand = msvcrt_fdtoh(fd);
     
    948965
    949966
    950   oflags |= _O_BINARY; /* FIXME: Default to text */
    951 
    952   if (oflags & _O_TEXT)
    953   {
    954     /* Dont warn when writing */
    955     if (ioflag & GENERIC_READ)
    956       FIXME(":TEXT node not implemented\n");
    957     oflags &= ~_O_TEXT;
    958   }
    959 
     967  if (oflags & _O_BINARY)
     968    ioflag |= _O_BINARY;
     969  else if (oflags & _O_TEXT)
     970    ioflag |= _O_TEXT;
     971  else if (*__p__fmode() & _O_BINARY)
     972    ioflag |= _O_BINARY;
     973  else
     974    ioflag |= _O_TEXT; /* default to TEXT*/
     975 
    960976  switch( shflags )
    961977  {
     
    10011017  {
    10021018    if (oflags & _O_TEMPORARY)
    1003       MSVCRT_tempfiles[fd] = _strdup(path);
     1019      MSVCRT_tempfiles[fd] = MSVCRT__strdup(path);
    10041020    if (ioflag & MSVCRT__IOAPPEND)
    1005       _lseek(fd, 0, FILE_END);
     1021      MSVCRT__lseek(fd, 0, FILE_END);
    10061022  }
    10071023
     
    10371053 *              _open (MSVCRT.@)
    10381054 */
    1039 int _open( const char *path, int flags, ... )
     1055int MSVCRT__open( const char *path, int flags, ... )
    10401056{
    10411057  va_list ap;
    1042   int pmode;
    1043 
    1044   va_start(ap, flags);
    1045   pmode = va_arg(ap, int);
    1046   va_end(ap);
    1047 
    1048   return MSVCRT__sopen( path, flags, _SH_DENYNO, pmode );
     1058
     1059  if (flags & _O_CREAT)
     1060  {
     1061    int pmode;
     1062    va_start(ap, flags);
     1063    pmode = va_arg(ap, int);
     1064    va_end(ap);
     1065    return MSVCRT__sopen( path, flags, _SH_DENYNO, pmode );
     1066  }
     1067  else
     1068    return MSVCRT__sopen( path, flags, _SH_DENYNO);
    10491069}
    10501070
     
    10651085  if (patha && WideCharToMultiByte(CP_ACP,0,path,len,patha,len,NULL,NULL))
    10661086  {
    1067     int retval = _open(patha,flags,pmode);
     1087    int retval = MSVCRT__open(patha,flags,pmode);
    10681088    MSVCRT_free(patha);
    10691089    return retval;
     
    10771097 *              _creat (MSVCRT.@)
    10781098 */
    1079 int _creat(const char *path, int flags)
     1099int MSVCRT__creat(const char *path, int flags)
    10801100{
    10811101  int usedFlags = (flags & _O_TEXT)| _O_CREAT| _O_WRONLY| _O_TRUNC;
    1082   return _open(path, usedFlags);
     1102  return MSVCRT__open(path, usedFlags);
    10831103}
    10841104
     
    11071127 *              _rmtmp (MSVCRT.@)
    11081128 */
    1109 int _rmtmp(void)
     1129int MSVCRT__rmtmp(void)
    11101130{
    11111131  int num_removed = 0, i;
     
    11141134    if (MSVCRT_tempfiles[i])
    11151135    {
    1116       _close(i);
     1136      MSVCRT__close(i);
    11171137      num_removed++;
    11181138    }
     
    11261146 *              _read (MSVCRT.@)
    11271147 */
    1128 int _read(int fd, void *buf, unsigned int count)
     1148int MSVCRT__read(int fd, void *buf, unsigned int count)
    11291149{
    11301150  DWORD num_read;
     
    11371157    return -1;
    11381158
    1139   if (ReadFile(hand, buf, count, &num_read, NULL))
    1140   {
    1141     if (num_read != count && MSVCRT_files[fd])
     1159  if (MSVCRT_flags[fd]& _O_BINARY)
    11421160    {
    1143       TRACE(":EOF\n");
    1144         MSVCRT_flags[fd] |= MSVCRT__IOEOF;
    1145 /*
    1146       MSVCRT_files[fd]->_flag |= MSVCRT__IOEOF;
    1147 */
     1161      if (ReadFile(hand, buf, count, &num_read, NULL))
     1162        {
     1163          if (num_read != count && MSVCRT_files[fd])
     1164            {
     1165              TRACE(":EOF\n");
     1166              MSVCRT_flags[fd] |= MSVCRT__IOEOF;
     1167              /*
     1168                MSVCRT_files[fd]->_flag |= MSVCRT__IOEOF;
     1169              */
     1170            }
     1171          dprintf(("%s\n",debugstr_an(buf,num_read)));
     1172          return num_read;
     1173        }
     1174      TRACE(":failed-last error (%ld)\n",GetLastError());
     1175      if (MSVCRT_files[fd])
     1176        MSVCRT_files[fd]->_flag |= MSVCRT__IOERR;
     1177      return -1;
    11481178    }
    1149     return num_read;
    1150   }
    1151   TRACE(":failed-last error (%ld)\n",GetLastError());
    1152   if (MSVCRT_files[fd])
    1153      MSVCRT_files[fd]->_flag |= MSVCRT__IOERR;
    1154   return -1;
     1179  else
     1180    {
     1181      char cc, *s=(char*)buf,* buf_start=(char*)buf;
     1182      unsigned int i;
     1183     
     1184      for (i = 0 , num_read = 1; i < count && (num_read == 1);)
     1185        {
     1186          if (ReadFile(hand, &cc, 1, &num_read, NULL))
     1187            if (num_read == 1)
     1188              if ((cc != '\r') || MSVCRT_flags[fd] & _O_BINARY)
     1189                {
     1190                  *s++ = (char)cc;
     1191                  i++;
     1192                }
     1193        }
     1194      if (num_read != 1)
     1195        {
     1196          TRACE(":EOF\n");
     1197          if (MSVCRT_files[fd])
     1198            MSVCRT_flags[fd] |= MSVCRT__IOEOF;
     1199          /*
     1200            MSVCRT_files[fd]->_flag |= MSVCRT__IOEOF;
     1201          */
     1202        }
     1203 
     1204      if (count > 4)
     1205        dprintf(("%s\n",debugstr_an(buf_start, s-buf_start)));
     1206      return s-buf_start;
     1207    }
     1208  return 0;
    11551209}
    11561210
     
    11581212 *              _getw (MSVCRT.@)
    11591213 */
    1160 int _getw(MSVCRT_FILE* file)
     1214int MSVCRT__getw(MSVCRT_FILE* file)
    11611215{
    11621216  int i;
    1163   if (_read(file->_file, &i, sizeof(int)) != 1)
     1217  if (MSVCRT__read(file->_file, &i, sizeof(int)) != 1)
    11641218    return MSVCRT_EOF;
    11651219  return i;
     
    11691223 *              _setmode (MSVCRT.@)
    11701224 */
    1171 int _setmode(int fd,int mode)
    1172 {
    1173   if (mode & _O_TEXT)
    1174     FIXME("fd (%d) mode (%d) TEXT not implemented\n",fd,mode);
    1175   return 0;
     1225int MSVCRT__setmode(int fd,int mode)
     1226{
     1227  int ret = MSVCRT_flags[fd] & (_O_TEXT | _O_BINARY);
     1228  if (mode & (~(_O_TEXT|_O_BINARY)))
     1229    FIXME("fd (%d) mode (0x%08x) unknown\n",fd,mode);
     1230  MSVCRT_flags[fd] &= ~(_O_TEXT|_O_BINARY);
     1231  MSVCRT_flags[fd] |= mode & (_O_TEXT | _O_BINARY);
     1232  return ret;
    11761233}
    11771234
     
    12021259                 as drive letter
    12031260  */
    1204   if (isalpha(*path)&& (*(path+1)==':'))
     1261  if (isalpha((int)*path) && (*(path+1)==':'))
    12051262    buf->st_dev = buf->st_rdev = toupper(*path) - 'A'; /* drive num */
    12061263  else
    1207     buf->st_dev = buf->st_rdev = _getdrive() - 1;
     1264    buf->st_dev = buf->st_rdev = MSVCRT__getdrive() - 1;
    12081265
    12091266  plen = strlen(path);
     
    12801337    buf->st_dev = buf->st_rdev = toupperW(*path - 'A'); /* drive num */
    12811338  else
    1282     buf->st_dev = buf->st_rdev = _getdrive() - 1;
     1339    buf->st_dev = buf->st_rdev = MSVCRT__getdrive() - 1;
    12831340
    12841341  plen = strlenW(path);
     
    13191376 *              _tell (MSVCRT.@)
    13201377 */
    1321 LONG _tell(int fd)
    1322 {
    1323   return _lseek(fd, 0, SEEK_CUR);
     1378LONG MSVCRT__tell(int fd)
     1379{
     1380  return MSVCRT__lseek(fd, 0, SEEK_CUR);
    13241381}
    13251382
     
    13271384 *              _tempnam (MSVCRT.@)
    13281385 */
    1329 char *_tempnam(const char *dir, const char *prefix)
     1386char *MSVCRT__tempnam(const char *dir, const char *prefix)
    13301387{
    13311388  char tmpbuf[MAX_PATH];
     
    13351392  {
    13361393    TRACE("got name (%s)\n",tmpbuf);
    1337     return _strdup(tmpbuf);
     1394    return MSVCRT__strdup(tmpbuf);
    13381395  }
    13391396  TRACE("failed (%ld)\n",GetLastError());
     
    13611418 *              _umask (MSVCRT.@)
    13621419 */
    1363 int _umask(int umask)
    1364 {
    1365   int old_umask = MSVCRT_umask;
    1366   TRACE("(%d)\n",umask);
    1367   MSVCRT_umask = umask;
     1420int MSVCRT_umask(int umask)
     1421{
     1422  int old_umask = MSVCRT__umask;
     1423  TRACE("MSVCRT: _umask (%d)\n",umask);
     1424  MSVCRT__umask = umask;
    13681425  return old_umask;
    13691426}
     
    13721429 *              _utime (MSVCRT.@)
    13731430 */
    1374 int _utime(const char* path, struct _utimbuf *t)
    1375 {
    1376   int fd = _open(path, _O_WRONLY | _O_BINARY);
     1431int MSVCRT_utime(const char* path, struct _utimbuf *t)
     1432{
     1433  int fd = MSVCRT__open(path, _O_WRONLY | _O_BINARY);
    13771434
    13781435  if (fd > 0)
    13791436  {
    13801437    int retVal = _futime(fd, t);
    1381     _close(fd);
     1438    MSVCRT__close(fd);
    13821439    return retVal;
    13831440  }
     
    13951452  {
    13961453    int retVal = _futime(fd, t);
    1397     _close(fd);
     1454     MSVCRT__close(fd);
    13981455    return retVal;
    13991456  }
     
    14041461 *              _write (MSVCRT.@)
    14051462 */
    1406 int _write(int fd, const void* buf, unsigned int count)
     1463int MSVCRT__write(int fd, const void* buf, unsigned int count)
    14071464{
    14081465  DWORD num_written;
     
    14151472#endif
    14161473  if (hand == INVALID_HANDLE_VALUE)
    1417     return -1;
     1474    {
     1475      *MSVCRT__errno() = MSVCRT_EBADF;
     1476      return -1;
     1477    }
    14181478
    14191479  /* If appending, go to EOF */
    14201480  if (MSVCRT_flags[fd] & MSVCRT__IOAPPEND)
    1421     _lseek(fd, 0, FILE_END);
    1422 
    1423   if (WriteFile(hand, buf, count, &num_written, NULL)
    1424       &&  (num_written == count))
    1425     return num_written;
    1426 
    1427   TRACE(":failed-last error (%ld)\n",GetLastError());
    1428   if (MSVCRT_files[fd])
    1429      MSVCRT_files[fd]->_flag |= MSVCRT__IOERR;
    1430 
     1481    MSVCRT__lseek(fd, 0, FILE_END);
     1482
     1483  if (MSVCRT_flags[fd] & _O_BINARY)
     1484    {
     1485      if (WriteFile(hand, buf, count, &num_written, NULL)
     1486          &&  (num_written >= count))
     1487        return num_written;
     1488      TRACE(":failed-last error (%ld)\n",GetLastError());
     1489      if (MSVCRT_files[fd])
     1490        {
     1491          MSVCRT_files[fd]->_flag |= MSVCRT__IOERR;
     1492          *MSVCRT__errno() = MSVCRT_ENOSPC;
     1493        }
     1494    }
     1495  else
     1496    {
     1497      char *s=(char*)buf, *buf_start=(char*)buf, *p;
     1498      char crlf[]= {'\r','\n'};
     1499      unsigned int i;
     1500      DWORD num_to_write;
     1501      for (i = 0; i< count && !(MSVCRT_flags[fd] & MSVCRT__IOERR);i++, s++)
     1502        {
     1503          if (*s == '\n')
     1504            {
     1505              p = crlf;
     1506              num_to_write = 2;
     1507            }
     1508          else
     1509            {
     1510              p = s;
     1511              num_to_write = 1;
     1512            }
     1513          if ((WriteFile(hand, p, num_to_write, &num_written, NULL) == 0 ) || (num_written != num_to_write))
     1514            {
     1515              TRACE(":failed-last error (%ld) num_written %ld\n",GetLastError(),num_written);
     1516              if (MSVCRT_files[fd])
     1517                {
     1518                  MSVCRT_files[fd]->_flag |= MSVCRT__IOERR;
     1519                  *MSVCRT__errno() = MSVCRT_ENOSPC;
     1520                  return s - buf_start;
     1521                }
     1522            }
     1523        }
     1524      return s - buf_start;
     1525    }
    14311526  return -1;
    14321527}
     
    14351530 *              _putw (MSVCRT.@)
    14361531 */
    1437 int _putw(int val, MSVCRT_FILE* file)
    1438 {
    1439   return _write(file->_file, &val, sizeof(val)) == 1? val : MSVCRT_EOF;
     1532int MSVCRT__putw(int val, MSVCRT_FILE* file)
     1533{
     1534  return MSVCRT__write(file->_file, &val, sizeof(val)) == 1? val : MSVCRT_EOF;
    14401535}
    14411536
     
    14551550{
    14561551  int r;
    1457   r=_close(file->_file);
     1552  r=MSVCRT__close(file->_file);
    14581553  return ((r==MSVCRT_EOF) || (file->_flag & MSVCRT__IOERR) ? MSVCRT_EOF : 0);
    14591554}
     
    14811576{
    14821577  if(!file) {
    1483         _flushall();
     1578        MSVCRT__flushall();
    14841579        return 0;
    14851580  } else {
     
    15051600 *              _fgetchar (MSVCRT.@)
    15061601 */
    1507 int _fgetchar(void)
     1602int MSVCRT__fgetchar(void)
    15081603{
    15091604  return MSVCRT_fgetc(MSVCRT_stdin);
     
    15291624  if(file->_flag & MSVCRT__IONBF) {
    15301625        unsigned char c;
    1531         if (_read(file->_file,&c,1) != 1) {
     1626        if (MSVCRT__read(file->_file,&c,1) != 1) {
    15321627                file->_flag |= MSVCRT__IOEOF;
    15331628                return MSVCRT_EOF;
     
    15351630        return c;
    15361631  } else {
    1537         file->_cnt = _read(file->_file, file->_base, file->_bufsiz);
     1632        file->_cnt = MSVCRT__read(file->_file, file->_base, file->_bufsiz);
    15381633        if(file->_cnt<0) file->_cnt = 0;
    15391634        if(!file->_cnt) {
     
    15891684/*********************************************************************
    15901685 *              fgetwc (MSVCRT.@)
     1686 *
     1687 * In _O_TEXT mode, bultibyte characters are read from the file, dropping
     1688 * the CR from CR/LF combinations
    15911689 */
    15921690MSVCRT_wint_t MSVCRT_fgetwc(MSVCRT_FILE* file)
    15931691{
    1594   MSVCRT_wchar_t wc;
    1595   if (_read(file->_file, &wc, sizeof(wc)) != sizeof(wc))
     1692  char c;
     1693
     1694  if (file->_flag & _O_BINARY)
     1695    {
     1696      MSVCRT_wchar_t wc;
     1697      if (MSVCRT__read(file->_file, &wc, sizeof(wc)) != sizeof(wc))
     1698        return MSVCRT_WEOF;
     1699      return wc;
     1700    }
     1701  c = MSVCRT_fgetc(file);
     1702  if ((*__p___mb_cur_max() > 1) && MSVCRT_isleadbyte(c))
     1703    {
     1704      FIXME("Treat Multibyte characters\n");
     1705    }
     1706  if (c == MSVCRT_EOF)
    15961707    return MSVCRT_WEOF;
    1597   return wc;
     1708  else
     1709    return (MSVCRT_wint_t)c;
    15981710}
    15991711
     
    17211833    }
    17221834
    1723   fd = _open(path, flags);
     1835  fd = MSVCRT__open(path, flags);
    17241836
    17251837  if (fd < 0)
     
    17291841  TRACE(":got (%p)\n",file);
    17301842  if (!file)
    1731     _close(fd);
     1843    MSVCRT__close(fd);
    17321844
    17331845  return file;
     
    17621874 *              _fsopen (MSVCRT.@)
    17631875 */
    1764 MSVCRT_FILE*  _fsopen(const char *path, const char *mode, int share)
     1876MSVCRT_FILE*  MSVCRT__fsopen(const char *path, const char *mode, int share)
    17651877{
    17661878  FIXME(":(%s,%s,%d),ignoring share mode!\n",path,mode,share);
     
    18131925  } else {
    18141926        unsigned char cc=c;
    1815         return _write(file->_file, &cc, 1) == 1? c : MSVCRT_EOF;
     1927        return MSVCRT__write(file->_file, &cc, 1) == 1? c : MSVCRT_EOF;
    18161928  }
    18171929}
     
    18201932 *              _fputchar (MSVCRT.@)
    18211933 */
    1822 int _fputchar(int c)
     1934int MSVCRT__fputchar(int c)
    18231935{
    18241936  return MSVCRT_fputc(c, MSVCRT_stdout);
     
    18471959                return 0;
    18481960  }
    1849   if(rcnt) pread = _read(file->_file,ptr, rcnt);
     1961  if(rcnt) pread = MSVCRT__read(file->_file,ptr, rcnt);
    18501962  if (MSVCRT_flags[file->_file] & MSVCRT__IOEOF)
    18511963     /* expose feof condition in the flags
     
    19152027int MSVCRT_fsetpos(MSVCRT_FILE* file, MSVCRT_fpos_t *pos)
    19162028{
    1917   return _lseek(file->_file,*pos,SEEK_SET);
     2029  return MSVCRT__lseek(file->_file,*pos,SEEK_SET);
    19182030}
    19192031
     
    19372049        file->_flag &= ~(MSVCRT__IOREAD|MSVCRT__IOWRT);
    19382050  }
    1939   return (_lseek(file->_file,offset,whence) == -1)?-1:0;
     2051  return (MSVCRT__lseek(file->_file,offset,whence) == -1)?-1:0;
    19402052}
    19412053
     
    19542066        }
    19552067  }
    1956   pos = _tell(file->_file);
     2068  pos = MSVCRT__tell(file->_file);
    19572069  if(pos == -1) return pos;
    19582070  return off + pos;
     
    19862098        int res=msvcrt_flush_buffer(file);
    19872099        if(!res) {
    1988                 int pwritten = _write(file->_file, ptr, wrcnt);
     2100                int pwritten = MSVCRT__write(file->_file, ptr, wrcnt);
    19892101                if (pwritten <= 0) pwritten=0;
    19902102                written += pwritten;
     
    19992111int MSVCRT_fputs(const char *s, MSVCRT_FILE* file)
    20002112{
    2001     size_t len = strlen(s);
    2002     return MSVCRT_fwrite(s,sizeof(*s),len,file) == len ? 0 : MSVCRT_EOF;
     2113    size_t i, len = strlen(s);
     2114    if (file->_flag & _O_BINARY)
     2115      return MSVCRT_fwrite(s,sizeof(*s),len,file) == len ? 0 : MSVCRT_EOF;
     2116    for (i=0; i<len; i++)
     2117      if (MSVCRT_fputc(s[i], file) == MSVCRT_EOF)
     2118        return MSVCRT_EOF;
     2119    return 0;
    20032120}
    20042121
     
    20082125int MSVCRT_fputws(const MSVCRT_wchar_t *s, MSVCRT_FILE* file)
    20092126{
    2010     size_t len = strlenW(s);
    2011     return MSVCRT_fwrite(s,sizeof(*s),len,file) == len ? 0 : MSVCRT_EOF;
    2012 }
     2127    size_t i, len = strlenW(s);
     2128    if (file->_flag & _O_BINARY)
     2129      return MSVCRT_fwrite(s,sizeof(*s),len,file) == len ? 0 : MSVCRT_EOF;
     2130    for (i=0; i<len; i++)
     2131      {
     2132        if ((s[i] == L'\n') && (MSVCRT_fputc('\r', file) == MSVCRT_EOF))
     2133          return MSVCRT_WEOF;
     2134        if (MSVCRT_fputwc(s[i], file) == MSVCRT_WEOF)
     2135          return MSVCRT_WEOF;
     2136      }
     2137    return 0;
     2138}
     2139
    20132140
    20142141/*********************************************************************
     
    22392366  char *filename = MSVCRT_tmpnam(NULL);
    22402367  int fd;
    2241   fd = _open(filename, _O_CREAT | _O_BINARY | _O_RDWR | _O_TEMPORARY);
     2368  fd = MSVCRT__open(filename, _O_CREAT | _O_BINARY | _O_RDWR | _O_TEMPORARY);
    22422369  if (fd != -1)
    22432370    return msvcrt_alloc_fp(fd);
     
    22572384   * The code below handles both cases
    22582385   */
    2259   while ((written = vsnprintf(mem, resize, format, valist)) == -1 ||
     2386  dprintf(("MSVCRT: vfprintf %p %s",file,format));
     2387  while ((written = _vsnprintf(mem, resize, format, valist)) == -1 ||
    22602388          written > resize)
    22612389  {
     
    23982526    return res;
    23992527}
     2528
     2529/*********************************************************************
     2530 *              _wstati64 (MSVCRT.@)
     2531 */
     2532int _wstati64(const MSVCRT(wchar_t)* path, struct _stati64 * buf)
     2533{
     2534  LPSTR asciipath;
     2535  int   ret,len;
     2536
     2537  TRACE("MSVCRT: _wstati64 file (%s) %x buf(%p)\n",debugstr_w(path),sizeof(*buf),buf);
     2538 
     2539  len = WideCharToMultiByte( CP_ACP, 0, path, -1, NULL, 0, 0, NULL);
     2540  asciipath = (LPSTR)MSVCRT_malloc(len);
     2541  WideCharToMultiByte(CP_ACP, 0, path, -1, asciipath, len, 0, NULL );
     2542
     2543  ret = _stati64(asciipath,buf); 
     2544
     2545  MSVCRT_free(asciipath);
     2546
     2547  return 0;
     2548}
  • trunk/src/msvcrt/heap.c

    r9633 r10005  
    2323
    2424#include "msvcrt.h"
     25
     26#include <string.h>
     27
    2528#include "ms_errno.h"
    2629
     
    4346static int MSVCRT_new_mode;
    4447
    45 
    4648/*********************************************************************
    4749 *              ??2@YAPAXI@Z (MSVCRT.@)
     
    5052{
    5153  void *retval = HeapAlloc(GetProcessHeap(), 0, size);
    52   TRACE("(%ld) returning %p\n", size, retval);
     54  TRACE("MSVCRT: operator_new (%ld) returning %p\n", size, retval);
    5355  LOCK_HEAP;
    5456  if(!retval && MSVCRT_new_handler)
     
    6365void MSVCRT_operator_delete(void *mem)
    6466{
    65   TRACE("(%p)\n", mem);
     67  TRACE("MSVCRT: operator_delete (%p)\n", mem);
    6668  HeapFree(GetProcessHeap(), 0, mem);
    6769}
     
    7375MSVCRT_new_handler_func MSVCRT__query_new_handler(void)
    7476{
     77  dprintf(("MSVCRT: _query_new_handler"));
    7578  return MSVCRT_new_handler;
    7679}
     
    8285int MSVCRT__query_new_mode(void)
    8386{
     87  dprintf(("MSVCRT: _query_new_mode"));
    8488  return MSVCRT_new_mode;
    8589}
     
    9195{
    9296  MSVCRT_new_handler_func old_handler;
     97
     98  dprintf(("MSVCRT: _set_new_mode"));
     99
    93100  LOCK_HEAP;
    94101  old_handler = MSVCRT_new_handler;
     
    103110MSVCRT_new_handler_func MSVCRT_set_new_handler(void *func)
    104111{
    105   TRACE("(%p)\n",func);
     112  TRACE("MSVCRT: set_new_handler (%p)\n",func);
    106113  MSVCRT__set_new_handler(NULL);
    107114  return NULL;
     
    114121{
    115122  int old_mode;
     123  TRACE("MSVCRT: set_new_mode (%d)\n",mode);
    116124  LOCK_HEAP;
    117125  old_mode = MSVCRT_new_mode;
     
    126134int _callnewh(unsigned long size)
    127135{
     136  TRACE("MSVCRT: _callnewh (%d)\n",size);
    128137  if(MSVCRT_new_handler)
    129138    (*MSVCRT_new_handler)(size);
     
    136145void* _expand(void* mem, MSVCRT_size_t size)
    137146{
     147  TRACE("MSVCRT: _expand (%p)\n",mem);
    138148  return HeapReAlloc(GetProcessHeap(), HEAP_REALLOC_IN_PLACE_ONLY, mem, size);
    139149}
     
    142152 *              _heapchk (MSVCRT.@)
    143153 */
    144 int _heapchk(void)
    145 {
     154int MSVCRT__heapchk(void)
     155{
     156  TRACE("MSVCRT: _heapchk");
    146157  if (!HeapValidate( GetProcessHeap(), 0, NULL))
    147158  {
     
    155166 *              _heapmin (MSVCRT.@)
    156167 */
    157 int _heapmin(void)
    158 {
     168int MSVCRT__heapmin(void)
     169{
     170  TRACE("MSVCRT: _heapmin");
    159171  if (!HeapCompact( GetProcessHeap(), 0 ))
    160172  {
     
    169181 *              _heapwalk (MSVCRT.@)
    170182 */
    171 int _heapwalk(_HEAPINFO* next)
     183int MSVCRT__heapwalk(_HEAPINFO* next)
    172184{
    173185  PROCESS_HEAP_ENTRY phe;
     186
     187  TRACE("MSVCRT: _heapwalk");
    174188
    175189  LOCK_HEAP;
     
    210224 *              _heapset (MSVCRT.@)
    211225 */
    212 int _heapset(unsigned int value)
     226int MSVCRT__heapset(unsigned int value)
    213227{
    214228  int retval;
    215229  _HEAPINFO heap;
    216230
     231  TRACE("MSVCRT: _heapset");
     232
    217233  memset( &heap, 0, sizeof(_HEAPINFO) );
    218234  LOCK_HEAP;
    219   while ((retval = _heapwalk(&heap)) == _HEAPOK)
     235  while ((retval = MSVCRT__heapwalk(&heap)) == _HEAPOK)
    220236  {
    221237    if (heap._useflag == _FREEENTRY)
     
    229245 *              _heapadd (MSVCRT.@)
    230246 */
    231 int _heapadd(void* mem, MSVCRT_size_t size)
    232 {
    233   TRACE("(%p,%d) unsupported in Win32\n", mem,size);
     247int MSVCRT__heapadd(void* mem, MSVCRT_size_t size)
     248{
     249  TRACE("MSVCRT: _heapadd (%p,%d) unsupported in Win32\n", mem,size);
    234250  *MSVCRT__errno() = MSVCRT_ENOSYS;
    235251  return -1;
     
    239255 *              _msize (MSVCRT.@)
    240256 */
    241 MSVCRT_size_t _msize(void* mem)
     257MSVCRT_size_t MSVCRT__msize(void* mem)
    242258{
    243259  long size = HeapSize(GetProcessHeap(),0,mem);
     260
     261  TRACE("MSVCRT: _msize (%p)",mem);
     262
    244263  if (size == -1)
    245264  {
     
    255274void* MSVCRT_calloc(MSVCRT_size_t size, MSVCRT_size_t count)
    256275{
    257   return HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, size * count );
     276  void *ret;
     277  ret = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, size * count );
     278  TRACE("MSVCRT: calloc (%d,%d) returned %p",size, count, ret);
     279  return ret;
    258280}
    259281
     
    263285void MSVCRT_free(void* ptr)
    264286{
    265   dprintf(("MSVCRT_free %x ptr",ptr));
     287  dprintf(("MSVCRT: free %x ptr",ptr));
    266288  HeapFree(GetProcessHeap(),0,ptr);
    267289}
     
    269291void* MSVCRT(memset)(void* ptr,int fill,MSVCRT(size_t) size)
    270292{
    271   dprintf(("MSVCRT_memset %x(%d bytes) with %d",ptr,size,fill));
     293  dprintf(("MSVCRT: memset %x(%d bytes) with %d",ptr,size,fill));
    272294  return memset(ptr,fill,size);
    273295}
     
    276298void* MSVCRT(memcpy)(void* ptr,const void* ptr2,MSVCRT(size_t) size)
    277299{
    278   dprintf(("MSVCRT_memcpy %x->%x (%d bytes)",ptr2,ptr,size));
     300  dprintf(("MSVCRT: memcpy %x->%x (%d bytes)",ptr2,ptr,size));
    279301  return memcpy(ptr,ptr2,size);
    280302}
     
    287309{
    288310  void *ret = HeapAlloc(GetProcessHeap(),0,size);
    289   dprintf(("MSVCRT_malloc of %d size returned %x",size,ret));
     311  dprintf(("MSVCRT: malloc of %d size returned %x",size,ret));
    290312  if (!ret)
    291313    MSVCRT__set_errno(GetLastError());
     
    298320void* MSVCRT_realloc(void* ptr, MSVCRT_size_t size)
    299321{
    300   dprintf(("MSVCRT_realloc %x",ptr));
     322  dprintf(("MSVCRT: realloc %x",ptr));
    301323  return HeapReAlloc(GetProcessHeap(), 0, ptr, size);
    302324}
  • trunk/src/msvcrt/locale.c

    r9633 r10005  
    2222#else
    2323#include <emxheader.h>
     24#include <stdlib.h>
     25#include <stdio.h>
     26#include <string.h>
     27#include <ctype.h>
    2428#endif
    2529
     
    8892  for (i = 0; i < sizeof(_country_synonyms)/sizeof(char*); i += 2 )
    8993  {
    90     if (!strcasecmp(_country_synonyms[i],name))
     94    if (!_stricmp(_country_synonyms[i],name))
    9195    {
    9296      TRACE(":Mapping synonym %s to %s\n",name,_country_synonyms[i+1]);
     
    126130    return 0;
    127131  /* Partial matches are allowed, e.g. "Germ" matches "Germany" */
    128   return !strncasecmp(cmp, buff, strlen(cmp));
     132  return !_strnicmp(cmp, buff, strlen(cmp));
    129133}
    130134
     
    227231      {
    228232        /* Special codepage values: OEM & ANSI */
    229         if (strcasecmp(locale->search_codepage,"OCP"))
     233        if (_stricmp(locale->search_codepage,"OCP"))
    230234        {
    231235          GetLocaleInfoA(lcid, LOCALE_IDEFAULTCODEPAGE,
    232236                         locale->found_codepage, MAX_ELEM_LEN);
    233237        }
    234         if (strcasecmp(locale->search_codepage,"ACP"))
     238        if (_stricmp(locale->search_codepage,"ACP"))
    235239        {
    236240          GetLocaleInfoA(lcid, LOCALE_IDEFAULTANSICODEPAGE,
     
    261265}
    262266
    263 extern int snprintf(char *, int, const char *, ...);
    264267
    265268/* INTERNAL: Set ctype behaviour for a codepage */
     
    315318  int lc_all = 0;
    316319
    317   TRACE("(%d %s)\n",category,locale);
     320  TRACE("MSVCRT: setlocale (%d %s)\n",category,locale);
    318321
    319322  if (category < MSVCRT_LC_MIN || category > MSVCRT_LC_MAX)
     
    445448  MSVCRT_current_lc_all_lcid = lcid;
    446449
    447   snprintf(MSVCRT_current_lc_all,MAX_LOCALE_LENGTH,"%s_%s.%s",
     450  _snprintf(MSVCRT_current_lc_all,MAX_LOCALE_LENGTH,"%s_%s.%s",
    448451           lc.found_language,lc.found_country,lc.found_codepage);
    449452
     
    522525{
    523526  LOCK_LOCALE;
     527  dprintf(("MSVCRT: _setmbcp %d",cp));
    524528  if (MSVCRT_current_lc_all_cp != cp)
    525529  {
     
    535539int _getmbcp(void)
    536540{
     541  dprintf(("MSVCRT: _getmbcp"));
    537542  return MSVCRT_current_lc_all_cp;
    538543}
     544
     545/*********************************************************************
     546 *              __crtLCMapStringA (MSVCRT.@)
     547 */
     548int __crtLCMapStringA(
     549  LCID lcid, DWORD mapflags, const char* src, int srclen, char* dst,
     550  int dstlen, unsigned int codepage, int xflag
     551) {
     552  FIXME("(lcid %lx, flags %lx, %s(%d), %p(%d), %x, %d), partial stub!\n",
     553        lcid,mapflags,src,srclen,dst,dstlen,codepage,xflag);
     554  /* FIXME: A bit incorrect. But msvcrt itself just converts its
     555   * arguments to wide strings and then calls LCMapStringW
     556   */
     557  return LCMapStringA(lcid,mapflags,src,srclen,dst,dstlen);
     558}
  • trunk/src/msvcrt/lock.c

    r9633 r10005  
    101101void _lock( int locknum )
    102102{
    103   TRACE( "(%d)\n", locknum );
     103  TRACE( "MSVCRT: _lock (%d)\n", locknum );
    104104
    105105  /* If the lock doesn't exist yet, create it */
     
    130130void _unlock( int locknum )
    131131{
    132   TRACE( "(%d)\n", locknum );
     132  TRACE( "MSVCRT: _unlock (%d)\n", locknum );
    133133
    134134  LeaveCriticalSection( &(lock_table[ locknum ].crit) );
  • trunk/src/msvcrt/main.c

    r9633 r10005  
    2222#include "msvcrt/locale.h"
    2323#include "msvcrt/stdio.h"
    24 
     24#include <string.h>
    2525#include "wine/debug.h"
    2626
     
    4747
    4848
    49 unsigned long _DLL_InitTerm (unsigned long mod_handle,
    50                                 unsigned long flag)
    51 {
    52   switch (flag)
    53     {
    54        case 0:
    55          if (_CRT_init () != 0)
    56            return 0;
    57          __ctordtorInit ();
    58 
    59          dllHandle = RegisterLxDll(mod_handle, MSVCRT_Init, 0,0,0,0);
    60 
    61         return 1;
    62        case 1:
    63          __ctordtorTerm ();
    64          _CRT_term ();
    65 
    66          if(dllHandle) {
    67              UnregisterLxDll(dllHandle);
    68          }
    69 
    70          return 1;
    71        default:
    72          return 0;
    73        }
    74      return 1;
    75    }
    76 
    7749/*********************************************************************
    7850 *                  Init
     
    9062  {
    9163  case DLL_PROCESS_ATTACH:
    92     if (!msvcrt_init_tls())
     64   if (!msvcrt_init_tls())
    9365      return FALSE;
    9466    msvcrt_init_mt_locks();
  • trunk/src/msvcrt/mainmsvcrt20.c

    r9633 r10005  
    1818 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    1919 */
     20#include <windows.h>
     21#include <win32type.h>
     22#include <stdlib.h>
     23#include <stdio.h>
     24#include <string.h>
     25#include <odin.h>
     26#include <odinlx.h>
     27#include <misc.h>       /*PLF Wed  98-03-18 23:18:15*/
     28#include <initdll.h>
     29#include <exitlist.h>
     30#include <os2sel.h>
     31
    2032#include "msvcrt.h"
    2133#define TLS_OUT_OF_INDEXES ((DWORD)0xFFFFFFFF)
     
    3749typedef void (*MSVCRT_free_func)(void*);
    3850
    39 int _CRT_init (void);
    40 void _CRT_term (void);
    41 void __ctordtorInit (void);
    42 void __ctordtorTerm (void);
    43 
    4451static HMODULE dllHandle = 0;
    4552
     
    5360    {
    5461       case 0:
    55          if (_CRT_init () != 0)
    56            return 0;
    57          __ctordtorInit ();
    5862
    5963         dllHandle = RegisterLxDll(mod_handle, MSVCRT20_Init, 0,0,0,0);
     64         return 1;
    6065
    61         return 1;
    6266       case 1:
    63          __ctordtorTerm ();
    64          _CRT_term ();
    6567
    6668         if(dllHandle) {
    6769             UnregisterLxDll(dllHandle);
    6870         }
     71         return 1;
    6972
    70          return 1;
    7173       default:
    7274         return 0;
     
    8082BOOL WINAPI MSVCRT20_Init(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
    8183{
    82  return MSVCRT_Init(hinstDLL, fdwReason, lpvReserved);
     84 return TRUE;
    8385}
    8486 
  • trunk/src/msvcrt/mainmsvcrt40.c

    r9633 r10005  
    1818 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    1919 */
     20
     21#include <windows.h>
     22#include <win32type.h>
     23#include <stdlib.h>
     24#include <stdio.h>
     25#include <string.h>
     26#include <odin.h>
     27#include <odinlx.h>
     28#include <misc.h>       /*PLF Wed  98-03-18 23:18:15*/
     29#include <initdll.h>
     30#include <exitlist.h>
     31#include <os2sel.h>
     32
    2033#include "msvcrt.h"
    2134#define TLS_OUT_OF_INDEXES ((DWORD)0xFFFFFFFF)
     
    3750typedef void (*MSVCRT_free_func)(void*);
    3851
    39 int _CRT_init (void);
    40 void _CRT_term (void);
    41 void __ctordtorInit (void);
    42 void __ctordtorTerm (void);
    43 
    4452static HMODULE dllHandle = 0;
    4553
     
    5361    {
    5462       case 0:
    55          if (_CRT_init () != 0)
    56            return 0;
    57          __ctordtorInit ();
    58 
    5963         dllHandle = RegisterLxDll(mod_handle, MSVCRT40_Init, 0,0,0,0);
    60 
    61         return 1;
     64         return 1;
    6265       case 1:
    63          __ctordtorTerm ();
    64          _CRT_term ();
    6566
    6667         if(dllHandle) {
     
    8081BOOL WINAPI MSVCRT40_Init(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
    8182{
    82  return MSVCRT_Init(hinstDLL, fdwReason, lpvReserved);
     83 return TRUE;
    8384}
    8485 
  • trunk/src/msvcrt/math.c

    r9633 r10005  
    2020#ifdef __WIN32OS2__
    2121#include <emxheader.h>
     22#include <stdlib.h>
     23#include <string.h>
     24#include <math.h>
     25extern double logb(double);
     26extern double scalb(double,double);
    2227#else
    2328#include "config.h"
     
    2934#define __USE_ISOC9X 1
    3035#define __USE_ISOC99 1
    31 #include <math.h>
     36
    3237#ifdef HAVE_IEEEFP_H
    3338#include <ieeefp.h>
     
    4348#ifndef finite /* Could be a macro */
    4449#ifdef isfinite
    45 #define finite(x) isfinite(x)
     50#define finite(x) isfinite(x) 
    4651#else
    4752#define finite(x) (!isnan(x)) /* At least catch some cases */
     
    135140{
    136141  FPU_DOUBLE(x);
     142  dprintf(("MSVCRT: _CIacos"));
    137143  if (x < -1.0 || x > 1.0 || !finite(x)) *MSVCRT__errno() = MSVCRT_EDOM;
    138144  return acos(x);
     
    145151{
    146152  FPU_DOUBLE(x);
     153  dprintf(("MSVCRT: _CIacos"));
    147154  if (x < -1.0 || x > 1.0 || !finite(x)) *MSVCRT__errno() = MSVCRT_EDOM;
    148155  return asin(x);
     
    155162{
    156163  FPU_DOUBLE(x);
     164  dprintf(("MSVCRT: _CIacos"));
    157165  if (!finite(x)) *MSVCRT__errno() = MSVCRT_EDOM;
    158166  return atan(x);
     
    165173{
    166174  FPU_DOUBLES(x,y);
     175  dprintf(("MSVCRT: _CIacos"));
    167176  if (!finite(x)) *MSVCRT__errno() = MSVCRT_EDOM;
    168177  return atan2(x,y);
     
    175184{
    176185  FPU_DOUBLE(x);
     186  dprintf(("MSVCRT: _CIacos"));
    177187  if (!finite(x)) *MSVCRT__errno() = MSVCRT_EDOM;
    178188  return cos(x);
     
    185195{
    186196  FPU_DOUBLE(x);
     197  dprintf(("MSVCRT: _CIacos"));
    187198  if (!finite(x)) *MSVCRT__errno() = MSVCRT_EDOM;
    188199  return cosh(x);
     
    195206{
    196207  FPU_DOUBLE(x);
     208  dprintf(("MSVCRT: _CIacos"));
    197209  if (!finite(x)) *MSVCRT__errno() = MSVCRT_EDOM;
    198210  return exp(x);
     
    205217{
    206218  FPU_DOUBLES(x,y);
    207   if (!finite(x) || !finite(y)) *MSVCRT__errno() = MSVCRT_EDOM;
     219  dprintf(("MSVCRT: _CIfmod %f %f",x,y)); 
     220  if (!finite(x) || !finite(y)) { *MSVCRT__errno() = MSVCRT_EDOM; dprintf(("ERROR!")); }
     221  dprintf(("MSVCRT: _CIfmod returning %f",fmod(x,y))); 
    208222  return fmod(x,y);
    209223}
     
    215229{
    216230  FPU_DOUBLE(x);
     231  dprintf(("MSVCRT: _CIacos"));
    217232  if (x < 0.0 || !finite(x)) *MSVCRT__errno() = MSVCRT_EDOM;
    218233  if (x == 0.0) *MSVCRT__errno() = MSVCRT_ERANGE;
     
    226241{
    227242  FPU_DOUBLE(x);
     243  dprintf(("MSVCRT: _CIacos"));
    228244  if (x < 0.0 || !finite(x)) *MSVCRT__errno() = MSVCRT_EDOM;
    229245  if (x == 0.0) *MSVCRT__errno() = MSVCRT_ERANGE;
     
    238254  double z;
    239255  FPU_DOUBLES(x,y);
     256  dprintf(("MSVCRT: _CIacos"));
    240257  /* FIXME: If x < 0 and y is not integral, set EDOM */
    241258  z = pow(x,y);
     
    250267{
    251268  FPU_DOUBLE(x);
     269  dprintf(("MSVCRT: _CIacos"));
    252270  if (!finite(x)) *MSVCRT__errno() = MSVCRT_EDOM;
    253271  return sin(x);
     
    260278{
    261279  FPU_DOUBLE(x);
     280  dprintf(("MSVCRT: _CIacos"));
    262281  if (!finite(x)) *MSVCRT__errno() = MSVCRT_EDOM;
    263282  return sinh(x);
     
    270289{
    271290  FPU_DOUBLE(x);
     291  dprintf(("MSVCRT: _CIacos"));
    272292  if (x < 0.0 || !finite(x)) *MSVCRT__errno() = MSVCRT_EDOM;
    273293  return sqrt(x);
     
    280300{
    281301  FPU_DOUBLE(x);
     302  dprintf(("MSVCRT: _CIacos"));
    282303  if (!finite(x)) *MSVCRT__errno() = MSVCRT_EDOM;
    283304  return tan(x);
     
    290311{
    291312  FPU_DOUBLE(x);
     313  dprintf(("MSVCRT: _CIacos"));
    292314  if (!finite(x)) *MSVCRT__errno() = MSVCRT_EDOM;
    293315  return tanh(x);
     
    324346int _fpclass(double num)
    325347{
     348  dprintf(("MSVCRT: _fpclass"));
    326349#if defined(HAVE_FPCLASS) || defined(fpclass)
    327350  switch (fpclass( num ))
     
    358381 *              _rotl (MSVCRT.@)
    359382 */
    360 unsigned int _rotl(unsigned int num, int shift)
     383unsigned int MSVCRT__rotl(unsigned int num, int shift)
    361384{
    362385  shift &= 31;
     
    369392double _logb(double num)
    370393{
     394  dprintf(("MSVCRT: _logb"));
    371395  if (!finite(num)) *MSVCRT__errno() = MSVCRT_EDOM;
    372396  return logb(num);
     
    376400 *              _lrotl (MSVCRT.@)
    377401 */
    378 unsigned long _lrotl(unsigned long num, int shift)
    379 {
     402unsigned long MSVCRT__lrotl(unsigned long num, int shift)
     403{
     404  dprintf(("MSVCRT: _lrotl"));
    380405  shift &= 0x1f;
    381406  return (num << shift) | (num >> (32-shift));
     
    385410 *              _lrotr (MSVCRT.@)
    386411 */
    387 unsigned long _lrotr(unsigned long num, int shift)
    388 {
     412unsigned long MSVCRT__lrotr(unsigned long num, int shift)
     413{
     414  dprintf(("MSVCRT: _lrotr"));
    389415  shift &= 0x1f;
    390416  return (num >> shift) | (num << (32-shift));
     
    394420 *              _rotr (MSVCRT.@)
    395421 */
    396 unsigned int _rotr(unsigned int num, int shift)
    397 {
     422unsigned int MSVCRT__rotr(unsigned int num, int shift)
     423{
     424    dprintf(("MSVCRT: _rotr"));
    398425    shift &= 0x1f;
    399426    return (num >> shift) | (num << (32-shift));
     
    406433{
    407434  /* Note - Can't forward directly as libc expects y as double */
     435  dprintf(("MSVCRT: _scalb"));
    408436  double dblpower = (double)power;
    409437  if (!finite(num)) *MSVCRT__errno() = MSVCRT_EDOM;
     
    414442 *              _matherr (MSVCRT.@)
    415443 */
    416 int _matherr(MSVCRT_exception *e)
     444int MSVCRT__matherr(MSVCRT_exception *e)
    417445{
    418446  if (e)
     
    478506{
    479507  double z = ldexp(num,exp);
    480 
     508  dprintf(("MSVCRT: ldexpp"));
    481509  if (!finite(z))
    482510    *MSVCRT__errno() = MSVCRT_ERANGE;
     
    489517 *              _cabs (MSVCRT.@)
    490518 */
    491 double _cabs(MSVCRT_complex num)
    492 {
     519double MSVCRT__cabs(MSVCRT_complex num)
     520{
     521  dprintf(("MSVCRT: _cabs"));
    493522  return sqrt(num.real * num.real + num.imaginary * num.imaginary);
    494523}
     
    499528double _chgsign(double num)
    500529{
     530   dprintf(("MSVCRT: _chgsign"));
    501531  /* FIXME: +-infinity,Nan not tested */
    502532  return -num;
     
    506536 *              _control87 (MSVCRT.@)
    507537 */
    508 unsigned int _control87(unsigned int newval, unsigned int mask)
     538unsigned int MSVCRT__control87(unsigned int newval, unsigned int mask)
    509539{
    510540#if defined(__GNUC__) && defined(__i386__)
     
    579609{
    580610#ifdef __i386__
    581   return _control87( newval, mask & ~_EM_DENORMAL );
     611  return MSVCRT__control87( newval, mask & ~_EM_DENORMAL );
    582612#else
    583613  FIXME(":Not Implemented!\n");
     
    589619 *              _copysign (MSVCRT.@)
    590620 */
    591 double _copysign(double num, double sign)
    592 {
     621double MSVCRT__copysign(double num, double sign)
     622{
     623  dprintf(("MSVCRT: _CIacos"));
    593624  /* FIXME: Behaviour for Nan/Inf? */
    594625  if (sign < 0.0)
     
    602633int  _finite(double num)
    603634{
     635  dprintf(("MSVCRT: _finite for %f returns %d",num, finite(num)?1:0));
    604636  return (finite(num)?1:0); /* See comment for _isnan() */
    605637}
     
    608640 *              _fpreset (MSVCRT.@)
    609641 */
    610 void _fpreset(void)
     642void MSVCRT__fpreset(void)
    611643{
    612644#if defined(__GNUC__) && defined(__i386__)
     
    625657   * Do the same, as the result may be used in calculations
    626658   */
     659  dprintf(("MSVCRT: _isnan for %f returns %d",num, isnan(num)?1:0));
    627660  return isnan(num) ? 1 : 0;
    628661}
     
    631664 *              _y0 (MSVCRT.@)
    632665 */
    633 double _y0(double num)
     666double MSVCRT__y0(double num)
    634667{
    635668  double retval;
     669  dprintf(("MSVCRT: _CIacos"));
    636670  if (!finite(num)) *MSVCRT__errno() = MSVCRT_EDOM;
    637671  retval  = y0(num);
     
    647681 *              _y1 (MSVCRT.@)
    648682 */
    649 double _y1(double num)
     683double MSVCRT__y1(double num)
    650684{
    651685  double retval;
     686  dprintf(("MSVCRT: _CIacos"));
    652687  if (!finite(num)) *MSVCRT__errno() = MSVCRT_EDOM;
    653688  retval  = y1(num);
     
    663698 *              _yn (MSVCRT.@)
    664699 */
    665 double _yn(int order, double num)
     700double MSVCRT__yn(int order, double num)
    666701{
    667702  double retval;
     703  dprintf(("MSVCRT: _CIacos"));
    668704  if (!finite(num)) *MSVCRT__errno() = MSVCRT_EDOM;
    669705  retval  = yn(order,num);
     
    679715 *              _nextafter (MSVCRT.@)
    680716 */
    681 double _nextafter(double num, double next)
     717double MSVCRT__nextafter(double num, double next)
    682718{
    683719  double retval;
     720  dprintf(("MSVCRT: _CIacos"));
    684721  if (!finite(num) || !finite(next)) *MSVCRT__errno() = MSVCRT_EDOM;
    685   retval = nextafter(num,next);
     722  retval = MSVCRT__nextafter(num,next);
    686723  return retval;
     724}
     725
     726/*********************************************************************
     727 *              _ecvt (MSVCRT.@)
     728 */
     729char *_ecvt( double number, int ndigits, int *decpt, int *sign )
     730{
     731    MSVCRT_thread_data *data = msvcrt_get_thread_data();
     732    char *dec;
     733
     734    if (!data->efcvt_buffer)
     735        data->efcvt_buffer = MSVCRT_malloc( 80 ); /* ought to be enough */
     736
     737    _snprintf(data->efcvt_buffer, 80, "%.*e", ndigits /* FIXME wrong */, number);
     738    *sign = (number < 0);
     739    dec = strchr(data->efcvt_buffer, '.');
     740    *decpt = (dec) ? dec - data->efcvt_buffer : -1;
     741    return data->efcvt_buffer;
     742}
     743
     744/***********************************************************************
     745 *              _fcvt  (MSVCRT.@)
     746 */
     747char *_fcvt( double number, int ndigits, int *decpt, int *sign )
     748{
     749    MSVCRT_thread_data *data = msvcrt_get_thread_data();
     750    char *dec;
     751
     752    if (!data->efcvt_buffer)
     753        data->efcvt_buffer = MSVCRT_malloc( 80 ); /* ought to be enough */
     754
     755    _snprintf(data->efcvt_buffer, 80, "%.*e", ndigits, number);
     756    *sign = (number < 0);
     757    dec = strchr(data->efcvt_buffer, '.');
     758    *decpt = (dec) ? dec - data->efcvt_buffer : -1;
     759    return data->efcvt_buffer;
     760}
     761
     762/***********************************************************************
     763 *              _gcvt  (MSVCRT.@)
     764 *
     765 * FIXME: uses both E and F.
     766 */
     767char *MSVCRT__gcvt( double number, int ndigit, char *buff )
     768{
     769    sprintf(buff, "%.*E", ndigit, number);
     770    return buff;
    687771}
    688772
     
    695779 */
    696780#ifdef __i386__
    697 LONGLONG MSVCRT_div(int num, int denom)
    698 {
    699   LONGLONG retval;
     781long long MSVCRT_div(int num, int denom)
     782{
     783  long long retval;
    700784  div_t dt = div(num,denom);
    701   retval = ((LONGLONG)dt.rem << 32) | dt.quot;
     785  dprintf(("MSVCRT: div"));
     786  retval = ((long long)dt.rem << 32) | dt.quot;
    702787  return retval;
    703788}
     
    731816  ULONGLONG retval;
    732817  ldiv_t ldt = ldiv(num,denom);
     818  dprintf(("MSVCRT: ldiv"));
    733819  retval = ((ULONGLONG)ldt.rem << 32) | (ULONG)ldt.quot;
    734820  return retval;
     
    10011087  TRACE("(): stub\n");
    10021088}
     1089
     1090
     1091double MSVCRT_atof (__const__ char * str)
     1092{
     1093 double res;
     1094 res = atof(str);
     1095 dprintf(("MSVCRT: _atof - convert %s - result %f",str,res));
     1096 return res;
     1097}
  • trunk/src/msvcrt/mbcs.c

    r9633 r10005  
    3535#include "wine/debug.h"
    3636
     37#include <string.h>
     38#include <ctype.h>
     39
    3740WINE_DEFAULT_DEBUG_CHANNEL(msvcrt);
    3841
     
    6770unsigned char* __p__mbctype(void)
    6871{
     72  dprintf(("MSVCRT: Query for __p__mbctype"));
    6973  return MSVCRT_mbctype;
    7074}
     
    7579int* __p___mb_cur_max(void)
    7680{
     81  dprintf(("MSVCRT: Query for __p__mb_cur_max"));
    7782  return &MSVCRT___mb_cur_max;
    7883}
     
    8388unsigned int _mbsnextc(const unsigned char* str)
    8489{
     90  dprintf(("MSVCRT: _mbsnextc"));
    8591  if(MSVCRT___mb_cur_max > 1 && MSVCRT_isleadbyte(*str))
    8692    return *str << 8 | str[1];
     
    9399unsigned int _mbctolower(unsigned int c)
    94100{
     101    dprintf(("MSVCRT: _mbctolower"));
    95102    if (MSVCRT_isleadbyte(c))
    96103    {
     
    106113unsigned int _mbctoupper(unsigned int c)
    107114{
     115     dprintf(("MSVCRT: _mbctoupper"));
    108116    if (MSVCRT_isleadbyte(c))
    109117    {
     
    119127unsigned char* _mbsdec(const unsigned char* start, const unsigned char* cur)
    120128{
     129  dprintf(("MSVCRT: _mbsdec"));
    121130  if(MSVCRT___mb_cur_max > 1)
    122131    return (char *)(_ismbstrail(start,cur-1) ? cur - 2 : cur -1);
     
    130139unsigned char* _mbsinc(const unsigned char* str)
    131140{
     141  dprintf(("MSVCRT: _mbsinc"));
    132142  if(MSVCRT___mb_cur_max > 1 && MSVCRT_isleadbyte(*str))
    133143    return (unsigned char*)str + 2; /* MB char */
     
    141151unsigned char* _mbsninc(const unsigned char* str, MSVCRT_size_t num)
    142152{
     153  dprintf(("MSVCRT: _mbsninc"));
    143154  if(!str || num < 1)
    144155    return NULL;
     
    157168unsigned int _mbclen(const unsigned char* str)
    158169{
     170  dprintf(("MSVCRT: _mbclen"));
    159171  return MSVCRT_isleadbyte(*str) ? 2 : 1;
    160172}
     
    165177int MSVCRT_mblen(const char* str, MSVCRT_size_t size)
    166178{
     179  dprintf(("MSVCRT: mblen"));
    167180  if (str && *str && size)
    168181  {
     
    180193MSVCRT_size_t _mbslen(const unsigned char* str)
    181194{
     195  dprintf(("MSVCRT: _mbslen"));
    182196  if(MSVCRT___mb_cur_max > 1)
    183197  {
     
    198212MSVCRT_size_t _mbstrlen(const char* str)
    199213{
     214  dprintf(("MSVCRT: _mbstrlen"));
    200215  if(MSVCRT___mb_cur_max > 1)
    201216  {
     
    219234void _mbccpy(unsigned char* dest, const unsigned char* src)
    220235{
     236  dprintf(("MSVCRT: _mbccpy"));
    221237  *dest++ = *src;
    222238  if(MSVCRT___mb_cur_max > 1 && MSVCRT_isleadbyte(*src))
     
    231247unsigned char* _mbsncpy(unsigned char* dst, const unsigned char* src, MSVCRT_size_t n)
    232248{
     249  dprintf(("MSVCRT: _mbsncpy"));
    233250  if(!n)
    234251    return dst;
     
    254271unsigned char* _mbsnbcpy(unsigned char* dst, const unsigned char* src, MSVCRT_size_t n)
    255272{
     273  dprintf(("MSVCRT: _mbsnbcpy"));
    256274  if(!n)
    257275    return dst;
     
    288306int _mbscmp(const unsigned char* str, const unsigned char* cmp)
    289307{
     308  dprintf(("MSVCRT: _mbscmp"));
    290309  if(MSVCRT___mb_cur_max > 1)
    291310  {
     
    308327
    309328/*********************************************************************
    310  *              _mbsicmp(MSVCRT.@)
    311  */
    312 int _mbsicmp(const unsigned char* str, const unsigned char* cmp)
     329 *              _mbsicoll(MSVCRT.@)
     330 * FIXME: handle locales.
     331 */
     332int _mbsicoll(const unsigned char* str, const unsigned char* cmp)
    313333{
    314334  if(MSVCRT___mb_cur_max > 1)
     
    332352
    333353/*********************************************************************
     354 *              _mbsicmp(MSVCRT.@)
     355 */
     356int _mbsicmp(const unsigned char* str, const unsigned char* cmp)
     357{
     358  dprintf(("MSVCRT: _mbsicmp"));
     359  if(MSVCRT___mb_cur_max > 1)
     360  {
     361    unsigned int strc, cmpc;
     362    do {
     363      if(!*str)
     364        return *cmp ? -1 : 0;
     365      if(!*cmp)
     366        return 1;
     367      strc = _mbctolower(_mbsnextc(str));
     368      cmpc = _mbctolower(_mbsnextc(cmp));
     369      if(strc != cmpc)
     370        return strc < cmpc ? -1 : 1;
     371      str +=(strc > 255) ? 2 : 1;
     372      cmp +=(strc > 255) ? 2 : 1; /* equal, use same increment */
     373    } while(1);
     374  }
     375  return _stricmp(str, cmp); /* ASCII CP */
     376}
     377
     378/*********************************************************************
    334379 *              _mbsncmp(MSVCRT.@)
    335380 */
    336381int _mbsncmp(const unsigned char* str, const unsigned char* cmp, MSVCRT_size_t len)
    337382{
     383  dprintf(("MSVCRT: _mbsncmp"));
    338384  if(!len)
    339385    return 0;
     
    367413int _mbsnbcmp(const unsigned char* str, const unsigned char* cmp, MSVCRT_size_t len)
    368414{
     415  dprintf(("MSVCRT: _mbsnbcmp"));
    369416  if (!len)
    370417    return 0;
     
    412459int _mbsnicmp(const unsigned char* str, const unsigned char* cmp, MSVCRT_size_t len)
    413460{
     461  dprintf(("MSVCRT: _mbsnicmp"));
    414462  /* FIXME: No tolower() for mb strings yet */
    415463  if(MSVCRT___mb_cur_max > 1)
     
    439487int _mbsnbicmp(const unsigned char* str, const unsigned char* cmp, MSVCRT_size_t len)
    440488{
     489  dprintf(("MSVCRT: _mbsnbicmp"));
    441490  if (!len)
    442491    return 0;
     
    486535unsigned char* _mbschr(const unsigned char* s, unsigned int x)
    487536{
     537  dprintf(("MSVCRT: _mbschr"));
    488538  if(MSVCRT___mb_cur_max > 1)
    489539  {
     
    507557unsigned char* _mbsrchr(const unsigned char* s, unsigned int x)
    508558{
     559  dprintf(("MSVCRT: _mbsrchr"));
    509560  if(MSVCRT___mb_cur_max > 1)
    510561  {
     
    526577
    527578/*********************************************************************
     579 *              _mbstok(MSVCRT.@)
     580 *
     581 * Find and extract tokens from strings
     582 */
     583unsigned char* _mbstok(unsigned char *str, const unsigned char *delim)
     584{
     585    MSVCRT_thread_data *data = msvcrt_get_thread_data();
     586    char *ret;
     587
     588    if(MSVCRT___mb_cur_max > 1)
     589    {
     590        unsigned int c;
     591
     592        if (!str)
     593            if (!(str = data->mbstok_next)) return NULL;
     594
     595        while ((c = _mbsnextc(str)) && _mbschr(delim, c)) {
     596            str += c > 255 ? 2 : 1;
     597        }
     598        if (!*str) return NULL;
     599        ret = str++;
     600        while ((c = _mbsnextc(str)) && !_mbschr(delim, c)) {
     601            str += c > 255 ? 2 : 1;
     602        }
     603        if (*str) {
     604            *str++ = 0;
     605            if (c > 255) *str++ = 0;
     606        }
     607        data->mbstok_next = str;
     608        return ret;
     609    }
     610    return strtok(str, delim);  /* ASCII CP */
     611}
     612
     613/*********************************************************************
    528614 *              mbtowc(MSVCRT.@)
    529615 */
    530616int MSVCRT_mbtowc(MSVCRT_wchar_t *dst, const char* str, MSVCRT_size_t n)
    531617{
     618  dprintf(("MSVCRT: _mbtowc"));
    532619  if(n <= 0 || !str)
    533620    return 0;
     
    547634unsigned int _mbbtombc(unsigned int c)
    548635{
     636  dprintf(("MSVCRT: _mbbtombc"));
    549637  if(MSVCRT___mb_cur_max > 1 &&
    550638     ((c >= 0x20 && c <=0x7e) ||(c >= 0xa1 && c <= 0xdf)))
     
    562650int _ismbbkana(unsigned int c)
    563651{
     652  dprintf(("MSVCRT: _ismbbkana"));
    564653  /* FIXME: use lc_ctype when supported, not lc_all */
    565654  if(MSVCRT_current_lc_all_cp == 932)
     
    577666{
    578667    MSVCRT_wchar_t wch = msvcrt_mbc_to_wc( ch );
     668    dprintf(("MSVCRT: _ismbcdigit"));
    579669    return (get_char_typeW( wch ) & C1_DIGIT);
    580670}
     
    752842
    753843  if(MSVCRT___mb_cur_max == 1 || c < 256)
    754     return _strset(str, c); /* ASCII CP or SB char */
     844    return MSVCRT__strset(str, c); /* ASCII CP or SB char */
    755845
    756846  c &= 0xffff; /* Strip high bits */
     
    768858
    769859/*********************************************************************
     860 *              _mbsnbset(MSVCRT.@)
     861 */
     862unsigned char* _mbsnbset(unsigned char *str, unsigned int c, MSVCRT_size_t len)
     863{
     864    unsigned char *ret = str;
     865
     866    if(!len)
     867        return ret;
     868
     869    if(MSVCRT___mb_cur_max == 1 || c < 256)
     870        return _strnset(str, c, len); /* ASCII CP or SB char */
     871
     872    c &= 0xffff; /* Strip high bits */
     873
     874    while(str[0] && str[1] && (len > 1))
     875    {
     876        *str++ = c >> 8;
     877        len--;
     878        *str++ = c & 0xff;
     879        len--;
     880    }
     881    if(len && str[0]) {
     882        /* as per msdn pad with a blank character */
     883        str[0] = ' ';
     884    }
     885
     886    return ret;
     887}
     888
     889/*********************************************************************
    770890 *              _mbsnset(MSVCRT.@)
    771891 */
     
    778898
    779899  if(MSVCRT___mb_cur_max == 1 || c < 256)
    780     return _strnset(str, c, len); /* ASCII CP or SB char */
     900    return MSVCRT__strnset(str, c, len); /* ASCII CP or SB char */
    781901
    782902  c &= 0xffff; /* Strip high bits */
     
    842962}
    843963
     964
     965/*********************************************************************
     966 *              _mbsnbcat(MSVCRT.@)
     967 */
     968unsigned char* _mbsnbcat(unsigned char* dst, const unsigned char* src, MSVCRT_size_t len)
     969{
     970    if(MSVCRT___mb_cur_max > 1)
     971    {
     972        char *res = dst;
     973        while (*dst) {
     974            if (MSVCRT_isleadbyte(*dst++)) {
     975                if (*dst) {
     976                    dst++;
     977                } else {
     978                    /* as per msdn overwrite the lead byte in front of '\0' */
     979                    dst--;
     980                    break;
     981                }
     982            }
     983        }
     984        while (*src && len--) *dst++ = *src++;
     985        *dst = '\0';
     986        return res;
     987    }
     988    return strncat(dst, src, len); /* ASCII CP */
     989}
    844990
    845991/*********************************************************************
  • trunk/src/msvcrt/misc.c

    r9633 r10005  
    2121#include "msvcrt.h"
    2222#include <stdlib.h>
    23 
     23#include <string.h>
     24#include <math.h>
     25#include "emxheader.h"
    2426#include "msvcrt/stdlib.h"
    2527
     
    5052 *              _sleep (MSVCRT.@)
    5153 */
    52 void _sleep(unsigned long timeout)
     54void MSVCRT__sleep(unsigned long timeout)
    5355{
    5456  TRACE("_sleep for %ld milliseconds\n",timeout);
     
    5961 *              _lfind (MSVCRT.@)
    6062 */
    61 void* _lfind(const void* match, const void* start,
     63void* MSVCRT__lfind(const void* match, const void* start,
    6264             unsigned int* array_size, unsigned int elem_size,
    6365             MSVCRT_compar_fn_t cf)
    6466{
    6567  unsigned int size = *array_size;
     68  dprintf(("MSVCRT: _lfind"));
    6669  if (size)
    6770    do
     
    7780 *              _lsearch (MSVCRT.@)
    7881 */
    79 void* _lsearch(const void* match, void* start,
     82void* MSVCRT__lsearch(const void* match, void* start,
    8083               unsigned int* array_size, unsigned int elem_size,
    8184               MSVCRT_compar_fn_t cf)
    8285{
    8386  unsigned int size = *array_size;
     87  dprintf(("MSVCRT: _lsearch"));
    8488  if (size)
    8589    do
     
    96100}
    97101
     102
    98103/*********************************************************************
    99104 *              _chkesp (MSVCRT.@)
     105 *
     106 * Trap to a debugger if the value of the stack pointer has changed.
     107 *
     108 * PARAMS
     109 *  None.
     110 *
     111 * RETURNS
     112 *  Does not return.
     113 *
     114 * NOTES
     115 *  This function is available for iX86 only.
     116 *
     117 *  When VC++ generates debug code, it stores the value of the stack pointer
     118 *  before calling any external function, and checks the value following
     119 *  the call. It then calls this function, which will trap if the values are
     120 *  not the same. Usually this means that the prototype used to call
     121 *  the function is incorrect.  It can also mean that the .spec entry has
     122 *  the wrong calling convention or parameters.
    100123 */
    101 void _chkesp(void)
     124#ifdef __i386__
     125
     126# ifdef __GNUC__
     127__ASM_GLOBAL_FUNC(_chkesp,
     128                  "jnz 1f\n\t"
     129                  "ret\n"
     130                  "1:\tpushl %ebp\n\t"
     131                  "movl %esp,%ebp\n\t"
     132                  "pushl %eax\n\t"
     133                  "pushl %ecx\n\t"
     134                  "pushl %edx\n\t"
     135                  "call " __ASM_NAME("MSVCRT_chkesp_fail") "\n\t"
     136                  "popl %edx\n\t"
     137                  "popl %ecx\n\t"
     138                  "popl %eax\n\t"
     139                  "popl %ebp\n\t"
     140                  "ret");
     141
     142void MSVCRT_chkesp_fail(void)
    102143{
     144  ERR("Stack pointer incorrect after last function call - Bad prototype/spec entry?\n");
     145  DebugBreak();
     146}
    103147
    104 }
     148# else  /* __GNUC__ */
     149void _chkesp(void) { }
     150# endif  /* __GNUC__ */
     151
     152#endif  /* __i386__ */
     153
     154
    105155
    106156#ifdef __WIN32OS2__
     
    116166 *      [GNUC && i386]
    117167 */
     168double _emx_rint (double);
     169
    118170#if defined(__GNUC__) && defined(__i386__)
    119 LONG __cdecl _ftol(void)
     171LONGLONG __cdecl _ftol(double fl)
    120172{
    121173        /* don't just do DO_FPU("fistp",retval), because the rounding
    122174         * mode must also be set to "round towards zero"... */
    123         double fl;
    124175        POP_FPU(fl);
    125         return (LONG)fl;
     176        return (LONGLONG)(fl);
     177
    126178}
    127179#endif /* defined(__GNUC__) && defined(__i386__) */
  • trunk/src/msvcrt/msvcrt.def

    r9677 r10005  
    44
    55IMPORTS
    6   KERNEL32_threadhandle = KERNEL32.308
    7   KERNEL32_threadid = KERNEL32.309
    8   KERNEL32_GetCurrentProcessId = KERNEL32.307
    9   KERNEL32_GetProcAddress = KERNEL32.372
    10   KERNEL32_GetLogicalDrives = KERNEL32.346
    116  NTDLL_memicmp = NTDLL.956
    127  NTDLL_wcsicmp = NTDLL._wcsicmp
    138  NTDLL_wcsupr = NTDLL._wcsupr
    14   WriteLog = KERNEL32.1202
    15   GetCurrentThreadId = KERNEL32.309
    16   ; Due to problem with _stdcall convention here is a large import table
    17   ; This is a temporary measure and soon it will be fixed (GCC-3.2)
    18   ; KERNEL32 imports
    19   Beep = KERNEL32.110
    20   CloseHandle = KERNEL32.137
    21   CreateDirectoryA = KERNEL32.152
    22   CreateDirectoryW = KERNEL32.155
    23   CreateFileA = KERNEL32.158
    24   CreateProcessA = KERNEL32.171
    25   CreateThread = KERNEL32.178
    26   DeleteCriticalSection = KERNEL32.185
    27   DeleteFileA = KERNEL32.186
    28   DeleteFileW = KERNEL32.187
    29   DuplicateHandle = KERNEL32.192
    30   EnterCriticalSection = KERNEL32.195
    31   EnumResourceLanguagesA = KERNEL32.200
    32   ExitProcess =  KERNEL32.214
    33   ExitThread = KERNEL32.215
    34   FindClose = KERNEL32.246
    35   FindFirstFileA = KERNEL32.250
    36   FindFirstFileW = KERNEL32.251
    37   FindNextFileA = KERNEL32.253
    38   FindNextFileW = KERNEL32.254
    39   FlushFileBuffers = KERNEL32.260
    40   FreeEnvironmentStringsA = KERNEL32.268
    41   FreeEnvironmentStringsW = KERNEL32.269
    42   FreeLibrary = KERNEL32.271
    43   GetACP = KERNEL32.276
    44   GetCPInfo = KERNEL32.282
    45   GetCommandLineA = KERNEL32.289
    46   GetConsoleMode = KERNEL32.297
    47   GetCurrentDirectoryA = KERNEL32.304
    48   GetCurrentDirectoryW = KERNEL32.305
    49   GetCurrentProcess = KERNEL32.306
    50   GetCurrentProcessId = KERNEL32.307
    51   GetDiskFreeSpaceA = KERNEL32.315
    52   GetDriveTypeA = KERNEL32.317
    53   GetDriveTypeW = KERNEL32.318
    54   GetEnvironmentStringsA = KERNEL32.320
    55   GetEnvironmentStringsW = KERNEL32.321
    56   GetExitCodeProcess = KERNEL32.325
    57   GetFileAttributesA = KERNEL32.327
    58   GetFileAttributesExA =  KERNEL32.874
    59   GetFileAttributesExW =  KERNEL32.875
    60   GetFileAttributesW = KERNEL32.328
    61   GetFileInformationByHandle = KERNEL32.329
    62   GetFileType = KERNEL32.332
    63   GetFullPathNameA = KERNEL32.333
    64   GetFullPathNameW = KERNEL32.334
    65   GetLastError = KERNEL32.340
    66   GetLocaleInfoA = KERNEL32.342
    67   GetModuleFileNameA = KERNEL32.348
    68   GetModuleHandleA = KERNEL32.350
    69   GetNumberOfConsoleInputEvents = KERNEL32.357
    70   GetProcessHeap = KERNEL32.375
    71   GetStdHandle = KERNEL32.395
    72   GetStringTypeA = KERNEL32.396
    73   GetStringTypeW =  KERNEL32.399
    74   GetStringTypeExA = KERNEL32.397
    75   GetTempFileNameA = KERNEL32.412
    76   GetTempFileNameW = KERNEL32.413
    77   GetTempPathA = KERNEL32.414
    78   GetThreadTEB = KERNEL32.1234
    79   GetVersion = KERNEL32.427
    80   HeapAlloc = KERNEL32.459
    81   HeapCompact = KERNEL32.460
    82   HeapFree = KERNEL32.463
    83   HeapReAlloc = KERNEL32.465
    84   "HeapSize" = KERNEL32.467
    85   HeapValidate = KERNEL32.469
    86   HeapWalk = KERNEL32.470
    87   InitializeCriticalSection = KERNEL32.472
    88   IsBadReadPtr = KERNEL32.480
    89   IsValidCodePage = KERNEL32.488
    90   LeaveCriticalSection = KERNEL32.494
    91   LoadLibraryA = KERNEL32.495
    92   LockFile = KERNEL32.512
    93   MoveFileExA = KERNEL32.530
    94   MoveFileExW = KERNEL32.531
    95   MultiByteToWideChar = KERNEL32.534
    96   PeekConsoleInputA = KERNEL32.550
    97   RaiseException = KERNEL32.567
    98   ReadConsoleInputA = KERNEL32.569
    99   ReadFile = KERNEL32.577
    100   RegisterLxDll = KERNEL32.1238
    101   RemoveDirectoryA = KERNEL32.584
    102   RemoveDirectoryW = KERNEL32.585
    103   SetConsoleMode = KERNEL32.628
    104   SetCurrentDirectoryA = KERNEL32.635
    105   SetCurrentDirectoryW = KERNEL32.636
    106   SetEnvironmentVariableA = KERNEL32.641
    107   SetEnvironmentVariableW = KERNEL32.642
    108   SetFileAttributesA = KERNEL32.647
    109   SetFileAttributesW = KERNEL32.648
    110   SetFilePointer = KERNEL32.649
    111   SetFileTime = KERNEL32.650
    112   SetLastError = KERNEL32.654
    113   SetStdHandle = KERNEL32.663
    114   Sleep = KERNEL32.679
    115   TlsAlloc = KERNEL32.689
    116   TlsFree = KERNEL32.691
    117   TlsGetValue = KERNEL32.693
    118   TlsSetValue = KERNEL32.694
    119   UnhandledExceptionFilter = KERNEL32.702
    120   UnlockFile = KERNEL32.704
    121   UnregisterLxDll = KERNEL32.1239
    122   WaitForSingleObject = KERNEL32.723
    123   WideCharToMultiByte = KERNEL32.727
    124   WriteConsoleA = KERNEL32.729
    125   WriteFile = KERNEL32.738
    126   casemap_lower = KERNEL32.2008
    127   casemap_upper = KERNEL32.2007
    128   lstrcmpiA = KERNEL32.770
    129   lstrcpy = KERNEL32.772
    130   lstrlenW = KERNEL32.780
    131   lstrncmpiA = KERNEL32.887
    132   lstrncmpiW = KERNEL32.888
    133   strcmpiW = KERNEL32.2020
    134   strncmpiW = KERNEL32.2022
    135   wctype_table = KERNEL32.2006
    1369
    13710  ; Other exports
    138   CRTDLL_ecvt = ODINCRT.274
    139   ODINCRT_fcvt = ODINCRT.277
    14011  RtlTimeToSecondsSince1970 = NTDLL.559
    14112  RtlSecondsSince1970ToTime = NTDLL.526
     
    19465   ??4bad_typeid@@QAEAAV0@ABV0@@Z = MSVCRT_bad_typeid_opequals  @21
    19566   ??4exception@@QAEAAV0@ABV0@@Z = MSVCRT_exception_opequals    @22
    196    ??8type_info@@QBEHABV0@@Z = MSVCRT_type_info_opequals_equals @23
    197    ??9type_info@@QBEHABV0@@Z = MSVCRT_type_info_opnot_equals    @24
     67   ??8type_info@@QBEHABV0@@Z = _MSVCRT_type_info_opequals_equals@8      @23
     68   ??9type_info@@QBEHABV0@@Z = _MSVCRT_type_info_opnot_equals@8 @24
    19869
    19970   ??_E__non_rtti_object@@UAEPAXI@Z = MSVCRT___non_rtti_object__unknown_E       @26
     
    20778   ?_set_new_mode@@YAHH@Z = MSVCRT__set_new_mode        @34
    20879   ?_set_se_translator@@YAP6AXIPAU_EXCEPTION_POINTERS@@@ZP6AXI0@Z@Z = MSVCRT__set_se_translator @35
    209    ?name@type_info@@QBEPBDXZ = MSVCRT_type_info_name    @36
    210    ?raw_name@type_info@@QBEPBDXZ = MSVCRT_type_info_raw_name    @37
     80   ?name@type_info@@QBEPBDXZ = _MSVCRT_type_info_name@4 @36
     81   ?raw_name@type_info@@QBEPBDXZ = _MSVCRT_type_info_raw_name@4 @37
    21182   ?set_new_handler@@YAP6AXXZP6AXXZ@Z = MSVCRT__set_new_handler @38
    21283   ?set_terminate@@YAP6AXXZP6AXXZ@Z = MSVCRT_set_terminate      @39
     
    252123   __argv = MSVCRT___argv       @79
    253124   __dllonexit = __dllonexit    @80
    254   __doserrno = __doserrno       @81
     125  __doserrno = MSVCRT_doserrno  @81
    255126  __getmainargs = __getmainargs @82
    256127  __initenv = MSVCRT___initenv  @83
     
    260131  __lconv_init = __lconv_init   @87
    261132  __mb_cur_max = MSVCRT___mb_cur_max    @88
     133  __crtLCMapStringA @89
    262134
    263135  __p___argc = __p___argc       @90
     
    268140  __p___winitenv = __p___winitenv       @95
    269141  __p__acmdln =  __p__acmdln    @96
    270  __p__commode =  __p__commode   @97
    271  __p__environ = __p__environ    @98
    272  __p__fmode = __p__fmode        @99
    273  __p__iob = __p__iob    @100
    274  __p__mbctype = __p__mbctype    @101
    275  __p__osver =  __p__osver       @102
    276  __p__pctype = __p__pctype      @103
    277  __p__timezone = __p__timezone  @104
    278  __p__wcmdln = __p__wcmdln      @105
    279  __p__wenviron = __p__wenviron  @106
    280  __p__winmajor = __p__winmajor  @107
    281  __p__winminor = __p__winminor  @108
    282  __p__winver = __p__winver      @109
    283 
    284  __set_app_type = MSVCRT___set_app_type @111
    285  __setlc_active = MSVCRT___setlc_active @112
    286  __setusermatherr = MSVCRT___setusermatherr     @113
    287 
    288  __threadhandle = KERNEL32_threadhandle @115
    289  __threadid = KERNEL32_threadid @116
    290  __toascii = MSVCRT___toascii   @117
    291  __unDName = MSVCRT___unDName   @118
    292  __unDNameEx = MSVCRT___unDNameEx       @119
    293  __unguarded_readlc_active = MSVCRT___unguarded_readlc_active   @120
    294  __wargv = MSVCRT___wargv       @121
    295  __wgetmainargs =__wgetmainargs @122
    296  __winitenv = MSVCRT___winitenv @123
    297  _abnormal_termination = _abnormal_termination  @124
    298  _access = _access      @125
    299  _acmdln = MSVCRT__acmdln       @126
    300  _adj_fdiv_m16i @127
    301  _adj_fdiv_m32  @128
    302  _adj_fdiv_m32i @129
    303  _adj_fdiv_m64  @130
    304  _adj_fdiv_r    @131
    305  _adj_fdivr_m16i        @132
    306  _adj_fdivr_m32 @133
    307  _adj_fdivr_m32i        @134
    308  _adj_fdivr_m64 @135
    309  _adj_fpatan    @136
    310  _adj_fprem     @137
    311  _adj_fprem1    @138
    312  _adj_fptan     @139
    313  _adjust_fdiv   @140
    314  _amsg_exit = MSVCRT__amsg_exit @141
    315  _assert = MSVCRT__assert       @142
    316  _beep  @143
    317 ; We want not EMX one but our own       @144
    318  _beginthread = MSVCRT_beginthread      @145
     142  __p__commode =  __p__commode  @97
     143  __p__environ = __p__environ   @98
     144  __p__fmode = __p__fmode       @99
     145  __p__iob = __p__iob   @100
     146  __p__mbctype = __p__mbctype   @101
     147  __p__osver =  __p__osver      @102
     148  __p__pctype = __p__pctype     @103
     149  __p__timezone = __p__timezone @104
     150  __p__wcmdln = __p__wcmdln     @105
     151  __p__wenviron = __p__wenviron @106
     152  __p__winmajor = __p__winmajor @107
     153  __p__winminor = __p__winminor @108
     154  __p__winver = __p__winver     @109
     155  __p__daylight = MSVCRT___p__daylight @110
     156  __p__pgmptr @114
     157
     158  __set_app_type = MSVCRT___set_app_type        @111
     159  __setlc_active = MSVCRT___setlc_active        @112
     160  __setusermatherr = MSVCRT___setusermatherr    @113
     161
     162  __threadhandle = MSVCRT_GetCurrentThread      @115
     163  __threadid = MSVCRT_GetCurrentThreadId        @116
     164  __toascii = MSVCRT___toascii  @117
     165  __unDName = MSVCRT___unDName  @118
     166  __unDNameEx = MSVCRT___unDNameEx      @119
     167  __unguarded_readlc_active = MSVCRT___unguarded_readlc_active  @120
     168  __wargv = MSVCRT___wargv      @121
     169  __wgetmainargs                @122
     170  __winitenv = MSVCRT___winitenv        @123
     171  _abnormal_termination = _abnormal_termination @124
     172  _access = MSVCRT__access      @125
     173  _acmdln = MSVCRT__acmdln      @126
     174  _adj_fdiv_m16i        @127
     175  _adj_fdiv_m32 @128
     176  _adj_fdiv_m32i        @129
     177  _adj_fdiv_m64 @130
     178  _adj_fdiv_r   @131
     179  _adj_fdivr_m16i       @132
     180  _adj_fdivr_m32        @133
     181  _adj_fdivr_m32i       @134
     182  _adj_fdivr_m64        @135
     183  _adj_fpatan   @136
     184  _adj_fprem    @137
     185  _adj_fprem1   @138
     186  _adj_fptan    @139
     187  _adjust_fdiv  @140
     188  _amsg_exit = MSVCRT__amsg_exit        @141
     189  _assert = MSVCRT__assert      @142
     190  _beep @143
     191; We want not EMX one but our own
     192 _beginthread = MSVCRT__beginthread     @145
    319193 _beginthreadex         @146
    320194 _c_exit = MSVCRT__c_exit       @147
    321  _cabs  @148
     195 _cabs = MSVCRT__cabs   @148
    322196 _callnewh      @149
    323197 _cexit = MSVCRT__cexit @150
    324  _cgets @151
    325  _chdir @152
    326  _chdrive       @153
     198 _cgets = MSVCRT__cgets @151
     199 _chdir = MSVCRT__chdir @152
     200 _chdrive = MSVCRT__chdrive     @153
    327201 _chgsign       @154
    328202 _chkesp        @155
    329  _chmod @156
     203 _chmod = MSVCRT__chmod @156
    330204 _clearfp       @157
    331  _close @158
     205 _close = MSVCRT__close @158
    332206 _commit        @159
    333207 _commode = MSVCRT__commode     @160
    334  _control87     @161
     208 _control87 = MSVCRT__control87 @161
    335209 _controlfp     @162
    336210 _copysign      @163
    337  _cprintf       @164
    338  _cputs @165
    339  _creat @166
    340  _cscanf        @167
     211 _cprintf = MSVCRT__cprintf     @164
     212 _cputs = MSVCRT__cputs @165
     213 _creat = MSVCRT__creat @166
     214 _cscanf = MSVCRT__cscanf       @167
    341215 _ctype = MSVCRT__ctype @168
    342  _cwait @169
    343  _ecvt = CRTDLL_ecvt    @170
    344  _endthread = MSVCRT_endthread  @171
     216 _cwait = MSVCRT__cwait @169
     217 _ecvt   @170
     218 _endthread = MSVCRT__endthread @171
    345219 _endthreadex   @172
    346220 _environ = MSVCRT__environ     @173
     
    349223 _except_handler2       @176
    350224 _except_handler3       @177
    351  _execl @178
     225 _execl = MSVCRT__execl  @178
    352226; @ stub _execle #(str str) varargs     @179
    353  _execlp        @180
     227 _execlp = MSVCRT__execlp       @180
    354228;# stub _execlpe #(str str) varargs     @181
    355  _execv @182
    356  _execve        @183
    357  _execvp        @184
    358  _execvpe       @185
     229 _execv = MSVCRT__execv @182
     230 _execve = MSVCRT__execve       @183
     231 _execvp = MSVCRT__execvp @184
     232 _execvpe = MSVCRT__execvpe     @185
    359233 _exit = MSVCRT__exit   @186
    360234 _expand        @187
    361  _fcloseall     @188
    362  _fcvt = ODINCRT_fcvt           @189
    363  _fdopen        @190
    364  _fgetchar      @191
     235 _fcloseall = MSVCRT__fcloseall @188
     236 _fcvt          @189
     237 _fdopen = MSVCRT__fdopen       @190
     238 _fgetchar = MSVCRT__fgetchar   @191
    365239 _fgetwchar     @192
    366240 _filbuf        @193
    367241;# stub _fileinfo       @194
    368  _filelength    @195
     242 _filelength = MSVCRT__filelength       @195
    369243;# stub _filelengthi64 #(long)  @196
    370   _fileno       @197
     244  _fileno = MSVCRT__fileno      @197
    371245  _findclose    @198
    372246  _findfirst    @199
     
    376250  _finite       @203
    377251  _flsbuf       @204
    378   _flushall     @205
     252  _flushall = MSVCRT__flushall  @205
    379253  _fmode = MSVCRT__fmode        @206
    380254  _fpclass      @207
    381255;# stub _fpieee_flt     @208
    382   _fpreset      @209
    383   _fputchar     @210
     256  _fpreset = MSVCRT__fpreset    @209
     257  _fputchar = MSVCRT__fputchar  @210
    384258  _fputwchar    @211
    385   _fsopen       @212
     259  _fsopen = MSVCRT__fsopen      @212
    386260  _fstat = MSVCRT__fstat        @213
    387261  _fstati64     @214
    388   _ftime = MSVCRT_ftime @215
     262  _ftime = MSVCRT__ftime        @215
    389263  _ftol @216
    390   _fullpath     @217
     264  _fullpath = MSVCRT__fullpath @217
    391265  _futime       @218
    392   _gcvt @219
     266  _gcvt = MSVCRT__gcvt  @219
    393267  _get_osfhandle        @220
    394268;# stub _get_sbh_threshold #()  @221
    395   _getch        @222
    396   _getche       @223
    397   _getcwd       @224
    398   _getdcwd      @225
     269  _getch = MSVCRT__getch        @222
     270  _getche = MSVCRT__getche      @223
     271  _getcwd = MSVCRT__getcwd      @224
     272  _getdcwd = MSVCRT__getdcwd    @225
    399273  _getdiskfree  @226
    400   _getdllprocaddr = KERNEL32_GetProcAddress     @227
    401   _getdrive     @228
    402   _getdrives = KERNEL32_GetLogicalDrives        @229
     274  _getdllprocaddr  @227
     275  _getdrive = MSVCRT__getdrive  @228
     276  _getdrives = MSVCRT_GetLogicalDrives  @229
    403277;# stub _getmaxstdio #()        @230
    404278  _getmbcp      @231
    405   _getpid = KERNEL32_GetCurrentProcessId        @232
     279  _getpid = MSVCRT_GetCurrentProcessId  @232
    406280;# stub _getsystime #(ptr)      @233
    407   _getw @234
     281  _getw = MSVCRT__getw  @234
    408282  _getws = MSVCRT__getws        @235
    409283  _global_unwind2       @236
    410   _heapadd      @237
    411   _heapchk      @238
    412   _heapmin      @239
    413   _heapset      @240
     284  _heapadd = MSVCRT__heapadd    @237
     285  _heapchk = MSVCRT__heapchk    @238
     286  _heapmin = MSVCRT__heapmin    @239
     287  _heapset = MSVCRT__heapset    @240
    414288;# stub _heapused #(ptr ptr)    @241
    415   _heapwalk     @242
    416   _hypot        @243
     289  _heapwalk = MSVCRT__heapwalk  @242
     290  _hypot        @243
    417291;# stub _i64toa #(long str long)        @244
    418292;# stub _i64tow #(long wstr long)       @245
     
    423297  _iob = MSVCRT__iob    @250
    424298
    425   _isatty       @252
     299  _isatty = MSVCRT__isatty @252
    426300  _isctype      @253
    427301;# stub _ismbbalnum #(long)     @254
     
    455329  _ismbstrail   @282
    456330  _isnan        @283
    457   _itoa @284
    458   _itow @285
     331  _itoa @284
     332  _itow @285
    459333  _j0 = j0      @286
    460334  _j1 = j1      @287
    461335  _jn = jn      @288
    462   _kbhit        @289
    463   _lfind        @290
     336  _kbhit = MSVCRT__kbhit        @289
     337  _lfind = MSVCRT__lfind        @290
    464338  _loaddll      @291
    465339  _local_unwind2        @292
     
    468342  _logb @295
    469343;# stub _longjmpex      @296
    470   _lrotl        @297
    471   _lrotr        @298
    472   _lsearch      @299
    473   _lseek        @300
     344  _lrotl = MSVCRT__lrotl        @297
     345  _lrotr = MSVCRT__lrotr        @298
     346  _lsearch = MSVCRT__lsearch    @299
     347  _lseek = MSVCRT__lseek        @300
    474348  _lseeki64     @301
    475349  _ltoa @302
    476350  _ltow @303
    477   _makepath     @304
    478   _matherr      @305
     351  _makepath = MSVCRT__makepath  @304
     352  _matherr = MSVCRT__matherr    @305
    479353  _mbbtombc     @306
    480354;# stub _mbbtype #(long long)   @307
     
    500374  _mbsdup = _strdup     @327
    501375  _mbsicmp      @328
    502 ;# stub _mbsicoll #(str str)    @329
     376  _mbsicoll     @329
    503377  _mbsinc       @330
    504378  _mbslen       @331
    505379  _mbslwr       @332
    506 ;# stub _mbsnbcat #(str str long)       @333
     380  _mbsnbcat     @333
    507381  _mbsnbcmp     @334
    508382  _mbsnbcnt     @335
     
    511385  _mbsnbicmp    @338
    512386;# stub _mbsnbicoll #(str str long)     @339
    513 ;# stub _mbsnbset #(str long long)      @340
     387  _mbsnbset     @340
    514388  _mbsncat      @341
    515389  _mbsnccnt     @342
     
    529403;# stub _mbsspnp #(str str)     @356
    530404  _mbsstr = strstr      @357
    531 ;# stub _mbstok #(str str)      @358
     405  _mbstok       @358
    532406  _mbstrlen     @359
    533407  _mbsupr       @360
    534   _memccpy = _memccpy   @361
     408  _memccpy      @361
    535409  _memicmp = NTDLL_memicmp      @362
    536   _mkdir        @363
     410  _mkdir = MSVCRT__mkdir        @363
    537411  _mktemp       @364
    538   _msize        @365
     412  _msize = MSVCRT__msize        @365
    539413  _nextafter    @366
    540   _onexit       @367
    541   _open @368
     414  _onexit = MSVCRT__onexit      @367
     415  _open = MSVCRT__open @368
    542416  _open_osfhandle       @369
    543417;# stub _osver  @370
     
    551425;# stub _popen #(str str)       @378
    552426  _purecall     @379
    553   _putch        @380
    554   _putenv       @381
    555   _putw @382
     427  _putch = MSVCRT__putch        @380
     428  _putenv = MSVCRT__putenv      @381
     429  _putw = MSVCRT__putw  @382
    556430  _putws        @383
    557431;# stub _pwctype        @384
    558   _read @385
    559   _rmdir        @386
    560   _rmtmp        @387
    561   _rotl @388
    562   _rotr @389
     432  _read = MSVCRT__read @385
     433  _rmdir = MSVCRT__rmdir        @386
     434  _rmtmp = MSVCRT__rmtmp        @387
     435  _rotl = MSVCRT__rotl  @388
     436  _rotr = MSVCRT__rotr  @389
    563437  _safe_fdiv    @390
    564438  _safe_fdivr   @391
     
    566440  _safe_fprem1  @393
    567441  _scalb        @394
    568   _searchenv    @395
    569   _seh_longjmp_unwind   @396
     442  _searchenv = MSVCRT__searchenv        @395
     443  _seh_longjmp_unwind = __seh_longjmp_unwind@4  @396
    570444;# stub _set_error_mode #(long) @397
    571445;# stub _set_sbh_threshold #(long)      @398
     
    575449;# stub _setmaxstdio #(long)    @402
    576450  _setmbcp      @403
    577   _setmode      @404
     451  _setmode = MSVCRT__setmode    @404
    578452;# stub _setsystime #(ptr long) @405
    579   _sleep        @406
    580   _snprintf = _snprintf @407
    581   _snwprintf    @408
     453  _sleep = MSVCRT__sleep        @406
     454  _snprintf = emx__snprintf     @407
     455  _snwprintf  @408
    582456  _sopen = MSVCRT__sopen        @409
    583   _spawnl = _spawnl     @410
     457  _spawnl = MSVCRT__spawnl      @410
    584458;# stub _spawnle #(str str) varargs     @411
    585   _spawnlp      @412
     459  _spawnlp = MSVCRT__spawnlp    @412
    586460;# stub _spawnlpe #(str str) varargs    @413
    587   _spawnv       @414
    588   _spawnve      @415
    589   _spawnvp      @416
    590   _spawnvpe     @417
    591   _splitpath    @418
    592   _stat @419
    593 ;# stub _stati64 #(str ptr)     @420
     461  _spawnv = MSVCRT__spawnv      @414
     462  _spawnve = MSVCRT__spawnve    @415
     463  _spawnvp = MSVCRT__spawnvp    @416
     464  _spawnvpe = MSVCRT__spawnvpe  @417
     465  _splitpath = emx__splitpath   @418
     466  _stat = MSVCRT__stat @419
     467  _stati64      @420
    594468  _statusfp     @421
    595469  _strcmpi = strcasecmp @422
    596   _strdate      @423
    597   _strdup       @424
    598   _strerror     @425
     470  _strdate = MSVCRT__strdate    @423
     471  _strdup = MSVCRT__strdup      @424
     472  _strerror = MSVCRT__strerror  @425
    599473  _stricmp  = strcasecmp        @426
    600474;# stub _stricoll #(str str)    @427
    601   _strlwr       @428
     475  _strlwr       @428
    602476;# stub _strncoll #(str str long)       @429
    603477  _strnicmp = strncasecmp       @430
    604478;# stub _strnicoll #(str str long)      @431
    605   _strnset      @432
    606   _strrev       @433
    607   _strset       @434
    608   _strtime      @435
    609   _strupr       @436
    610   _swab @437
     479  _strnset = MSVCRT__strnset    @432
     480  _strrev = MSVCRT__strrev      @433
     481  _strset = MSVCRT__strset      @434
     482  _strtime = MSVCRT__strtime    @435
     483  _strupr  @436
     484  _swab = MSVCRT__swab @437
    611485  _sys_errlist = MSVCRT__sys_errlist    @438
    612486  _sys_nerr = MSVCRT__sys_nerr  @439
    613   _tell @440
     487  _tell = MSVCRT__tell  @440
    614488;# stub _telli64 #(long)        @441
    615   _tempnam      @442
     489  _tempnam = MSVCRT__tempnam    @442
    616490;# stub _timezone #()   @443
    617491  _tolower = MSVCRT__tolower    @444
    618492  _toupper = MSVCRT__toupper    @445
    619493;# stub _tzname @446
    620   _tzset        @447
     494  _tzset = emx__tzset   @447
    621495;# stub _ui64toa #(long str long)       @448
    622496;# stub _ui64tow #(long wstr long)      @449
    623   _ultoa        @450
     497  _ultoa        @450
    624498  _ultow        @451
    625   _umask        @452
    626   _ungetch      @453
    627   _unlink       @454
     499  _umask = MSVCRT_umask @452
     500  _ungetch = MSVCRT__ungetch    @453
     501  _unlink = MSVCRT__unlink      @454
    628502  _unloaddll    @455
    629503  _unlock       @456
    630   _utime        @457
    631   _vsnprintf = _vsnprintf       @458
     504  _utime = MSVCRT_utime @457
     505  _vsnprintf    @458
    632506  _vsnwprintf   @459
    633507  _waccess      @460
     
    666540;# stub _wfreopen #(wstr wstr ptr)      @493
    667541  _wfsopen      @494
    668 ;# stub _wfullpath #(wstr wstr long)    @495
     542  _wfullpath    @495
    669543  _wgetcwd      @496
    670544  _wgetdcwd     @497
     
    683557  _wremove      @510
    684558  _wrename      @511
    685   _write        @512
     559  _write = MSVCRT__write        @512
    686560  _wrmdir       @513
    687561;# stub _wsearchenv #(wstr wstr wstr)   @514
     
    698572  _wsplitpath   @525
    699573  _wstat        @526
    700 ;# stub _wstati64 #(wstr ptr)   @527
     574  _wstati64                     @527
    701575;# stub _wstrdate #(wstr)       @528
    702576;# stub _wstrtime #(wstr)       @529
     
    709583  _wunlink      @536
    710584  _wutime       @537
    711   _y0   @538
    712   _y1   @539
    713   _yn   @540
     585  _y0 = MSVCRT__y0      @538
     586  _y1 = MSVCRT__y1      @539
     587  _yn = MSVCRT__yn      @540
    714588  abort = MSVCRT_abort  @541
    715   abs   @542
    716   acos  @543
    717   asctime       @544
    718   asin  @545
    719   atan @546
    720   atan2 @547
     589  abs = emx_abs @542
     590  acos = emx_acos       @543
     591  asctime = emx_asctime @544
     592  asin = emx_asin       @545
     593  atan = emx_atan       @546
     594  atan2 = emx_atan2 @547
    721595  atexit = MSVCRT_atexit        @548
    722   atof  @549
    723   atoi  @550
    724   atol  @551
    725   bsearch       @552
     596  atof = MSVCRT_atof    @549
     597  atoi  @550
     598  atol  @551
     599  bsearch       @552
    726600  calloc = MSVCRT_calloc        @553
    727   ceil  @554
     601  ceil = emx_ceil       @554
    728602  clearerr = MSVCRT_clearerr    @555
    729603  clock = MSVCRT_clock  @556
    730   cos   @557
    731   cosh  @558
    732   ctime @559
     604  cos = emx_cos @557
     605  cosh = emx_cosh       @558
     606  ctime = emx_ctime @559
    733607  difftime = MSVCRT_difftime    @560
    734608  div = MSVCRT_div      @561
    735609  exit = MSVCRT_exit    @562
    736   exp   @563
    737   fabs  @564
     610  exp = emx_exp @563
     611  fabs = emx_fabs       @564
    738612  fclose = MSVCRT_fclose        @565
    739613  feof = MSVCRT_feof    @566
     
    745619  fgetwc = MSVCRT_fgetwc        @572
    746620  fgetws = MSVCRT_fgetws        @573
    747   floor @574
    748   fmod  @575
     621  floor = emx_floor @574
     622  fmod  = emx_fmod @575
    749623  fopen = MSVCRT_fopen  @576
    750624  fprintf = MSVCRT_fprintf      @577
     
    756630  free = MSVCRT_free    @583
    757631  freopen = MSVCRT_freopen      @584
    758   frexp = frexp @585
     632  frexp = emx_frexp     @585
    759633  fscanf = MSVCRT_fscanf        @586
    760634  fseek = MSVCRT_fseek  @587
     
    770644  getwc = MSVCRT_getwc  @597
    771645  getwchar = MSVCRT_getwchar    @598
    772   gmtime = gmtime       @599
     646  gmtime = emx_gmtime   @599
    773647  is_wctype = iswctype  @600
    774648  isalnum = MSVCRT_isalnum      @601
     
    797671  iswxdigit = MSVCRT_iswxdigit  @624
    798672  isxdigit = MSVCRT_isxdigit    @625
    799   labs  @626
     673  labs  = emx_labs @626
    800674  ldexp = MSVCRT_ldexp  @627
    801675  ldiv = MSVCRT_ldiv    @628
    802676;# stub localeconv #()  @629
    803   localtime     @630
    804   log   @631
    805   log10 @632
     677  localtime = emx_localtime     @630
     678  log = emx_log @631
     679  log10 = emx_log10 @632
    806680  longjmp = _MSVCRT_longjmp     @633
    807681  malloc = MSVCRT_malloc        @634
    808682  mblen = MSVCRT_mblen  @635
    809   mbstowcs      @636
     683  mbstowcs = emx_mbstowcs       @636
    810684  mbtowc = MSVCRT_mbtowc        @637
    811   memchr        @638
    812   memcmp        @639
     685  memchr = emx_memchr   @638
     686  memcmp = emx_memcmp   @639
    813687  memcpy = MSVCRT_memcpy        @640
    814   memmove       @641
     688  memmove = emx_memmove @641
    815689  memset = MSVCRT_memset        @642
    816690  mktime = MSVCRT_mktime        @643
    817   modf  @644
     691  modf  = emx_modf @644
    818692  perror = MSVCRT_perror        @645
    819   pow   @646
     693  pow = emx_pow @646
    820694  printf = MSVCRT_printf        @647
    821695  putc = MSVCRT_putc    @648
     
    824698  putwc = MSVCRT_fputwc @651
    825699  putwchar =_fputwchar  @652
    826   qsort @653
     700  qsort = emx_qsort @653
    827701;# stub raise #(long)   @654
    828702  rand = MSVCRT_rand    @655
     
    836710  setvbuf = MSVCRT_setvbuf      @663
    837711  signal = MSVCRT_signal        @664
    838   sin   @665
    839   sinh  @666
    840   sprintf       @667
    841   sqrt  @668
    842   srand @669
    843   sscanf        @670
    844   strcat        @671
    845   strchr        @672
    846   strcmp        @673
    847   strcoll       @674
    848   strcpy        @675
    849   strcspn       @676
     712  sin = emx_sin @665
     713  sinh = emx_sinh @666
     714  sprintf = emx_sprintf @667
     715  sqrt = emx_sqrt @668
     716  srand = emx_srand @669
     717  sscanf = MSVCRT_sscanf        @670
     718  strcat = emx_strcat   @671
     719  strchr = emx_strchr   @672
     720  strcmp = emx_strcmp   @673
     721  strcoll = emx_strcoll @674
     722  strcpy = emx_strcpy   @675
     723  strcspn = emx_strcspn @676
    850724  strerror = MSVCRT_strerror    @677
    851   strftime      @678
    852   strlen        @679
    853   strncat       @680
    854   strncmp       @681
    855   strncpy       @682
    856   strpbrk       @683
    857   strrchr       @684
    858   strspn        @685
    859   strstr        @686
    860   strtod        @687
    861   strtok        @688
    862   strtol        @689
    863   strtoul       @690
    864   strxfrm       @691
     725  strftime = emx_strftime       @678
     726  strlen = emx_strlen   @679
     727  strncat = emx_strncat @680
     728  strncmp = emx_strncmp @681
     729  strncpy = emx_strncpy @682
     730  strpbrk = emx_strpbrk @683
     731  strrchr = emx_strrchr @684
     732  strspn = emx_strspn   @685
     733  strstr = emx_strstr   @686
     734  strtod = emx_strtod   @687
     735  strtok = emx_strtok   @688
     736  strtol = emx_strtol   @689
     737  strtoul = emx_strtoul @690
     738  strxfrm = emx_strxfrm @691
    865739  swprintf      @692
    866740  swscanf = MSVCRT_swscanf      @693
    867741  system = MSVCRT_system        @694
    868   tan   @695
    869   tanh  @696
     742  tan = emx_tan @695
     743  tanh = emx_tanh @696
    870744  time = MSVCRT_time    @697
    871745  tmpfile = MSVCRT_tmpfile      @698
    872746  tmpnam = MSVCRT_tmpnam        @699
    873   tolower       @700
    874   toupper       @701
     747  tolower = emx_tolower @700
     748  toupper = emx_toupper @701
    875749  towlower      @702
    876750  towupper      @703
     
    880754  vfwprintf = MSVCRT_vfwprintf  @707
    881755  vprintf = MSVCRT_vprintf      @708
    882   vsprintf = vsprintf   @709
     756  vsprintf = emx_vsprintf       @709
    883757  vswprintf = MSVCRT_vswprintf  @710
    884758  vwprintf = MSVCRT_vwprintf    @711
     
    910784;# stub __lc_collate_cp @737
    911785;# stub __lc_collate_c  @738
    912   MSVCRT_Init @739
     786
  • trunk/src/msvcrt/msvcrt.h

    r9633 r10005  
    3232typedef struct __MSVCRT_thread_data
    3333{
    34     int                      errno;
     34    int                      msv_errno;
    3535    unsigned long            doserrno;
     36    char                    *mbstok_next;        /* next ptr for mbstok() */
     37    char                    *efcvt_buffer;       /* buffer for ecvt/fcvt */
    3638    terminate_function       terminate_handler;
    3739    unexpected_function      unexpected_handler;
     
    108110#define _RT_BANNER      255
    109111
     112/* Signal types */
     113
     114#define SIGINT_W          2       /* interrupt */
     115#define SIGILL_W          4       /* illegal instruction - invalid function image */
     116#define SIGFPE_W          8       /* floating point exception */
     117#define SIGSEGV_W         11      /* segment violation */
     118#define SIGTERM_W         15      /* Software termination signal from kill */
     119#define SIGBREAK_W        21      /* Ctrl-Break sequence */
     120#define SIGABRT_W         22      /* abnormal termination triggered by abort call */
     121
     122#define SIG_DFL_W (void (__cdecl *)(int))0           /* default signal action */
     123#define SIG_IGN_W (void (__cdecl *)(int))1           /* ignore signal */
     124#define SIG_SGE_W (void (__cdecl *)(int))3           /* signal gets error */
     125#define SIG_ACK_W (void (__cdecl *)(int))4           /* acknowledge */
     126
     127/* signal error value (returned by signal call on error) */
     128
     129#define SIG_ERR (void (__cdecl *)(int))-1          /* signal error value */
     130
     131
    110132#endif /* __WINE_MSVCRT_H */
  • trunk/src/msvcrt/msvcrt.mak

    r9677 r10005  
    1 # $Id: msvcrt.mak,v 1.7 2003-01-15 10:43:16 sandervl Exp $
     1# $Id: msvcrt.mak,v 1.8 2003-04-10 10:28:03 sandervl Exp $
    22
    33#
     
    1313MAKEFILE = msvcrt.mak
    1414CCENV = EMX
     15WRC_PREFIX_RESOURCE=1
    1516NOTEXPDEF = 1
    1617
     
    2223
    2324!ifndef WMAKE
    24 CDEFINES    = -I. $(CDEFINES) -DUSE_MSVCRT_PREFIX -D_MT -I$(ODIN32_INCLUDE)\win\msvcrt
     25CDEFINES    = -I$(ODIN32_INCLUDE)\emxruntime -I. $(CDEFINES) -DUSE_MSVCRT_PREFIX -D_MT -I$(ODIN32_INCLUDE)\win\msvcrt
    2526!else
    2627CDEFINES   += -DUSE_MSVCRT_PREFIX -D_MT -I$(ODIN32_INCLUDE)\win\msvcrt
    2728!endif
    28 
    2929
    3030#
     
    3232#
    3333OBJS = \
     34$(OBJDIR)\initterm.obj \
     35$(OBJDIR)\initmsvcrtdll.obj \
    3436$(OBJDIR)\ctype.obj \
    3537$(OBJDIR)\cpp.obj \
     
    3739$(OBJDIR)\console.obj \
    3840$(OBJDIR)\data.obj \
     41$(OBJDIR)\dbgcalls.obj \
    3942$(OBJDIR)\dir.obj \
    4043$(OBJDIR)\environ.obj \
     
    4952$(OBJDIR)\main.obj \
    5053$(OBJDIR)\scanf.obj \
     54$(OBJDIR)\forwarders.obj \
    5155$(OBJDIR)\math.obj \
    5256$(OBJDIR)\mbcs.obj \
     
    5761$(OBJDIR)\time.obj \
    5862$(OBJDIR)\wcs.obj \
    59 $(OBJDIR)\rtlbitmap.obj \
    6063$(OBJDIR)\relay2.obj \
    6164$(OBJDIR)\$(TARGET)rsrc.obj
    6265
     66LIBS = \
     67$(ODIN32_LIB_)\EmxSupport\EMXOS2FSRoutines.lib \
     68$(EMX)\lib\iberty_s.lib \
     69$(EMX)\lib\gcc-lib\i386-pc-os2-emx\3.2.1\mt\stdcxx.lib \
     70$(EMX)\lib\c_alias.lib \
     71$(EMX)\lib\gcc-lib\i386-pc-os2-emx\3.2.1\mt\gcc_eh.lib \
     72$(EMX)\lib\gcc-lib\i386-pc-os2-emx\3.2.1\mt\gcc.lib \
     73$(EMX)\lib\mt\c.lib \
     74$(EMX)\lib\mt\c_dllso.lib \
     75$(EMX)\lib\mt\sys.lib \
     76$(EMX)\lib\os2.lib \
     77$(ODIN32_LIB_)\EmxSupport\ExCRuntime.lib \
     78$(ODIN32_LIB_)\EmxSupport\ExDllSupport.lib \
     79$(ODIN32_LIB_)\EmxSupport\m.lib \
     80$(ODIN32_LIB)\kernel32.lib \
     81$(ODIN32_LIB)\ntdll.lib \
     82$(ODIN32_LIB)\user32.lib
    6383
    6484#
     
    6989all: $(OBJDIR) $(OBJDIR)\$(TARGET).dll $(TARGET).lib
    7090
    71 $(OBJDIR)\$(TARGET).dll: $(OBJS) $(TARGET).def
    72     $(LD) $(LDFLAGS) -Zso -Zsys $(OBJS) $(TARGET).def -L.\libs -lm\
    73       -liberty_s -o $(OBJDIR)\$(TARGET).dll
    74     touch $(OBJDIR)\$(TARGET).map
    75     @echo "Illegal Sym File for EMX" > $(OBJDIR)\$(TARGET).sym
     91$(TARGET).lib:
     92    implib $(OBJDIR)\$(TARGET).lib msvcrt.def
     93    @copy $(OBJDIR)\$(TARGET).lib $(ODIN32_LIB_)\Release
     94    @copy $(OBJDIR)\$(TARGET).lib $(ODIN32_LIB_)\Debug
    7695
    7796# Includes the common rules.
     
    7998!include $(ODIN32_POST_INC)
    8099
    81 $(TARGET).lib:
    82     implib $(OBJDIR)\$(TARGET).lib msvcrt.def
    83     @copy $(OBJDIR)\$(TARGET).lib $(ODIN32_LIB_)\Release > nul:
    84     @copy $(OBJDIR)\$(TARGET).lib $(ODIN32_LIB_)\Debug  > nul:
    85 
    86 lib: $(TARGET).lib
  • trunk/src/msvcrt/msvcrt.spec

    r9633 r10005  
    5252@ cdecl ?unexpected@@YAXXZ() MSVCRT_unexpected
    5353@ cdecl ?what@exception@@UBEPBDXZ(ptr) MSVCRT_what_exception
    54 @ cdecl _CIacos() _CIacos
    55 @ cdecl _CIasin() _CIasin
    56 @ cdecl _CIatan() _CIatan
    57 @ cdecl _CIatan2() _CIatan2
    58 @ cdecl _CIcos() _CIcos
    59 @ cdecl _CIcosh() _CIcosh
    60 @ cdecl _CIexp() _CIexp
    61 @ cdecl _CIfmod() _CIfmod
    62 @ cdecl _CIlog() _CIlog
    63 @ cdecl _CIlog10() _CIlog10
    64 @ cdecl _CIpow() _CIpow
    65 @ cdecl _CIsin() _CIsin
    66 @ cdecl _CIsinh() _CIsinh
    67 @ cdecl _CIsqrt() _CIsqrt
    68 @ cdecl _CItan() _CItan
    69 @ cdecl _CItanh() _CItanh
    70 @ cdecl _CxxThrowException(long long) _CxxThrowException
    71 @ cdecl -i386 -norelay _EH_prolog() _EH_prolog
    72 @ cdecl _Getdays() _Getdays
    73 @ cdecl _Getmonths() _Getmonths
    74 @ cdecl _Getnames() _Getnames
     54@ cdecl _CIacos()
     55@ cdecl _CIasin()
     56@ cdecl _CIatan()
     57@ cdecl _CIatan2()
     58@ cdecl _CIcos()
     59@ cdecl _CIcosh()
     60@ cdecl _CIexp()
     61@ cdecl _CIfmod()
     62@ cdecl _CIlog()
     63@ cdecl _CIlog10()
     64@ cdecl _CIpow()
     65@ cdecl _CIsin()
     66@ cdecl _CIsinh()
     67@ cdecl _CIsqrt()
     68@ cdecl _CItan()
     69@ cdecl _CItanh()
     70@ cdecl _CxxThrowException(long long)
     71@ cdecl -i386 -norelay _EH_prolog()
     72@ cdecl _Getdays()
     73@ cdecl _Getmonths()
     74@ cdecl _Getnames()
    7575@ extern _HUGE MSVCRT__HUGE
    76 @ cdecl _Strftime(str long str ptr ptr) _Strftime
    77 @ cdecl _XcptFilter(long ptr) _XcptFilter
    78 @ cdecl -register -i386 __CxxFrameHandler(ptr ptr ptr ptr) __CxxFrameHandler
    79 @ stub __CxxLongjmpUnwind
     76@ cdecl _Strftime(str long str ptr ptr)
     77@ cdecl _XcptFilter(long ptr)
     78@ cdecl -register -i386 __CxxFrameHandler(ptr ptr ptr ptr)
     79@ stub __CxxLongjmpUnwind #(ptr) stdcall
    8080@ cdecl __RTCastToVoid(ptr) MSVCRT___RTCastToVoid
    8181@ cdecl __RTDynamicCast(ptr long ptr ptr long) MSVCRT___RTDynamicCast
    8282@ cdecl __RTtypeid(ptr) MSVCRT___RTtypeid
    83 @ stub __STRINGTOLD
     83@ stub __STRINGTOLD #(ptr ptr str long)
    8484@ extern __argc MSVCRT___argc
    8585@ extern __argv MSVCRT___argv
     
    8787@ stub __crtCompareStringA
    8888@ stub __crtGetLocaleInfoW
    89 @ stub __crtLCMapStringA
    90 @ cdecl __dllonexit(ptr ptr ptr) __dllonexit
    91 @ cdecl __doserrno() __doserrno
     89@ cdecl __crtLCMapStringA(long long str long ptr long long long)
     90@ cdecl __dllonexit(ptr ptr ptr)
     91@ cdecl __doserrno()
    9292@ stub __fpecode #()
    93 @ cdecl __getmainargs(ptr ptr ptr long ptr) __getmainargs
     93@ cdecl __getmainargs(ptr ptr ptr long ptr)
    9494@ extern __initenv MSVCRT___initenv
    9595@ cdecl __isascii(long) MSVCRT___isascii
     
    9999@ stub __lc_collate
    100100@ stub __lc_handle
    101 @ cdecl __lconv_init() __lconv_init
     101@ cdecl __lconv_init()
    102102@ extern __mb_cur_max MSVCRT___mb_cur_max
    103 @ cdecl __p___argc() __p___argc
    104 @ cdecl __p___argv() __p___argv
    105 @ cdecl __p___initenv() __p___initenv
    106 @ cdecl __p___mb_cur_max() __p___mb_cur_max
    107 @ cdecl __p___wargv() __p___wargv
    108 @ cdecl __p___winitenv() __p___winitenv
    109 @ cdecl __p__acmdln()  __p__acmdln
     103@ cdecl __p___argc()
     104@ cdecl __p___argv()
     105@ cdecl __p___initenv()
     106@ cdecl __p___mb_cur_max()
     107@ cdecl __p___wargv()
     108@ cdecl __p___winitenv()
     109@ cdecl __p__acmdln()
    110110@ stub __p__amblksiz #()
    111 @ cdecl __p__commode()  __p__commode
    112 @ stub __p__daylight #()
     111@ cdecl __p__commode()
     112@ cdecl __p__daylight() MSVCRT___p__daylight
    113113@ stub __p__dstbias #()
    114 @ cdecl __p__environ() __p__environ
     114@ cdecl __p__environ()
    115115@ stub __p__fileinfo #()
    116 @ cdecl __p__fmode() __p__fmode
    117 @ cdecl __p__iob() __p__iob
     116@ cdecl __p__fmode()
     117@ cdecl __p__iob()
    118118@ stub __p__mbcasemap #()
    119 @ cdecl __p__mbctype() __p__mbctype
    120 @ cdecl __p__osver()  __p__osver
    121 @ cdecl __p__pctype() __p__pctype
    122 @ stub __p__pgmptr #()
     119@ cdecl __p__mbctype()
     120@ cdecl __p__osver()
     121@ cdecl __p__pctype()
     122@ cdecl __p__pgmptr()
    123123@ stub __p__pwctype #()
    124 @ cdecl __p__timezone() __p__timezone
     124@ cdecl __p__timezone()
    125125@ stub __p__tzname #()
    126 @ cdecl __p__wcmdln() __p__wcmdln
    127 @ cdecl __p__wenviron() __p__wenviron
    128 @ cdecl __p__winmajor() __p__winmajor
    129 @ cdecl __p__winminor() __p__winminor
    130 @ cdecl __p__winver() __p__winver
     126@ cdecl __p__wcmdln()
     127@ cdecl __p__wenviron()
     128@ cdecl __p__winmajor()
     129@ cdecl __p__winminor()
     130@ cdecl __p__winver()
    131131@ stub __p__wpgmptr #()
    132132@ stub __pioinfo #()
     
    135135@ extern __setlc_active MSVCRT___setlc_active
    136136@ cdecl __setusermatherr(ptr) MSVCRT___setusermatherr
    137 @ forward __threadhandle kernel32.GetCurrentThread
    138 @ forward __threadid kernel32.GetCurrentThreadId
     137@ cdecl __threadhandle() kernel32.GetCurrentThread
     138@ cdecl __threadid() kernel32.GetCurrentThreadId
    139139@ cdecl __toascii(long) MSVCRT___toascii
    140140@ cdecl __unDName(long str ptr ptr long) MSVCRT___unDName
     
    142142@ extern __unguarded_readlc_active MSVCRT___unguarded_readlc_active
    143143@ extern __wargv MSVCRT___wargv
    144 @ cdecl __wgetmainargs(ptr ptr ptr long ptr) __wgetmainargs
     144@ cdecl __wgetmainargs(ptr ptr ptr long ptr)
    145145@ extern __winitenv MSVCRT___winitenv
    146 @ cdecl _abnormal_termination() _abnormal_termination
    147 @ cdecl _access(str long) _access
     146@ cdecl _abnormal_termination()
     147@ cdecl _access(str long)
    148148@ extern _acmdln MSVCRT__acmdln
    149 @ cdecl _adj_fdiv_m16i() _adj_fdiv_m16i
    150 @ cdecl _adj_fdiv_m32() _adj_fdiv_m32
    151 @ cdecl _adj_fdiv_m32i() _adj_fdiv_m32i
    152 @ cdecl _adj_fdiv_m64() _adj_fdiv_m64
    153 @ cdecl _adj_fdiv_r() _adj_fdiv_r
    154 @ cdecl _adj_fdivr_m16i() _adj_fdivr_m16i
    155 @ cdecl _adj_fdivr_m32() _adj_fdivr_m32
    156 @ cdecl _adj_fdivr_m32i() _adj_fdivr_m32i
    157 @ cdecl _adj_fdivr_m64() _adj_fdivr_m64
    158 @ cdecl _adj_fpatan() _adj_fpatan
    159 @ cdecl _adj_fprem() _adj_fprem
    160 @ cdecl _adj_fprem1() _adj_fprem1
    161 @ cdecl _adj_fptan() _adj_fptan
    162 @ cdecl _adjust_fdiv() _adjust_fdiv
     149@ cdecl _adj_fdiv_m16i()
     150@ cdecl _adj_fdiv_m32()
     151@ cdecl _adj_fdiv_m32i()
     152@ cdecl _adj_fdiv_m64()
     153@ cdecl _adj_fdiv_r()
     154@ cdecl _adj_fdivr_m16i()
     155@ cdecl _adj_fdivr_m32()
     156@ cdecl _adj_fdivr_m32i()
     157@ cdecl _adj_fdivr_m64()
     158@ cdecl _adj_fpatan()
     159@ cdecl _adj_fprem()
     160@ cdecl _adj_fprem1()
     161@ cdecl _adj_fptan()
     162@ cdecl _adjust_fdiv()
    163163@ stub _aexit_rtn
    164164@ cdecl _amsg_exit(long) MSVCRT__amsg_exit
    165165@ cdecl _assert(str str long) MSVCRT__assert
    166 @ stub _atodbl
    167 @ stub _atoi64 #(str)
    168 @ stub _atoldbl
    169 @ cdecl _beep(long long) _beep
    170 @ cdecl _beginthread (ptr long ptr) _beginthread
    171 @ cdecl _beginthreadex (ptr long ptr ptr long ptr) _beginthreadex
     166@ stub _atodbl #(ptr str)
     167@ cdecl -ret64 _atoi64(str) ntdll._atoi64
     168@ stub _atoldbl #(ptr str)
     169@ cdecl _beep(long long)
     170@ cdecl _beginthread (ptr long ptr)
     171@ cdecl _beginthreadex (ptr long ptr ptr long ptr)
    172172@ cdecl _c_exit() MSVCRT__c_exit
    173 @ cdecl _cabs(long) _cabs
    174 @ cdecl _callnewh(long) _callnewh
     173@ cdecl _cabs(long)
     174@ cdecl _callnewh(long)
    175175@ cdecl _cexit() MSVCRT__cexit
    176 @ cdecl _cgets(str) _cgets
    177 @ cdecl _chdir(str) _chdir
    178 @ cdecl _chdrive(long) _chdrive
    179 @ cdecl _chgsign( double ) _chgsign
    180 @ cdecl -i386 _chkesp() _chkesp
    181 @ cdecl _chmod(str long) _chmod
    182 @ stub _chsize #(long long)
    183 @ cdecl _clearfp() _clearfp
    184 @ cdecl _close(long) _close
    185 @ cdecl _commit(long) _commit
     176@ cdecl _cgets(str)
     177@ cdecl _chdir(str)
     178@ cdecl _chdrive(long)
     179@ cdecl _chgsign( double )
     180@ cdecl -i386 _chkesp()
     181@ cdecl _chmod(str long)
     182@ cdecl _chsize (long long)
     183@ cdecl _clearfp()
     184@ cdecl _close(long)
     185@ cdecl _commit(long)
    186186@ extern _commode MSVCRT__commode
    187 @ cdecl _control87(long long) _control87
    188 @ cdecl _controlfp(long long) _controlfp
    189 @ cdecl _copysign( double double ) _copysign
    190 @ varargs _cprintf(str) _cprintf
    191 @ cdecl _cputs(str) _cputs
    192 @ cdecl _creat(str long) _creat
    193 @ varargs _cscanf(str) _cscanf
     187@ cdecl _control87(long long)
     188@ cdecl _controlfp(long long)
     189@ cdecl _copysign( double double )
     190@ varargs _cprintf(str)
     191@ cdecl _cputs(str)
     192@ cdecl _creat(str long)
     193@ varargs _cscanf(str)
    194194@ extern _ctype MSVCRT__ctype
    195 @ cdecl _cwait(ptr long long) _cwait
    196 @ stub _daylight
     195@ cdecl _cwait(ptr long long)
     196@ extern _daylight MSVCRT___daylight
    197197@ stub _dstbias
    198 @ stub _dup #(long)
    199 @ stub _dup2 #(long long)
    200 @ cdecl _ecvt( double long ptr ptr) ecvt
    201 @ cdecl _endthread () _endthread
    202 @ cdecl _endthreadex(long) _endthreadex
     198@ cdecl _dup (long)
     199@ cdecl _dup2 (long long)
     200@ cdecl _ecvt(double long ptr ptr)
     201@ cdecl _endthread ()
     202@ cdecl _endthreadex(long)
    203203@ extern _environ MSVCRT__environ
    204 @ cdecl _eof(long) _eof
     204@ cdecl _eof(long)
    205205@ cdecl _errno() MSVCRT__errno
    206 @ cdecl _except_handler2(ptr ptr ptr ptr) _except_handler2
    207 @ cdecl _except_handler3(ptr ptr ptr ptr) _except_handler3
    208 @ varargs _execl(str str) _execl
     206@ cdecl _except_handler2(ptr ptr ptr ptr)
     207@ cdecl _except_handler3(ptr ptr ptr ptr)
     208@ varargs _execl(str str)
    209209@ stub _execle #(str str) varargs
    210 @ varargs _execlp(str str) _execlp
     210@ varargs _execlp(str str)
    211211@ stub _execlpe #(str str) varargs
    212 @ cdecl _execv(str str) _execv
    213 @ cdecl _execve(str str str) _execve
    214 @ cdecl _execvp(str str) _execvp
    215 @ cdecl _execvpe(str str str) _execvpe
     212@ cdecl _execv(str str)
     213@ cdecl _execve(str str str)
     214@ cdecl _execvp(str str)
     215@ cdecl _execvpe(str str str)
    216216@ cdecl _exit(long) MSVCRT__exit
    217 @ cdecl _expand(ptr long) _expand
    218 @ cdecl _fcloseall() _fcloseall
    219 @ cdecl _fcvt( double long ptr ptr) fcvt
    220 @ cdecl _fdopen(long str) _fdopen
    221 @ cdecl _fgetchar() _fgetchar
    222 @ cdecl _fgetwchar() _fgetwchar
    223 @ cdecl _filbuf(ptr) _filbuf
     217@ cdecl _expand(ptr long)
     218@ cdecl _fcloseall()
     219@ cdecl _fcvt(double long ptr ptr)
     220@ cdecl _fdopen(long str)
     221@ cdecl _fgetchar()
     222@ cdecl _fgetwchar()
     223@ cdecl _filbuf(ptr)
    224224@ stub _fileinfo
    225 @ cdecl _filelength(long) _filelength
     225@ cdecl _filelength(long)
    226226@ stub _filelengthi64 #(long)
    227 @ cdecl _fileno(ptr) _fileno
    228 @ cdecl _findclose(long) _findclose
    229 @ cdecl _findfirst(str ptr) _findfirst
     227@ cdecl _fileno(ptr)
     228@ cdecl _findclose(long)
     229@ cdecl _findfirst(str ptr)
    230230@ stub _findfirsti64 #(str ptr)
    231 @ cdecl _findnext(long ptr) _findnext
     231@ cdecl _findnext(long ptr)
    232232@ stub _findnexti64 #(long ptr)
    233 @ cdecl _finite( double ) _finite
    234 @ cdecl _flsbuf(long ptr) _flsbuf
    235 @ cdecl _flushall() _flushall
     233@ cdecl _finite( double )
     234@ cdecl _flsbuf(long ptr)
     235@ cdecl _flushall()
    236236@ extern _fmode MSVCRT__fmode
    237 @ cdecl _fpclass(double) _fpclass
    238 @ stub _fpieee_flt
    239 @ cdecl _fpreset() _fpreset
    240 @ cdecl _fputchar(long) _fputchar
    241 @ cdecl _fputwchar(long) _fputwchar
    242 @ cdecl _fsopen(str str long) _fsopen
     237@ cdecl _fpclass(double)
     238@ stub _fpieee_flt #(long ptr ptr)
     239@ cdecl _fpreset()
     240@ cdecl _fputchar(long)
     241@ cdecl _fputwchar(long)
     242@ cdecl _fsopen(str str long)
    243243@ cdecl _fstat(long ptr) MSVCRT__fstat
    244 @ cdecl _fstati64(long ptr) _fstati64
    245 @ cdecl _ftime(ptr) _ftime
    246 @ forward _ftol ntdll._ftol
    247 @ cdecl _fullpath(ptr str long) _fullpath
    248 @ cdecl _futime(long ptr) _futime
    249 @ cdecl _gcvt( double long str) gcvt
    250 @ cdecl _get_osfhandle(long) _get_osfhandle
     244@ cdecl _fstati64(long ptr)
     245@ cdecl _ftime(ptr)
     246@ cdecl _ftol() ntdll._ftol
     247@ cdecl _fullpath(ptr str long)
     248@ cdecl _futime(long ptr)
     249@ cdecl _gcvt(double long str)
     250@ cdecl _get_osfhandle(long)
    251251@ stub _get_sbh_threshold #()
    252 @ cdecl _getch() _getch
    253 @ cdecl _getche() _getche
    254 @ cdecl _getcwd(str long) _getcwd
    255 @ cdecl _getdcwd(long str long) _getdcwd
    256 @ cdecl _getdiskfree(long ptr) _getdiskfree
    257 @ forward _getdllprocaddr kernel32.GetProcAddress
    258 @ cdecl _getdrive() _getdrive
    259 @ forward _getdrives kernel32.GetLogicalDrives
     252@ cdecl _getch()
     253@ cdecl _getche()
     254@ cdecl _getcwd(str long)
     255@ cdecl _getdcwd(long str long)
     256@ cdecl _getdiskfree(long ptr)
     257@ cdecl _getdllprocaddr(long str long)
     258@ cdecl _getdrive()
     259@ cdecl _getdrives() kernel32.GetLogicalDrives
    260260@ stub _getmaxstdio #()
    261 @ cdecl _getmbcp() _getmbcp
    262 @ forward _getpid kernel32.GetCurrentProcessId
     261@ cdecl _getmbcp()
     262@ cdecl _getpid() kernel32.GetCurrentProcessId
    263263@ stub _getsystime #(ptr)
    264 @ cdecl _getw(ptr) _getw
     264@ cdecl _getw(ptr)
    265265@ cdecl _getws(ptr) MSVCRT__getws
    266 @ cdecl _global_unwind2(ptr) _global_unwind2
    267 @ cdecl _heapadd (ptr long) _heapadd
    268 @ cdecl _heapchk() _heapchk
    269 @ cdecl _heapmin() _heapmin
    270 @ cdecl _heapset(long) _heapset
     266@ cdecl _global_unwind2(ptr)
     267@ cdecl _heapadd (ptr long)
     268@ cdecl _heapchk()
     269@ cdecl _heapmin()
     270@ cdecl _heapset(long)
    271271@ stub _heapused #(ptr ptr)
    272 @ cdecl _heapwalk(ptr) _heapwalk
     272@ cdecl _heapwalk(ptr)
    273273@ cdecl _hypot(double double) hypot
    274 @ stub _i64toa #(long str long)
    275 @ stub _i64tow #(long wstr long)
    276 @ cdecl _initterm(ptr ptr) _initterm
     274@ cdecl _i64toa(long long ptr long) ntdll._i64toa
     275@ cdecl _i64tow(long long ptr long) ntdll._i64tow
     276@ cdecl _initterm(ptr ptr)
    277277@ stub _inp #(long) -i386
    278278@ stub _inpd #(long) -i386
    279279@ stub _inpw #(long) -i386
    280280@ extern _iob MSVCRT__iob
    281 @ cdecl _isatty(long) _isatty
    282 @ cdecl _isctype(long long) _isctype
     281@ cdecl _isatty(long)
     282@ cdecl _isctype(long long)
    283283@ stub _ismbbalnum #(long)
    284284@ stub _ismbbalpha #(long)
    285285@ stub _ismbbgraph #(long)
    286286@ stub _ismbbkalnum #(long)
    287 @ cdecl _ismbbkana(long) _ismbbkana
     287@ cdecl _ismbbkana(long)
    288288@ stub _ismbbkprint #(long)
    289289@ stub _ismbbkpunct #(long)
    290 @ cdecl _ismbblead(long) _ismbblead
     290@ cdecl _ismbblead(long)
    291291@ stub _ismbbprint #(long)
    292292@ stub _ismbbpunct #(long)
    293 @ cdecl _ismbbtrail(long) _ismbbtrail
    294 @ cdecl _ismbcalnum(long) _ismbcalnum
    295 @ cdecl _ismbcalpha(long) _ismbcalpha
    296 @ cdecl _ismbcdigit(long) _ismbcdigit
    297 @ cdecl _ismbcgraph(long) _ismbcgraph
    298 @ cdecl _ismbchira(long) _ismbchira
    299 @ cdecl _ismbckata(long) _ismbckata
     293@ cdecl _ismbbtrail(long)
     294@ cdecl _ismbcalnum(long)
     295@ cdecl _ismbcalpha(long)
     296@ cdecl _ismbcdigit(long)
     297@ cdecl _ismbcgraph(long)
     298@ cdecl _ismbchira(long)
     299@ cdecl _ismbckata(long)
    300300@ stub _ismbcl0 #(long)
    301301@ stub _ismbcl1 #(long)
    302302@ stub _ismbcl2 #(long)
    303303@ stub _ismbclegal #(long)
    304 @ cdecl _ismbclower(long) _ismbclower
    305 @ cdecl _ismbcprint(long) _ismbcprint
    306 @ cdecl _ismbcpunct(long) _ismbcpunct
    307 @ cdecl _ismbcspace(long) _ismbcspace
    308 @ cdecl _ismbcsymbol(long) _ismbcsymbol
    309 @ cdecl _ismbcupper(long) _ismbcupper
    310 @ cdecl _ismbslead(ptr ptr) _ismbslead
    311 @ cdecl _ismbstrail(ptr ptr) _ismbstrail
    312 @ cdecl _isnan( double ) _isnan
    313 @ forward _itoa ntdll._itoa
    314 @ cdecl _itow(long wstr long) _itow
     304@ cdecl _ismbclower(long)
     305@ cdecl _ismbcprint(long)
     306@ cdecl _ismbcpunct(long)
     307@ cdecl _ismbcspace(long)
     308@ cdecl _ismbcsymbol(long)
     309@ cdecl _ismbcupper(long)
     310@ cdecl _ismbslead(ptr ptr)
     311@ cdecl _ismbstrail(ptr ptr)
     312@ cdecl _isnan( double )
     313@ cdecl _itoa(long ptr long) ntdll._itoa
     314@ cdecl _itow(long ptr long) ntdll._itow
    315315@ cdecl _j0(double) j0
    316316@ cdecl _j1(double) j1
    317317@ cdecl _jn(long double) jn
    318 @ cdecl _kbhit() _kbhit
    319 @ cdecl _lfind(ptr ptr ptr long ptr) _lfind
    320 @ cdecl _loaddll(str) _loaddll
    321 @ cdecl _local_unwind2(ptr long) _local_unwind2
    322 @ cdecl _lock(long) _lock
    323 @ cdecl _locking(long long long) _locking
    324 @ cdecl _logb( double ) _logb
     318@ cdecl _kbhit()
     319@ cdecl _lfind(ptr ptr ptr long ptr)
     320@ cdecl _loaddll(str)
     321@ cdecl _local_unwind2(ptr long)
     322@ cdecl _lock(long)
     323@ cdecl _locking(long long long)
     324@ cdecl _logb( double )
    325325@ stub _longjmpex
    326 @ cdecl _lrotl(long long) _lrotl
    327 @ cdecl _lrotr(long long) _lrotr
    328 @ cdecl _lsearch(ptr ptr long long ptr) _lsearch
    329 @ cdecl _lseek(long long long) _lseek
    330 @ cdecl -ret64 _lseeki64(long long long long) _lseeki64
    331 @ forward _ltoa ntdll._ltoa
    332 @ cdecl _ltow(long ptr long) _ltow
    333 @ cdecl _makepath(str str str str str) _makepath
    334 @ cdecl _matherr(ptr) _matherr
    335 @ cdecl _mbbtombc(long) _mbbtombc
     326@ cdecl _lrotl(long long)
     327@ cdecl _lrotr(long long)
     328@ cdecl _lsearch(ptr ptr long long ptr)
     329@ cdecl _lseek(long long long)
     330@ cdecl -ret64 _lseeki64(long long long long)
     331@ cdecl _ltoa(long ptr long) ntdll._ltoa
     332@ cdecl _ltow(long ptr long) ntdll._ltow
     333@ cdecl _makepath(str str str str str)
     334@ cdecl _matherr(ptr)
     335@ cdecl _mbbtombc(long)
    336336@ stub _mbbtype #(long long)
    337337@ stub _mbcasemap
     
    339339@ stub _mbcjistojms #(long)
    340340@ stub _mbcjmstojis #(long)
    341 @ cdecl _mbclen(ptr) _mbclen
     341@ cdecl _mbclen(ptr)
    342342@ stub _mbctohira #(long)
    343343@ stub _mbctokata #(long)
    344 @ cdecl _mbctolower(long) _mbctolower
     344@ cdecl _mbctolower(long)
    345345@ stub _mbctombb #(long)
    346 @ cdecl _mbctoupper(long) _mbctoupper
     346@ cdecl _mbctoupper(long)
    347347@ stub _mbctype
    348 @ stub _mbsbtype #(ptr long)
     348@ stub _mbsbtype #(str long)
    349349@ cdecl _mbscat(str str) strcat
    350 @ cdecl _mbschr(str long) _mbschr
    351 @ cdecl _mbscmp(str str) _mbscmp
     350@ cdecl _mbschr(str long)
     351@ cdecl _mbscmp(str str)
    352352@ stub _mbscoll #(str str)
    353353@ cdecl _mbscpy(ptr str) strcpy
    354 @ cdecl _mbscspn (str str) _mbscspn
    355 @ cdecl _mbsdec(ptr ptr) _mbsdec
     354@ cdecl _mbscspn (str str)
     355@ cdecl _mbsdec(ptr ptr)
    356356@ cdecl _mbsdup(str) _strdup
    357 @ cdecl _mbsicmp(str str) _mbsicmp
    358 @ stub _mbsicoll #(str str)
    359 @ cdecl _mbsinc(str) _mbsinc
    360 @ cdecl _mbslen(str) _mbslen
    361 @ cdecl _mbslwr(str) _mbslwr
    362 @ stub _mbsnbcat #(str str long)
    363 @ cdecl _mbsnbcmp(str str long) _mbsnbcmp
    364 @ cdecl _mbsnbcnt(ptr long) _mbsnbcnt
     357@ cdecl _mbsicmp(str str)
     358@ cdecl _mbsicoll(str str)
     359@ cdecl _mbsinc(str)
     360@ cdecl _mbslen(str)
     361@ cdecl _mbslwr(str)
     362@ cdecl _mbsnbcat (str str long)
     363@ cdecl _mbsnbcmp(str str long)
     364@ cdecl _mbsnbcnt(ptr long)
    365365@ stub _mbsnbcoll #(str str long)
    366 @ cdecl _mbsnbcpy(ptr str long) _mbsnbcpy
    367 @ cdecl _mbsnbicmp(str str long) _mbsnbicmp
     366@ cdecl _mbsnbcpy(ptr str long)
     367@ cdecl _mbsnbicmp(str str long)
    368368@ stub _mbsnbicoll #(str str long)
    369 @ stub _mbsnbset #(str long long)
    370 @ cdecl _mbsncat(str str long) _mbsncat
    371 @ cdecl _mbsnccnt(str long) _mbsnccnt
    372 @ cdecl _mbsncmp(str str long) _mbsncmp
    373 @ stub _mbsncoll #(ptr str long)
    374 @ cdecl _mbsncpy(str str long) _mbsncpy
    375 @ cdecl _mbsnextc(str) _mbsnextc
    376 @ cdecl _mbsnicmp(str str long) _mbsnicmp
     369@ cdecl _mbsnbset(str long long)
     370@ cdecl _mbsncat(str str long)
     371@ cdecl _mbsnccnt(str long)
     372@ cdecl _mbsncmp(str str long)
     373@ stub _mbsncoll #(str str long)
     374@ cdecl _mbsncpy(str str long)
     375@ cdecl _mbsnextc(str)
     376@ cdecl _mbsnicmp(str str long)
    377377@ stub _mbsnicoll #(str str long)
    378 @ cdecl _mbsninc(str long) _mbsninc
    379 @ cdecl _mbsnset(str long long) _mbsnset
    380 @ cdecl _mbspbrk(str str) _mbspbrk
    381 @ cdecl _mbsrchr(str long) _mbsrchr
    382 @ cdecl _mbsrev(str) _mbsrev
    383 @ cdecl _mbsset(str long) _mbsset
    384 @ cdecl _mbsspn(str str) _mbsspn
     378@ cdecl _mbsninc(str long)
     379@ cdecl _mbsnset(str long long)
     380@ cdecl _mbspbrk(str str)
     381@ cdecl _mbsrchr(str long)
     382@ cdecl _mbsrev(str)
     383@ cdecl _mbsset(str long)
     384@ cdecl _mbsspn(str str)
    385385@ stub _mbsspnp #(str str)
    386386@ cdecl _mbsstr(str str) strstr
    387 @ stub _mbstok #(str str)
    388 @ cdecl _mbstrlen(str) _mbstrlen
    389 @ cdecl _mbsupr(str) _mbsupr
     387@ cdecl _mbstok(str str)
     388@ cdecl _mbstrlen(str)
     389@ cdecl _mbsupr(str)
    390390@ cdecl _memccpy(ptr ptr long long) memccpy
    391 @ forward _memicmp ntdll._memicmp
    392 @ cdecl _mkdir(str) _mkdir
    393 @ cdecl _mktemp(str) _mktemp
    394 @ cdecl _msize(ptr) _msize
    395 @ cdecl _nextafter(double double) _nextafter
    396 @ cdecl _onexit(ptr) _onexit
    397 @ varargs _open(str long) _open
    398 @ cdecl _open_osfhandle(long long) _open_osfhandle
     391@ cdecl _memicmp(str str long) ntdll._memicmp
     392@ cdecl _mkdir(str)
     393@ cdecl _mktemp(str)
     394@ cdecl _msize(ptr)
     395@ cdecl _nextafter(double double)
     396@ cdecl _onexit(ptr)
     397@ varargs _open(str long)
     398@ cdecl _open_osfhandle(long long)
    399399@ stub _osver
    400400@ stub _outp #(long long)
     
    403403@ stub _pclose #(ptr)
    404404@ extern _pctype MSVCRT__pctype
    405 @ stub _pgmptr
     405@ extern _pgmptr MSVCRT__pgmptr
    406406@ stub _pipe #(ptr long long)
    407407@ stub _popen #(str str)
    408 @ cdecl _purecall() _purecall
    409 @ cdecl _putch(long) _putch
    410 @ cdecl _putenv(str) _putenv
    411 @ cdecl _putw(long ptr) _putw
    412 @ cdecl _putws(wstr) _putws
     408@ cdecl _purecall()
     409@ cdecl _putch(long)
     410@ cdecl _putenv(str)
     411@ cdecl _putw(long ptr)
     412@ cdecl _putws(wstr)
    413413@ stub _pwctype
    414 @ cdecl _read(long ptr long) _read
    415 @ cdecl _rmdir(str) _rmdir
    416 @ cdecl _rmtmp() _rmtmp
    417 @ cdecl _rotl(long long) _rotl
    418 @ cdecl _rotr(long long) _rotr
    419 @ cdecl _safe_fdiv() _safe_fdiv
    420 @ cdecl _safe_fdivr() _safe_fdivr
    421 @ cdecl _safe_fprem() _safe_fprem
    422 @ cdecl _safe_fprem1() _safe_fprem1
    423 @ cdecl _scalb( double long) _scalb
    424 @ cdecl _searchenv(str str str) _searchenv
    425 @ stdcall -i386 _seh_longjmp_unwind(ptr) _seh_longjmp_unwind
     414@ cdecl _read(long ptr long)
     415@ cdecl _rmdir(str)
     416@ cdecl _rmtmp()
     417@ cdecl _rotl(long long)
     418@ cdecl _rotr(long long)
     419@ cdecl _safe_fdiv()
     420@ cdecl _safe_fdivr()
     421@ cdecl _safe_fprem()
     422@ cdecl _safe_fprem1()
     423@ cdecl _scalb( double long)
     424@ cdecl _searchenv(str str ptr)
     425@ stdcall -i386 _seh_longjmp_unwind(ptr)
    426426@ stub _set_error_mode #(long)
    427427@ stub _set_sbh_threshold #(long)
     
    430430@ cdecl -register -i386 _setjmp3(ptr long) _MSVCRT__setjmp3
    431431@ stub _setmaxstdio #(long)
    432 @ cdecl _setmbcp(long) _setmbcp
    433 @ cdecl _setmode(long long) _setmode
     432@ cdecl _setmbcp(long)
     433@ cdecl _setmode(long long)
    434434@ stub _setsystime #(ptr long)
    435 @ cdecl _sleep(long) _sleep
     435@ cdecl _sleep(long)
    436436@ varargs _snprintf(str long str) snprintf
    437 @ forward _snwprintf ntdll._snwprintf
     437@ varargs _snwprintf(wstr long wstr) ntdll._snwprintf
    438438@ varargs _sopen(str long long) MSVCRT__sopen
    439 @ varargs _spawnl(long str str) _spawnl
    440 @ stub _spawnle #(str str) varargs
    441 @ varargs _spawnlp(long str str) _spawnlp
    442 @ stub _spawnlpe #(str str) varargs
    443 @ cdecl _spawnv(long str ptr) _spawnv
    444 @ cdecl _spawnve(long str ptr ptr) _spawnve
    445 @ cdecl _spawnvp(long str ptr) _spawnvp
    446 @ cdecl _spawnvpe(long str ptr ptr) _spawnvpe
    447 @ forward _splitpath ntdll._splitpath
     439@ varargs _spawnl(long str str)
     440@ stub _spawnle #(long str str) varargs
     441@ varargs _spawnlp(long str str)
     442@ stub _spawnlpe #(long str str) varargs
     443@ cdecl _spawnv(long str ptr)
     444@ cdecl _spawnve(long str ptr ptr)
     445@ cdecl _spawnvp(long str ptr)
     446@ cdecl _spawnvpe(long str ptr ptr)
     447@ cdecl _splitpath(str ptr ptr ptr ptr) ntdll._splitpath
    448448@ cdecl _stat(str ptr) MSVCRT__stat
    449 @ cdecl _stati64(str ptr) _stati64
    450 @ cdecl _statusfp() _statusfp
     449@ cdecl _stati64(str ptr)
     450@ cdecl _statusfp()
    451451@ cdecl _strcmpi(str str) strcasecmp
    452 @ cdecl _strdate(str) _strdate
    453 @ cdecl _strdup(str) _strdup
    454 @ cdecl _strerror(long) _strerror
     452@ cdecl _strdate(ptr)
     453@ cdecl _strdup(str)
     454@ cdecl _strerror(long)
    455455@ cdecl _stricmp(str str) strcasecmp
    456456@ stub _stricoll #(str str)
    457 @ forward _strlwr ntdll._strlwr
     457@ cdecl _strlwr(str) ntdll._strlwr
    458458@ stub _strncoll #(str str long)
    459459@ cdecl _strnicmp(str str long) strncasecmp
    460460@ stub _strnicoll #(str str long)
    461 @ cdecl _strnset(str long long) _strnset
    462 @ cdecl _strrev(str) _strrev
    463 @ cdecl _strset(str long) _strset
    464 @ cdecl _strtime(str) _strtime
    465 @ forward _strupr ntdll._strupr
    466 @ cdecl _swab(str str long) _swab
     461@ cdecl _strnset(str long long)
     462@ cdecl _strrev(str)
     463@ cdecl _strset(str long)
     464@ cdecl _strtime(ptr)
     465@ cdecl _strupr(str) ntdll._strupr
     466@ cdecl _swab(str str long)
    467467@ extern _sys_errlist MSVCRT__sys_errlist
    468468@ extern _sys_nerr MSVCRT__sys_nerr
    469 @ cdecl _tell(long) _tell
     469@ cdecl _tell(long)
    470470@ stub _telli64 #(long)
    471 @ cdecl _tempnam(str str) _tempnam
    472 @ stub _timezone #()
     471@ cdecl _tempnam(str str)
     472@ stub _timezone # extern
    473473@ cdecl _tolower(long) MSVCRT__tolower
    474474@ cdecl _toupper(long) MSVCRT__toupper
    475 @ stub _tzname
     475@ stub _tzname # extern
    476476@ cdecl _tzset() tzset
    477 @ stub _ui64toa #(long str long)
    478 @ stub _ui64tow #(long wstr long)
    479 @ forward _ultoa ntdll._ultoa
    480 @ forward _ultow ntdll._ultow
    481 @ cdecl _umask(long) _umask
    482 @ cdecl _ungetch(long) _ungetch
    483 @ cdecl _unlink(str) _unlink
    484 @ cdecl _unloaddll(long) _unloaddll
    485 @ cdecl _unlock(long) _unlock
    486 @ cdecl _utime(str ptr) _utime
     477@ cdecl _ui64toa(long long ptr long) ntdll._ui64toa
     478@ cdecl _ui64tow(long long ptr long) ntdll._ui64tow
     479@ cdecl _ultoa(long ptr long) ntdll._ultoa
     480@ cdecl _ultow(long ptr long) ntdll._ultow
     481@ cdecl _umask(long)
     482@ cdecl _ungetch(long)
     483@ cdecl _unlink(str)
     484@ cdecl _unloaddll(long)
     485@ cdecl _unlock(long)
     486@ cdecl _utime(str ptr)
    487487@ cdecl _vsnprintf(ptr long ptr ptr) vsnprintf
    488 @ cdecl _vsnwprintf(ptr long wstr long) _vsnwprintf
    489 @ cdecl _waccess(wstr long) _waccess
     488@ cdecl _vsnwprintf(ptr long wstr long)
     489@ cdecl _waccess(wstr long)
    490490@ stub _wasctime #(ptr)
    491 @ cdecl _wchdir(wstr) _wchdir
    492 @ cdecl _wchmod(wstr long) _wchmod
     491@ cdecl _wchdir(wstr)
     492@ cdecl _wchmod(wstr long)
    493493@ extern _wcmdln MSVCRT__wcmdln
    494 @ cdecl _wcreat(wstr long) _wcreat
    495 @ cdecl _wcsdup(wstr) _wcsdup
    496 @ forward _wcsicmp ntdll._wcsicmp
    497 @ cdecl _wcsicoll(wstr wstr) _wcsicoll
    498 @ forward _wcslwr ntdll._wcslwr
     494@ cdecl _wcreat(wstr long)
     495@ cdecl _wcsdup(wstr)
     496@ cdecl _wcsicmp(wstr wstr) ntdll._wcsicmp
     497@ cdecl _wcsicoll(wstr wstr)
     498@ cdecl _wcslwr(wstr) ntdll._wcslwr
    499499@ stub _wcsncoll #(wstr wstr long)
    500 @ forward _wcsnicmp ntdll._wcsnicmp
     500@ cdecl _wcsnicmp(wstr wstr long) ntdll._wcsnicmp
    501501@ stub _wcsnicoll #(wstr wstr long)
    502 @ cdecl _wcsnset(wstr long long) _wcsnset
    503 @ cdecl _wcsrev(wstr) _wcsrev
    504 @ cdecl _wcsset(wstr long) _wcsset
    505 @ forward _wcsupr ntdll._wcsupr
     502@ cdecl _wcsnset(wstr long long)
     503@ cdecl _wcsrev(wstr)
     504@ cdecl _wcsset(wstr long)
     505@ cdecl _wcsupr(wstr) ntdll._wcsupr
    506506@ stub _wctime #(ptr)
    507507@ extern _wenviron MSVCRT__wenviron
     
    510510@ stub _wexeclp #(wstr wstr) varargs
    511511@ stub _wexeclpe #(wstr wstr) varargs
    512 @ stub _wexecv #(wstr wstr)
    513 @ stub _wexecve #(wstr wstr wstr)
    514 @ stub _wexecvp #(wstr wstr)
    515 @ stub _wexecvpe #(wstr wstr wstr)
    516 @ cdecl _wfdopen(long wstr) _wfdopen
    517 @ cdecl _wfindfirst(wstr ptr) _wfindfirst
     512@ stub _wexecv #(wstr ptr)
     513@ stub _wexecve #(wstr ptr ptr)
     514@ stub _wexecvp #(wstr ptr)
     515@ stub _wexecvpe #(wstr ptr ptr)
     516@ cdecl _wfdopen(long wstr)
     517@ cdecl _wfindfirst(wstr ptr)
    518518@ stub _wfindfirsti64 #(wstr ptr)
    519 @ cdecl _wfindnext(long ptr)  _wfindnext
     519@ cdecl _wfindnext(long ptr)
    520520@ stub _wfindnexti64 #(long ptr)
    521 @ cdecl _wfopen(wstr wstr) _wfopen
     521@ cdecl _wfopen(wstr wstr)
    522522@ stub _wfreopen #(wstr wstr ptr)
    523 @ cdecl _wfsopen(wstr wstr long) _wfsopen
    524 @ stub _wfullpath #(wstr wstr long)
    525 @ cdecl _wgetcwd(wstr long) _wgetcwd
    526 @ cdecl _wgetdcwd(long wstr long) _wgetdcwd
    527 @ cdecl _wgetenv(wstr) _wgetenv
     523@ cdecl _wfsopen(wstr wstr long)
     524@ stub _wfullpath #(ptr wstr long)
     525@ cdecl _wgetcwd(wstr long)
     526@ cdecl _wgetdcwd(long wstr long)
     527@ cdecl _wgetenv(wstr)
    528528@ extern _winmajor MSVCRT__winmajor
    529529@ extern _winminor MSVCRT__winminor
    530530@ extern _winver MSVCRT__winver
    531 @ cdecl _wmakepath(wstr wstr wstr wstr wstr) _wmakepath
    532 @ cdecl _wmkdir(wstr) _wmkdir
    533 @ cdecl _wmktemp(wstr) _wmktemp
    534 @ varargs _wopen(wstr long) _wopen
     531@ cdecl _wmakepath(wstr wstr wstr wstr wstr)
     532@ cdecl _wmkdir(wstr)
     533@ cdecl _wmktemp(wstr)
     534@ varargs _wopen(wstr long)
    535535@ stub _wperror #(wstr)
    536 @ stub _wpgmptr
     536@ stub _wpgmptr # extern
    537537@ stub _wpopen #(wstr wstr)
    538 @ cdecl _wputenv(wstr) _wputenv
    539 @ cdecl _wremove(wstr) _wremove
    540 @ cdecl _wrename(wstr wstr) _wrename
    541 @ cdecl _write(long ptr long) _write
    542 @ cdecl _wrmdir(wstr) _wrmdir
    543 @ stub _wsearchenv #(wstr wstr wstr)
     538@ cdecl _wputenv(wstr)
     539@ cdecl _wremove(wstr)
     540@ cdecl _wrename(wstr wstr)
     541@ cdecl _write(long ptr long)
     542@ cdecl _wrmdir(wstr)
     543@ stub _wsearchenv #(wstr wstr ptr)
    544544@ stub _wsetlocale #(long wstr)
    545545@ varargs _wsopen (wstr long long) MSVCRT__wsopen
     
    548548@ stub _wspawnlp #(long wstr wstr) varargs
    549549@ stub _wspawnlpe #(long wstr wstr) varargs
    550 @ stub _wspawnv #(long wstr wstr)
    551 @ stub _wspawnve #(long wstr wstr wstr)
    552 @ stub _wspawnvp #(long wstr wstr)
    553 @ stub _wspawnvpe #(long wstr wstr wstr)
    554 @ cdecl _wsplitpath(wstr wstr wstr wstr wstr) _wsplitpath
    555 @ cdecl _wstat(wstr ptr) _wstat
     550@ stub _wspawnv #(long wstr ptr)
     551@ stub _wspawnve #(long wstr ptr ptr)
     552@ stub _wspawnvp #(long wstr ptr)
     553@ stub _wspawnvpe #(long wstr ptr ptr)
     554@ cdecl _wsplitpath(wstr wstr wstr wstr wstr)
     555@ cdecl _wstat(wstr ptr)
    556556@ stub _wstati64 #(wstr ptr)
    557 @ stub _wstrdate #(wstr)
    558 @ stub _wstrtime #(wstr)
     557@ stub _wstrdate #(ptr)
     558@ stub _wstrtime #(ptr)
    559559@ stub _wsystem #(wstr)
    560 @ cdecl _wtempnam(wstr wstr) _wtempnam
    561 @ stub _wtmpnam #(wstr)
    562 @ forward _wtoi NTDLL._wtoi
    563 @ stub _wtoi64 #(wstr)
    564 @ forward _wtol NTDLL._wtol
    565 @ cdecl _wunlink(wstr) _wunlink
    566 @ cdecl _wutime(wstr ptr) _wutime
    567 @ cdecl _y0(double) _y0
    568 @ cdecl _y1(double) _y1
    569 @ cdecl _yn(long double ) _yn
     560@ cdecl _wtempnam(wstr wstr)
     561@ stub _wtmpnam #(ptr)
     562@ cdecl _wtoi(wstr) ntdll._wtoi
     563@ cdecl _wtoi64(wstr) ntdll._wtoi64
     564@ cdecl _wtol(wstr) ntdll._wtol
     565@ cdecl _wunlink(wstr)
     566@ cdecl _wutime(wstr ptr)
     567@ cdecl _y0(double)
     568@ cdecl _y1(double)
     569@ cdecl _yn(long double )
    570570@ cdecl abort() MSVCRT_abort
    571 @ cdecl abs(long) abs
    572 @ cdecl acos(double) acos
    573 @ cdecl asctime(ptr) asctime
    574 @ cdecl asin(double) asin
    575 @ cdecl atan(double) atan
    576 @ cdecl atan2(double double) atan2
     571@ cdecl abs(long)
     572@ cdecl acos(double)
     573@ cdecl asctime(ptr)
     574@ cdecl asin(double)
     575@ cdecl atan(double)
     576@ cdecl atan2(double double)
    577577@ cdecl atexit(ptr) MSVCRT_atexit
    578 @ cdecl atof(str) atof
    579 @ cdecl atoi(str) atoi
    580 @ cdecl atol(str) atol
    581 @ cdecl bsearch(ptr ptr long long ptr) bsearch
     578@ cdecl atof(str)
     579@ cdecl atoi(str)
     580@ cdecl atol(str)
     581@ cdecl bsearch(ptr ptr long long ptr)
    582582@ cdecl calloc(long long) MSVCRT_calloc
    583 @ cdecl ceil(double) ceil
     583@ cdecl ceil(double)
    584584@ cdecl clearerr(ptr) MSVCRT_clearerr
    585585@ cdecl clock() MSVCRT_clock
    586 @ cdecl cos(double) cos
    587 @ cdecl cosh(double) cosh
    588 @ cdecl ctime(ptr) ctime
     586@ cdecl cos(double)
     587@ cdecl cosh(double)
     588@ cdecl ctime(ptr)
    589589@ cdecl difftime(long long) MSVCRT_difftime
    590590@ cdecl div(long long) MSVCRT_div
    591591@ cdecl exit(long) MSVCRT_exit
    592 @ cdecl exp(double) exp
    593 @ cdecl fabs(double) fabs
     592@ cdecl exp(double)
     593@ cdecl fabs(double)
    594594@ cdecl fclose(ptr) MSVCRT_fclose
    595595@ cdecl feof(ptr) MSVCRT_feof
     
    601601@ cdecl fgetwc(ptr) MSVCRT_fgetwc
    602602@ cdecl fgetws(ptr long ptr) MSVCRT_fgetws
    603 @ cdecl floor(double) floor
    604 @ cdecl fmod(double double) fmod
     603@ cdecl floor(double)
     604@ cdecl fmod(double double)
    605605@ cdecl fopen(str str) MSVCRT_fopen
    606606@ varargs fprintf(ptr str) MSVCRT_fprintf
     
    612612@ cdecl free(ptr) MSVCRT_free
    613613@ cdecl freopen(str str ptr) MSVCRT_freopen
    614 @ cdecl frexp(double ptr) frexp
     614@ cdecl frexp(double ptr)
    615615@ varargs fscanf(ptr str) MSVCRT_fscanf
    616616@ cdecl fseek(ptr long long) MSVCRT_fseek
     
    626626@ cdecl getwc(ptr) MSVCRT_getwc
    627627@ cdecl getwchar() MSVCRT_getwchar
    628 @ cdecl gmtime(ptr) gmtime
    629 @ forward is_wctype ntdll.iswctype
     628@ cdecl gmtime(ptr)
     629@ cdecl is_wctype(long long) ntdll.iswctype
    630630@ cdecl isalnum(long) MSVCRT_isalnum
    631631@ cdecl isalpha(long) MSVCRT_isalpha
     
    640640@ cdecl isupper(long) MSVCRT_isupper
    641641@ cdecl iswalnum(long) MSVCRT_iswalnum
    642 @ forward iswalpha ntdll.iswalpha
     642@ cdecl iswalpha(long) ntdll.iswalpha
    643643@ cdecl iswascii(long) MSVCRT_iswascii
    644644@ cdecl iswcntrl(long) MSVCRT_iswcntrl
    645 @ forward iswctype ntdll.iswctype
     645@ cdecl iswctype(long long) ntdll.iswctype
    646646@ cdecl iswdigit(long) MSVCRT_iswdigit
    647647@ cdecl iswgraph(long) MSVCRT_iswgraph
     
    653653@ cdecl iswxdigit(long) MSVCRT_iswxdigit
    654654@ cdecl isxdigit(long) MSVCRT_isxdigit
    655 @ cdecl labs(long) labs
     655@ cdecl labs(long)
    656656@ cdecl ldexp( double long) MSVCRT_ldexp
    657657@ cdecl ldiv(long long) MSVCRT_ldiv
    658658@ stub localeconv #()
    659 @ cdecl localtime(ptr) localtime
    660 @ cdecl log(double) log
    661 @ cdecl log10(double) log10
     659@ cdecl localtime(ptr)
     660@ cdecl log(double)
     661@ cdecl log10(double)
    662662@ cdecl -register -i386 longjmp(ptr long) _MSVCRT_longjmp
    663663@ cdecl malloc(long) MSVCRT_malloc
    664664@ cdecl mblen(ptr long) MSVCRT_mblen
    665 @ forward mbstowcs ntdll.mbstowcs
     665@ cdecl mbstowcs(ptr str long) ntdll.mbstowcs
    666666@ cdecl mbtowc(wstr str long) MSVCRT_mbtowc
    667 @ cdecl memchr(ptr long long) memchr
    668 @ cdecl memcmp(ptr ptr long) memcmp
    669 @ cdecl memcpy(ptr ptr long) memcpy
    670 @ cdecl memmove(ptr ptr long) memmove
    671 @ cdecl memset(ptr long long) memset
     667@ cdecl memchr(ptr long long)
     668@ cdecl memcmp(ptr ptr long)
     669@ cdecl memcpy(ptr ptr long)
     670@ cdecl memmove(ptr ptr long)
     671@ cdecl memset(ptr long long)
    672672@ cdecl mktime(ptr) MSVCRT_mktime
    673 @ cdecl modf(double ptr) modf
     673@ cdecl modf(double ptr)
    674674@ cdecl perror(str) MSVCRT_perror
    675 @ cdecl pow(double double) pow
     675@ cdecl pow(double double)
    676676@ varargs printf(str) MSVCRT_printf
    677677@ cdecl putc(long ptr) MSVCRT_putc
     
    680680@ cdecl putwc(long ptr) MSVCRT_fputwc
    681681@ cdecl putwchar(long) _fputwchar
    682 @ cdecl qsort(ptr long long ptr) qsort
     682@ cdecl qsort(ptr long long ptr)
    683683@ stub raise #(long)
    684684@ cdecl rand() MSVCRT_rand
     
    692692@ cdecl setvbuf(ptr str long long) MSVCRT_setvbuf
    693693@ cdecl signal(long long) MSVCRT_signal
    694 @ cdecl sin(double) sin
    695 @ cdecl sinh(double) sinh
    696 @ varargs sprintf(ptr str) sprintf
    697 @ cdecl sqrt(double) sqrt
    698 @ cdecl srand(long) srand
     694@ cdecl sin(double)
     695@ cdecl sinh(double)
     696@ varargs sprintf(ptr str)
     697@ cdecl sqrt(double)
     698@ cdecl srand(long)
    699699@ varargs sscanf(str str) MSVCRT_sscanf
    700 @ cdecl strcat(str str) strcat
    701 @ cdecl strchr(str long) strchr
    702 @ cdecl strcmp(str str) strcmp
    703 @ cdecl strcoll(str str) strcoll
    704 @ cdecl strcpy(ptr str) strcpy
    705 @ cdecl strcspn(str str) strcspn
     700@ cdecl strcat(str str)
     701@ cdecl strchr(str long)
     702@ cdecl strcmp(str str)
     703@ cdecl strcoll(str str)
     704@ cdecl strcpy(ptr str)
     705@ cdecl strcspn(str str)
    706706@ cdecl strerror(long) MSVCRT_strerror
    707 @ cdecl strftime(str long str ptr) strftime
    708 @ cdecl strlen(str) strlen
    709 @ cdecl strncat(str str long) strncat
    710 @ cdecl strncmp(str str long) strncmp
    711 @ cdecl strncpy(ptr str long) strncpy
    712 @ cdecl strpbrk(str str) strpbrk
    713 @ cdecl strrchr(str long) strrchr
    714 @ cdecl strspn(str str) strspn
    715 @ cdecl strstr(str str) strstr
    716 @ cdecl strtod(str ptr) strtod
    717 @ cdecl strtok(str str) strtok
    718 @ cdecl strtol(str ptr long) strtol
    719 @ cdecl strtoul(str ptr long) strtoul
    720 @ cdecl strxfrm(ptr str long) strxfrm
    721 @ forward swprintf ntdll.swprintf
     707@ cdecl strftime(str long str ptr)
     708@ cdecl strlen(str)
     709@ cdecl strncat(str str long)
     710@ cdecl strncmp(str str long)
     711@ cdecl strncpy(ptr str long)
     712@ cdecl strpbrk(str str)
     713@ cdecl strrchr(str long)
     714@ cdecl strspn(str str)
     715@ cdecl strstr(str str)
     716@ cdecl strtod(str ptr)
     717@ cdecl strtok(str str)
     718@ cdecl strtol(str ptr long)
     719@ cdecl strtoul(str ptr long)
     720@ cdecl strxfrm(ptr str long)
     721@ varargs swprintf(wstr wstr) ntdll.swprintf
    722722@ varargs swscanf(wstr wstr) MSVCRT_swscanf
    723723@ cdecl system(str) MSVCRT_system
    724 @ cdecl tan(double) tan
    725 @ cdecl tanh(double) tanh
     724@ cdecl tan(double)
     725@ cdecl tanh(double)
    726726@ cdecl time(ptr) MSVCRT_time
    727727@ cdecl tmpfile() MSVCRT_tmpfile
    728 @ cdecl tmpnam(str) MSVCRT_tmpnam
    729 @ cdecl tolower(long) tolower
    730 @ cdecl toupper(long) toupper
    731 @ forward towlower ntdll.towlower
    732 @ forward towupper ntdll.towupper
     728@ cdecl tmpnam(ptr) MSVCRT_tmpnam
     729@ cdecl tolower(long)
     730@ cdecl toupper(long)
     731@ cdecl towlower(long) ntdll.towlower
     732@ cdecl towupper(long) ntdll.towupper
    733733@ cdecl ungetc(long ptr) MSVCRT_ungetc
    734734@ cdecl ungetwc(long ptr) MSVCRT_ungetwc
     
    736736@ cdecl vfwprintf(ptr wstr long) MSVCRT_vfwprintf
    737737@ cdecl vprintf(str long) MSVCRT_vprintf
    738 @ cdecl vsprintf(ptr str ptr) vsprintf
     738@ cdecl vsprintf(ptr str ptr)
    739739@ cdecl vswprintf(ptr wstr long) MSVCRT_vswprintf
    740740@ cdecl vwprintf(wstr long) MSVCRT_vwprintf
    741 @ forward wcscat ntdll.wcscat
    742 @ forward wcschr ntdll.wcschr
    743 @ forward wcscmp ntdll.wcscmp
     741@ cdecl wcscat(wstr wstr) ntdll.wcscat
     742@ cdecl wcschr(wstr long) ntdll.wcschr
     743@ cdecl wcscmp(wstr wstr) ntdll.wcscmp
    744744@ cdecl wcscoll(wstr wstr) MSVCRT_wcscoll
    745 @ forward wcscpy ntdll.wcscpy
    746 @ forward wcscspn ntdll.wcscspn
    747 @ stub wcsftime #(wstr long wstr ptr)
    748 @ forward wcslen ntdll.wcslen
    749 @ forward wcsncat ntdll.wcsncat
    750 @ forward wcsncmp ntdll.wcsncmp
    751 @ forward wcsncpy ntdll.wcsncpy
     745@ cdecl wcscpy(ptr wstr) ntdll.wcscpy
     746@ cdecl wcscspn(wstr wstr) ntdll.wcscspn
     747@ stub wcsftime #(ptr long wstr ptr)
     748@ cdecl wcslen(wstr) ntdll.wcslen
     749@ cdecl wcsncat(wstr wstr long) ntdll.wcsncat
     750@ cdecl wcsncmp(wstr wstr long) ntdll.wcsncmp
     751@ cdecl wcsncpy(ptr wstr long) ntdll.wcsncpy
    752752@ cdecl wcspbrk(wstr wstr) MSVCRT_wcspbrk
    753 @ forward wcsrchr ntdll.wcsrchr
    754 @ forward wcsspn ntdll.wcsspn
    755 @ forward wcsstr ntdll.wcsstr
     753@ cdecl wcsrchr(wstr long) ntdll.wcsrchr
     754@ cdecl wcsspn(wstr wstr) ntdll.wcsspn
     755@ cdecl wcsstr(wstr wstr) ntdll.wcsstr
    756756@ stub wcstod #(wstr ptr)
    757 @ forward wcstok ntdll.wcstok
    758 @ forward wcstol ntdll.wcstol
    759 @ forward wcstombs ntdll.wcstombs
    760 @ forward wcstoul ntdll.wcstoul
    761 @ stub wcsxfrm #(wstr wstr long)
     757@ cdecl wcstok(wstr wstr) ntdll.wcstok
     758@ cdecl wcstol(wstr ptr long) ntdll.wcstol
     759@ cdecl wcstombs(ptr ptr long) ntdll.wcstombs
     760@ cdecl wcstoul(wstr ptr long) ntdll.wcstoul
     761@ stub wcsxfrm #(ptr wstr long)
    762762@ cdecl wctomb(ptr long) MSVCRT_wctomb
    763763@ varargs wprintf(wstr) MSVCRT_wprintf
  • trunk/src/msvcrt/msvcrt20.def

    r9655 r10005  
    1 ; $Id: msvcrt20.def,v 1.12 2003-01-10 13:13:49 sandervl Exp $
     1; $Id: msvcrt20.def,v 1.13 2003-04-10 10:28:04 sandervl Exp $
    22
    33;
     
    569569;  _dup2 = _dup2        @555
    570570  _ecvt = _ecvt @556
    571   _endthread = _endthread       @557
     571  _endthread @557
    572572  _endthreadex = _endthreadex   @558
    573573  _environ = _environ   @559
  • trunk/src/msvcrt/msvcrt20.mak

    r9677 r10005  
    1 # $Id: msvcrt20.mak,v 1.7 2003-01-15 10:43:16 sandervl Exp $
     1# $Id: msvcrt20.mak,v 1.8 2003-04-10 10:28:04 sandervl Exp $
    22
    33#
     
    3333$(OBJDIR)\$(TARGET)rsrc.obj
    3434
     35LIBS = \
     36$(ODIN32_LIB)\msvcrt.lib \
     37$(ODIN32_LIB)\kernel32.lib \
     38$(ODIN32_LIB)\ntdll.lib \
     39$(ODIN32_LIB)\user32.lib \
     40$(EMX)\lib\mt\c.lib \
     41$(EMX)\lib\mt\c_dllso.lib \
     42$(EMX)\lib\mt\sys.lib \
     43$(EMX)\lib\os2.lib \
     44
     45
    3546#
    3647# Target name - name of the dll without extention and path.
     
    3950
    4051all: $(OBJDIR) $(OBJDIR)\$(TARGET).dll $(TARGET).lib
    41 
    42 $(OBJDIR)\$(TARGET).dll: $(OBJS) $(TARGET).def
    43     $(LD) $(LDFLAGS) -Zso -Zsys $(OBJS) $(TARGET).def -L.\libs -lm\
    44       -L$(OBJDIR) -liberty_s -lmsvcrt -o $(OBJDIR)\$(TARGET).dll
    45     touch $(OBJDIR)\$(TARGET).map
    46     @echo "Illegal Sym File for EMX" > $(OBJDIR)\$(TARGET).sym
    4752
    4853$(TARGET).lib:
  • trunk/src/msvcrt/msvcrt20.spec

    r9655 r10005  
    1 ; $Id: msvcrt20.spec,v 1.2 2003-01-10 13:13:49 sandervl Exp $
     1; $Id: msvcrt20.spec,v 1.3 2003-04-10 10:28:04 sandervl Exp $
    22
    33;
  • trunk/src/msvcrt/msvcrt20rsrc.orc

    r9655 r10005  
    1 /* $Id: msvcrt20rsrc.orc,v 1.4 2003-01-10 13:13:50 sandervl Exp $ */
     1/* $Id: msvcrt20rsrc.orc,v 1.5 2003-04-10 10:28:05 sandervl Exp $ */
    22
    33#include "winuser.h"
  • trunk/src/msvcrt/msvcrt40.def

    r9655 r10005  
    1 ; $Id: msvcrt40.def,v 1.12 2003-01-10 13:13:50 sandervl Exp $
     1; $Id: msvcrt40.def,v 1.13 2003-04-10 10:28:05 sandervl Exp $
    22
    33;
  • trunk/src/msvcrt/msvcrt40.mak

    r9677 r10005  
    1 # $Id: msvcrt40.mak,v 1.7 2003-01-15 10:43:16 sandervl Exp $
     1# $Id: msvcrt40.mak,v 1.8 2003-04-10 10:28:05 sandervl Exp $
    22
    33#
     
    3333$(OBJDIR)\$(TARGET)rsrc.obj
    3434
     35LIBS = \
     36$(ODIN32_LIB)\kernel32.lib \
     37$(ODIN32_LIB)\msvcrt.lib \
     38$(ODIN32_LIB)\ntdll.lib \
     39$(ODIN32_LIB)\user32.lib \
     40$(EMX)\lib\mt\c.lib \
     41$(EMX)\lib\mt\c_dllso.lib \
     42$(EMX)\lib\mt\sys.lib \
     43$(EMX)\lib\os2.lib \
     44
    3545#
    3646# Target name - name of the dll without extention and path.
     
    3949
    4050all: $(OBJDIR) $(OBJDIR)\$(TARGET).dll $(TARGET).lib
    41 
    42 $(OBJDIR)\$(TARGET).dll: $(OBJS) $(TARGET).def
    43     $(LD) $(LDFLAGS) -Zso -Zsys $(OBJS) $(TARGET).def -L.\libs -lm\
    44       -L$(OBJDIR) -liberty_s -lmsvcrt -o $(OBJDIR)\$(TARGET).dll
    45     touch $(OBJDIR)\$(TARGET).map
    46     @echo "Illegal Sym File for EMX" > $(OBJDIR)\$(TARGET).sym
    4751
    4852$(TARGET).lib:
  • trunk/src/msvcrt/msvcrt40rsrc.orc

    r9655 r10005  
    1 /* $Id: msvcrt40rsrc.orc,v 1.4 2003-01-10 13:13:50 sandervl Exp $ */
     1/* $Id: msvcrt40rsrc.orc,v 1.5 2003-04-10 10:28:05 sandervl Exp $ */
    22
    33#include "winuser.h"
  • trunk/src/msvcrt/msvcrtrsrc.orc

    r9655 r10005  
    1 /* $Id: msvcrtrsrc.orc,v 1.4 2003-01-10 13:13:51 sandervl Exp $ */
     1/* $Id: msvcrtrsrc.orc,v 1.5 2003-04-10 10:28:06 sandervl Exp $ */
    22
    33#include "winuser.h"
  • trunk/src/msvcrt/process.c

    r9633 r10005  
    2828#ifdef __WIN32OS2__
    2929#include <emxheader.h>
     30#include <string.h>
    3031#else
    3132#include "config.h"
     
    203204 *              _cwait (MSVCRT.@)
    204205 */
    205 int _cwait(int *status, int pid, int action)
     206int MSVCRT__cwait(int *status, int pid, int action)
    206207{
    207208  HANDLE hPid = (HANDLE)pid;
     
    225226  {
    226227    *MSVCRT__errno() =  MSVCRT_ECHILD;
    227     *__doserrno() = doserrno;
     228    *MSVCRT_doserrno() = doserrno;
    228229  }
    229230  else
     
    239240 * or double-quotes.
    240241 */
    241 int _execl(const char* name, const char* arg0, ...)
     242int MSVCRT__execl(const char* name, const char* arg0, ...)
    242243{
    243244  va_list ap;
     
    261262 * or double-quotes.
    262263 */
    263 int _execlp(const char* name, const char* arg0, ...)
     264int MSVCRT__execlp(const char* name, const char* arg0, ...)
    264265{
    265266  va_list ap;
     
    268269  char fullname[MAX_PATH];
    269270
    270   _searchenv(name, "PATH", fullname);
     271  MSVCRT__searchenv(name, "PATH", fullname);
    271272
    272273  va_start(ap, arg0);
     
    286287 * or double-quotes.
    287288 */
    288 int _execv(const char* name, char* const* argv)
    289 {
    290   return _spawnve(_P_OVERLAY, name, (const char* const*) argv, NULL);
     289int MSVCRT__execv(const char* name, char* const* argv)
     290{
     291  return MSVCRT__spawnve(_P_OVERLAY, name, (const char* const*) argv, NULL);
    291292}
    292293
     
    297298 * or double-quotes.
    298299 */
    299 int _execve(const char* name, char* const* argv, const char* const* envv)
    300 {
    301   return _spawnve(_P_OVERLAY, name, (const char* const*) argv, envv);
     300int MSVCRT__execve(const char* name, char* const* argv, const char* const* envv)
     301{
     302  return MSVCRT__spawnve(_P_OVERLAY, name, (const char* const*) argv, envv);
    302303}
    303304
     
    308309 * or double-quotes.
    309310 */
    310 int _execvpe(const char* name, char* const* argv, const char* const* envv)
     311int MSVCRT__execvpe(const char* name, char* const* argv, const char* const* envv)
    311312{
    312313  char fullname[MAX_PATH];
    313314
    314   _searchenv(name, "PATH", fullname);
    315   return _spawnve(_P_OVERLAY, fullname[0] ? fullname : name,
     315  MSVCRT__searchenv(name, "PATH", fullname);
     316  return MSVCRT__spawnve(_P_OVERLAY, fullname[0] ? fullname : name,
    316317                  (const char* const*) argv, envv);
    317318}
     
    323324 * or double-quotes.
    324325 */
    325 int _execvp(const char* name, char* const* argv)
    326 {
    327   return _execvpe(name, argv, NULL);
     326int MSVCRT__execvp(const char* name, char* const* argv)
     327{
     328  return MSVCRT__execvpe(name, argv, NULL);
    328329}
    329330
     
    334335 * or double-quotes.
    335336 */
    336 int _spawnl(int flags, const char* name, const char* arg0, ...)
     337int MSVCRT__spawnl(int flags, const char* name, const char* arg0, ...)
    337338{
    338339  va_list ap;
     
    356357 * or double-quotes.
    357358 */
    358 int _spawnlp(int flags, const char* name, const char* arg0, ...)
     359int MSVCRT__spawnlp(int flags, const char* name, const char* arg0, ...)
    359360{
    360361  va_list ap;
     
    363364  char fullname[MAX_PATH];
    364365
    365   _searchenv(name, "PATH", fullname);
     366  MSVCRT__searchenv(name, "PATH", fullname);
    366367
    367368  va_start(ap, arg0);
     
    381382 * or double-quotes.
    382383 */
    383 int _spawnve(int flags, const char* name, const char* const* argv,
     384int MSVCRT__spawnve(int flags, const char* name, const char* const* argv,
    384385                            const char* const* envv)
    385386{
     
    409410 * or double-quotes.
    410411 */
    411 int _spawnv(int flags, const char* name, const char* const* argv)
    412 {
    413   return _spawnve(flags, name, argv, NULL);
     412int MSVCRT__spawnv(int flags, const char* name, const char* const* argv)
     413{
     414  return MSVCRT__spawnve(flags, name, argv, NULL);
    414415}
    415416
     
    420421 * or double-quotes.
    421422 */
    422 int _spawnvpe(int flags, const char* name, const char* const* argv,
     423int MSVCRT__spawnvpe(int flags, const char* name, const char* const* argv,
    423424                            const char* const* envv)
    424425{
    425426  char fullname[MAX_PATH];
    426   _searchenv(name, "PATH", fullname);
    427   return _spawnve(flags, fullname[0] ? fullname : name, argv, envv);
     427  MSVCRT__searchenv(name, "PATH", fullname);
     428  return MSVCRT__spawnve(flags, fullname[0] ? fullname : name, argv, envv);
    428429}
    429430
     
    434435 * or double-quotes.
    435436 */
    436 int _spawnvp(int flags, const char* name, const char* const* argv)
    437 {
    438   return _spawnvpe(flags, name, argv, NULL);
     437int MSVCRT__spawnvp(int flags, const char* name, const char* const* argv)
     438{
     439  return MSVCRT__spawnvpe(flags, name, argv, NULL);
    439440}
    440441
     
    448449
    449450    /* Make a writable copy for CreateProcess */
    450     cmdcopy=_strdup(cmd);
     451    cmdcopy= MSVCRT__strdup(cmd);
    451452    /* FIXME: should probably launch cmd interpreter in COMSPEC */
    452453    res=msvcrt_spawn(_P_WAIT, NULL, cmdcopy, NULL);
     
    477478  }
    478479}
     480
     481/*********************************************************************
     482 *              _getdllprocaddr (MSVCRT.@)
     483 */
     484void *_getdllprocaddr(int dll, const char *name, int ordinal)
     485{
     486    if (name)
     487    {
     488        if (ordinal != -1) return NULL;
     489        return GetProcAddress( (HMODULE)dll, name );
     490    }
     491    if (HIWORD(ordinal)) return NULL;
     492    return GetProcAddress( (HMODULE)dll, (LPCSTR)(ULONG_PTR)ordinal );
     493}
  • trunk/src/msvcrt/relay2.S

    r9633 r10005  
    8181        .stabs "",100,0,0,.Letext
    8282.Letext:
     83
  • trunk/src/msvcrt/scanf.c

    r9633 r10005  
    2828#include "msvcrt.h"
    2929#include "msvcrt/conio.h"
     30#include "msvcrt/ctype.h"
    3031#include "msvcrt/io.h"
    3132#include "msvcrt/stdio.h"
    3233#include "msvcrt/wctype.h"
    3334#include "wine/debug.h"
    34 
     35#include <ctype.h>
    3536WINE_DEFAULT_DEBUG_CHANNEL(msvcrt);
    3637
  • trunk/src/msvcrt/scanf.h

    r9633 r10005  
    3434#define _CHAR_ char
    3535#define _EOF_ MSVCRT_EOF
    36 #define _ISSPACE_(c) isspace(c)
    37 #define _ISDIGIT_(c) isdigit(c)
     36#define _ISSPACE_(c) MSVCRT_isspace(c)
     37#define _ISDIGIT_(c) MSVCRT_isdigit(c)
    3838#define _CONVERT_(c) c /*** FIXME ***/
    3939#define _CHAR2DIGIT_(c, base) char2digit((c), (base))
     
    4141
    4242#ifdef CONSOLE
    43 #define _GETC_(file) _getch()
    44 #define _UNGETC_(nch, file) _ungetch(nch)
    45 #define _FUNCTION_ _cscanf(const _CHAR_ *format, ...)
     43#define _GETC_(file) MSVCRT__getch()
     44#define _UNGETC_(nch, file) MSVCRT__ungetch(nch)
     45#define _FUNCTION_ MSVCRT__cscanf(const _CHAR_ *format, ...)
    4646#else
    4747#ifdef STRING
     
    115115            int w_prefix = 0;
    116116            int prefix_finished = 0;
    117             /* int I64_prefix = 0; */
     117            int I64_prefix = 0;
    118118            format++;
    119119            /* look for leading asterisk, which means 'suppress assignment of
     
    139139                    if (*(format + 1) == '6' &&
    140140                        *(format + 2) == '4') {
    141                         /* I64_prefix = 1; */
     141                        I64_prefix = 1;
    142142                        format += 2;
    143143                        FIXME("I64 prefix currently not implemented in fscanf/fwscanf");
     
    222222#define _SET_NUMBER_(type) *va_arg(ap, type*) = negative ? -cur : cur
    223223                        if (number_signed) {
    224                             if (l_prefix) _SET_NUMBER_(long int);
     224                            if (I64_prefix)  _SET_NUMBER_(long long);
     225                            else if (l_prefix) _SET_NUMBER_(long int);
    225226                            else if (h_prefix) _SET_NUMBER_(short int);
    226227                            else _SET_NUMBER_(int);
     
    230231                                negative = 0;
    231232                            }
    232                             if (l_prefix) _SET_NUMBER_(unsigned long int);
     233                            if (I64_prefix)  _SET_NUMBER_(long long);
     234                            else if (l_prefix) _SET_NUMBER_(unsigned long int);
    233235                            else if (h_prefix)
    234236                                _SET_NUMBER_(unsigned short int);
  • trunk/src/msvcrt/string.c

    r9633 r10005  
    2525#include "msvcrt/stdlib.h"
    2626#include "msvcrt/string.h"
    27 
     27#include <string.h>
    2828#include "wine/debug.h"
    2929
     
    5151 *              _strdup (MSVCRT.@)
    5252 */
    53 char* _strdup(const char* str)
     53char* MSVCRT__strdup(const char* str)
    5454{
    5555    char * ret = MSVCRT_malloc(strlen(str)+1);
     
    6161 *              _strnset (MSVCRT.@)
    6262 */
    63 char* _strnset(char* str, int value, unsigned int len)
     63char* MSVCRT__strnset(char* str, int value, unsigned int len)
    6464{
     65  dprintf(("MSVCRT: _strnset %s %d %d",str, value, len));
    6566  if (len > 0 && str)
    6667    while (*str && len--)
     
    7273 *              _strrev (MSVCRT.@)
    7374 */
    74 char* _strrev(char* str)
     75char* MSVCRT__strrev(char* str)
    7576{
    7677  char * p1;
    7778  char * p2;
     79
     80  dprintf(("MSVCRT: _strrev %s",str));
    7881
    7982  if (str && *str)
     
    9194 *              _strset (MSVCRT.@)
    9295 */
    93 char* _strset(char* str, int value)
     96char* MSVCRT__strset(char* str, int value)
    9497{
    9598  char *ptr = str;
     99
     100  dprintf(("MSVCRT: _strset %s %d",str, value));
     101
    96102  while (*ptr)
    97103    *ptr++ = value;
     
    103109 *              _swab (MSVCRT.@)
    104110 */
    105 void _swab(char* src, char* dst, int len)
     111void MSVCRT__swab(char* src, char* dst, int len)
    106112{
     113  dprintf(("MSVCRT: _swab %s %s %d",src, dst, len));
     114
    107115  if (len > 1)
    108116  {
     
    116124  }
    117125}
     126
     127int MSVCRT_strncmp (const char* a,const char* b,MSVCRT(size_t) c)
     128{
     129  dprintf(("MSVCRT: strncmp %s,%s (%d)",a,b,c));
     130  return strncmp(a,b,c);
     131}
     132
  • trunk/src/msvcrt/thread.c

    r9633 r10005  
    1919 */
    2020#include "msvcrt.h"
    21 
     21#include <string.h>
    2222#include "msvcrt/malloc.h"
    2323#include "msvcrt/process.h"
     
    7575 *              _beginthread (MSVCRT.@)
    7676 */
    77 unsigned long MSVCRT_beginthread(
     77unsigned long MSVCRT__beginthread(
    7878  _beginthread_start_routine_t start_address, /* [in] Start address of routine that begins execution of new thread */
    7979  unsigned int stack_size, /* [in] Stack size for new thread or 0 */
     
    115115
    116116/*********************************************************************
    117  *              MSVCRT_endthread (MSVCRT.@)
     117 *              MSVCRT__endthread (MSVCRT.@)
    118118 */
    119 void MSVCRT_endthread(void)
     119void MSVCRT__endthread(void)
    120120{
    121   TRACE("(void)\n");
     121  TRACE("MSVCRT: _endthread(void)\n");
    122122
    123123  /* FIXME */
     
    131131  unsigned int retval) /* [in] Thread exit code */
    132132{
    133   TRACE("(%d)\n", retval);
     133  TRACE("MSVCRT: _endthreadex (%d)\n", retval);
    134134
    135135  /* FIXME */
  • trunk/src/msvcrt/time.c

    r9633 r10005  
    2323#ifdef __WIN32OS2__
    2424#include <emxheader.h>
    25 #include <sys/times.h>
     25#include <unistd.h>
     26#include <time.h>
     27#include <sys\times.h>
    2628#else
    2729#include "config.h"
     
    6365{
    6466  MSVCRT_time_t res;
     67  dprintf(("MSVCRT: mktime"));
    6568  struct tm tm;
    6669
     
    8992 *              _strdate (MSVCRT.@)
    9093 */
    91 char* _strdate(char* date)
     94char* MSVCRT__strdate(char* date)
    9295{
     96  dprintf(("MSVCRT: _strdate"));
    9397  return msvcrt_get_current_time(date,"%m/%d/%y");
    9498}
     
    97101 *              _strtime (MSVCRT.@)
    98102 */
    99 char* _strtime(char* date)
     103char* MSVCRT__strtime(char* date)
    100104{
     105  dprintf(("MSVCRT: _strtime"));
    101106  return msvcrt_get_current_time(date,"%H:%M:%S");
    102107}
     
    110115  clock_t res;
    111116
    112   times(&alltimes);
     117  dprintf(("MSVCRT: clock"));
     118
     119  emx__times(&alltimes);
    113120  res = alltimes.tms_utime + alltimes.tms_stime +
    114121        alltimes.tms_cutime + alltimes.tms_cstime;
     
    124131double MSVCRT_difftime(MSVCRT_time_t time1, MSVCRT_time_t time2)
    125132{
     133    dprintf(("MSVCRT: difftime"));
    126134    return (double)(time1 - time2);
    127135}
     
    133141{
    134142  MSVCRT_time_t curtime = time(NULL);
     143  dprintf(("MSVCRT: time"));
    135144  return buf ? *buf = curtime : curtime;
    136145}
     
    140149 */
    141150#ifdef __WIN32OS2__
    142 void MSVCRT_ftime(struct _timeb *buf)
     151void MSVCRT__ftime(struct _timeb *buf)
    143152#else
    144153void _ftime(struct _timeb *buf)
    145154#endif
    146155{
     156  dprintf(("MSVCRT: _ftime %p",buf));
    147157  buf->time = MSVCRT_time(NULL);
    148158  buf->millitm = 0; /* FIXME */
     
    150160  buf->dstflag = 0;
    151161}
     162
     163/*********************************************************************
     164 *              _daylight (MSVCRT.@)
     165 */
     166int MSVCRT___daylight = 1; /* FIXME: assume daylight */
     167
     168/*********************************************************************
     169 *              __p_daylight (MSVCRT.@)
     170 */
     171void *MSVCRT___p__daylight(void)
     172{
     173        return &MSVCRT___daylight;
     174}
  • trunk/src/msvcrt/wcs.c

    r9633 r10005  
    2020 */
    2121#include <limits.h>
     22#include <stdlib.h>
    2223#include <stdio.h>
     24#include <ctype.h>
     25#include <string.h>
     26
    2327#include "msvcrt.h"
    2428#include "winnls.h"
     
    5862{
    5963  MSVCRT_wchar_t* ret = NULL;
     64  dprintf(("MSVCRT: _wcsdup %s",debugstr_w(str)));
    6065  if (str)
    6166  {
     
    118123                const MSVCRT_wchar_t *format, va_list valist)
    119124{
    120 /* If you fix a bug in this function, fix it in ntdll/wcstring.c also! */
    121   unsigned int written = 0;
    122   const MSVCRT_wchar_t *iter = format;
    123   char bufa[256], fmtbufa[64], *fmta;
    124 
    125   TRACE("(%d,%s)\n",len,debugstr_w(format));
    126 
    127   while (*iter)
    128   {
    129     while (*iter && *iter != '%')
    130     {
    131      if (written++ >= len)
    132        return -1;
    133      *str++ = *iter++;
    134     }
    135     if (*iter == '%')
    136     {
    137       fmta = fmtbufa;
    138       *fmta++ = *iter++;
    139       while (*iter == '0' ||
    140              *iter == '+' ||
    141              *iter == '-' ||
    142              *iter == ' ' ||
    143              *iter == '0' ||
    144              *iter == '*' ||
    145              *iter == '#')
    146       {
    147         if (*iter == '*')
    148         {
    149           char *buffiter = bufa;
    150           int fieldlen = va_arg(valist, int);
    151           sprintf(buffiter, "%d", fieldlen);
    152           while (*buffiter)
    153             *fmta++ = *buffiter++;
    154         }
    155         else
    156           *fmta++ = *iter;
    157         iter++;
    158       }
    159 
    160       while (isdigit(*iter))
    161         *fmta++ = *iter++;
    162 
    163       if (*iter == '.')
    164       {
    165         *fmta++ = *iter++;
    166         if (*iter == '*')
    167         {
    168           char *buffiter = bufa;
    169           int fieldlen = va_arg(valist, int);
    170           sprintf(buffiter, "%d", fieldlen);
    171           while (*buffiter)
    172             *fmta++ = *buffiter++;
    173         }
    174         else
    175           while (isdigit(*iter))
    176             *fmta++ = *iter++;
    177       }
    178       if (*iter == 'h' ||
    179           *iter == 'l')
    180           *fmta++ = *iter++;
    181 
    182       switch (*iter)
    183       {
    184       case 's':
    185         {
    186           static const MSVCRT_wchar_t none[] = { '(', 'n', 'u', 'l', 'l', ')', 0 };
    187           const MSVCRT_wchar_t *wstr = va_arg(valist, const MSVCRT_wchar_t *);
    188           const MSVCRT_wchar_t *striter = wstr ? wstr : none;
    189           while (*striter)
    190           {
    191             if (written++ >= len)
    192               return -1;
    193             *str++ = *striter++;
    194           }
    195           iter++;
    196           break;
    197         }
    198 
    199       case 'c':
    200         if (written++ >= len)
    201           return -1;
    202         *str++ = (MSVCRT_wchar_t)va_arg(valist, int);
    203         iter++;
    204         break;
    205 
    206       default:
    207         {
    208           /* For non wc types, use system sprintf and append to wide char output */
    209           /* FIXME: for unrecognised types, should ignore % when printing */
    210           char *bufaiter = bufa;
    211           if (*iter == 'p')
    212             sprintf(bufaiter, "%08lX", va_arg(valist, long));
    213           else
    214           {
    215             *fmta++ = *iter;
    216             *fmta = '\0';
    217             if (*iter == 'f')
    218               sprintf(bufaiter, fmtbufa, va_arg(valist, double));
    219             else
    220               sprintf(bufaiter, fmtbufa, va_arg(valist, void *));
    221           }
    222           while (*bufaiter)
    223           {
    224             if (written++ >= len)
    225               return -1;
    226             *str++ = *bufaiter++;
    227           }
    228           iter++;
    229           break;
    230         }
    231       }
    232     }
    233   }
    234   if (written >= len)
    235     return -1;
    236   *str++ = 0;
    237   return (int)written;
     125    return vsnprintfW(str, len, format, valist);
    238126}
    239127
     
    243131int MSVCRT_vswprintf( MSVCRT_wchar_t* str, const MSVCRT_wchar_t* format, va_list args )
    244132{
    245   return _vsnwprintf( str, INT_MAX, format, args );
     133    return vsnprintfW( str, INT_MAX, format, args );
    246134}
    247135
     
    365253}
    366254
    367 /*********************************************************************
    368  *              _itow (MSVCRT.@)
    369  */
    370 MSVCRT_wchar_t* _itow(int value,MSVCRT_wchar_t* out,int base)
    371 {
    372   char buf[64];
    373   _itoa(value, buf, base);
    374   MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, buf, -1, out, 128);
    375   return out;
    376 }
    377 
    378 /*********************************************************************
    379  *              _ltow (MSVCRT.@)
    380  */
    381 MSVCRT_wchar_t* _ltow(long value,MSVCRT_wchar_t* out,int base)
    382 {
    383   char buf[128];
    384   _ltoa(value, buf, base);
    385   MultiByteToWideChar (CP_ACP, MB_PRECOMPOSED, buf, -1, out, 128);
    386   return out;
    387 }
Note: See TracChangeset for help on using the changeset viewer.