/* * Copyright 2001 Jon Griffiths * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef __WINE_MSVCRT_H #define __WINE_MSVCRT_H #include #include #include #include "windef.h" #include "winbase.h" #include "winerror.h" #include "winnls.h" #include "msvcrt/string.h" #include "msvcrt/eh.h" /* TLS data */ extern DWORD MSVCRT_tls_index; typedef struct __MSVCRT_thread_data { int errno; unsigned long doserrno; char *mbstok_next; /* next ptr for mbstok() */ char *efcvt_buffer; /* buffer for ecvt/fcvt */ int fpecode; terminate_function terminate_handler; unexpected_function unexpected_handler; _se_translator_function se_translator; EXCEPTION_RECORD *exc_record; } MSVCRT_thread_data; extern MSVCRT_thread_data *msvcrt_get_thread_data(void); extern int MSVCRT_current_lc_all_cp; void _purecall(void); void MSVCRT__set_errno(int); char* msvcrt_strndup(const char*,unsigned int); MSVCRT_wchar_t *msvcrt_wstrndup(const MSVCRT_wchar_t*, unsigned int); void MSVCRT__amsg_exit(int errnum); extern char **MSVCRT__environ; extern MSVCRT_wchar_t **MSVCRT__wenviron; extern char ** msvcrt_SnapshotOfEnvironmentA(char **); extern MSVCRT_wchar_t ** msvcrt_SnapshotOfEnvironmentW(MSVCRT_wchar_t **); /* FIXME: This should be declared in new.h but it's not an extern "C" so * it would not be much use anyway. Even for Winelib applications. */ int MSVCRT__set_new_mode(int mode); void* MSVCRT_operator_new(unsigned long size); void MSVCRT_operator_delete(void*); typedef void* (*MSVCRT_malloc_func)(MSVCRT_size_t); typedef void (*MSVCRT_free_func)(void*); extern char* MSVCRT___unDName(char *,const char*,int,MSVCRT_malloc_func,MSVCRT_free_func,unsigned short int); extern char* MSVCRT___unDNameEx(char *,const char*,int,MSVCRT_malloc_func,MSVCRT_free_func,void *,unsigned short int); /* Setup and teardown multi threaded locks */ extern void msvcrt_init_mt_locks(void); extern void msvcrt_free_mt_locks(void); extern void msvcrt_init_io(void); extern void msvcrt_free_io(void); extern void msvcrt_init_console(void); extern void msvcrt_free_console(void); extern void msvcrt_init_args(void); extern void msvcrt_free_args(void); /* run-time error codes */ #define _RT_STACK 0 #define _RT_NULLPTR 1 #define _RT_FLOAT 2 #define _RT_INTDIV 3 #define _RT_EXECMEM 5 #define _RT_EXECFORM 6 #define _RT_EXECENV 7 #define _RT_SPACEARG 8 #define _RT_SPACEENV 9 #define _RT_ABORT 10 #define _RT_NPTR 12 #define _RT_FPTR 13 #define _RT_BREAK 14 #define _RT_INT 15 #define _RT_THREAD 16 #define _RT_LOCK 17 #define _RT_HEAP 18 #define _RT_OPENCON 19 #define _RT_QWIN 20 #define _RT_NOMAIN 21 #define _RT_NONCONT 22 #define _RT_INVALDISP 23 #define _RT_ONEXIT 24 #define _RT_PUREVIRT 25 #define _RT_STDIOINIT 26 #define _RT_LOWIOINIT 27 #define _RT_HEAPINIT 28 #define _RT_DOMAIN 120 #define _RT_SING 121 #define _RT_TLOSS 122 #define _RT_CRNL 252 #define _RT_BANNER 255 #endif /* __WINE_MSVCRT_H */