msvcrt: Added _set_printf_count_output and _get_printf_count_output implementation.

This commit is contained in:
Piotr Caban 2011-04-27 20:09:00 +02:00 committed by Alexandre Julliard
parent 168909283c
commit 6ecabf7cae
11 changed files with 43 additions and 8 deletions

View file

@ -20,7 +20,7 @@
#include <stdarg.h>
#include "stdlib.h"
#include "stdio.h"
#include "windef.h"
#include "winbase.h"
@ -37,6 +37,7 @@ BOOL WINAPI DllMain(HINSTANCE hdll, DWORD reason, LPVOID reserved)
case DLL_PROCESS_ATTACH:
DisableThreadLibraryCalls(hdll);
_set_printf_count_output(0);
}
return TRUE;
}

View file

@ -686,7 +686,7 @@
@ cdecl _get_osfhandle(long) msvcrt._get_osfhandle
@ cdecl _get_output_format() msvcrt._get_output_format
@ stub _get_pgmptr
@ stub _get_printf_count_output
@ cdecl _get_printf_count_output() msvcrt._get_printf_count_output
@ stub _get_purecall_handler
@ cdecl _get_terminate() msvcrt._get_terminate
@ stub _get_timezone
@ -1077,7 +1077,7 @@
@ cdecl _set_invalid_parameter_handler(ptr) msvcrt._set_invalid_parameter_handler
@ stub _set_malloc_crt_max_wait
@ stub _set_output_format
@ stub _set_printf_count_output
@ cdecl _set_printf_count_output(long) msvcrt._set_printf_count_output
@ cdecl _set_purecall_handler(ptr) msvcrt._set_purecall_handler
@ cdecl _seterrormode(long) msvcrt._seterrormode
@ cdecl -arch=i386,x86_64 -norelay _setjmp(ptr) msvcrt._setjmp

View file

@ -1,5 +1,7 @@
MODULE = msvcr80.dll
IMPORTS = msvcrt
MODCFLAGS = @BUILTINFLAG@
EXTRAINCL = -I$(top_srcdir)/include/msvcrt
C_SRCS = \
msvcr80.c

View file

@ -20,6 +20,7 @@
#include <stdarg.h>
#include "stdio.h"
#include "windef.h"
#include "winbase.h"
@ -32,6 +33,7 @@ BOOL WINAPI DllMain(HINSTANCE hdll, DWORD reason, LPVOID reserved)
case DLL_PROCESS_ATTACH:
DisableThreadLibraryCalls(hdll);
_set_printf_count_output(0);
}
return TRUE;
}

View file

@ -530,7 +530,7 @@
@ stub _get_osver
@ cdecl _get_output_format() msvcrt._get_output_format
@ stub _get_pgmptr
@ stub _get_printf_count_output
@ cdecl _get_printf_count_output() msvcrt._get_printf_count_output
@ stub _get_purecall_handler
@ cdecl _get_sbh_threshold() msvcrt._get_sbh_threshold
@ cdecl _get_terminate() msvcrt._get_terminate
@ -930,7 +930,7 @@
@ cdecl _set_invalid_parameter_handler(ptr) msvcrt._set_invalid_parameter_handler
@ stub _set_malloc_crt_max_wait
@ stub _set_output_format
@ stub _set_printf_count_output
@ cdecl _set_printf_count_output(long) msvcrt._set_printf_count_output
@ cdecl _set_purecall_handler(ptr) msvcrt._set_purecall_handler
@ cdecl _set_sbh_threshold(long) msvcrt._set_sbh_threshold
@ cdecl _seterrormode(long) msvcrt._seterrormode

View file

@ -22,6 +22,7 @@
#include <stdarg.h>
#include "stdlib.h"
#include "stdio.h"
#include "errno.h"
#include "malloc.h"
#include "windef.h"
@ -101,6 +102,7 @@ BOOL WINAPI DllMain(HINSTANCE hdll, DWORD reason, LPVOID reserved)
case DLL_PROCESS_ATTACH:
DisableThreadLibraryCalls(hdll);
_set_printf_count_output(0);
}
return TRUE;
}

View file

@ -520,7 +520,7 @@
@ cdecl _get_osfhandle(long) msvcrt._get_osfhandle
@ cdecl _get_output_format() msvcrt._get_output_format
@ stub _get_pgmptr
@ stub _get_printf_count_output
@ cdecl _get_printf_count_output() msvcrt._get_printf_count_output
@ stub _get_purecall_handler
@ cdecl _get_sbh_threshold() msvcrt._get_sbh_threshold
@ cdecl _get_terminate() msvcrt._get_terminate
@ -916,7 +916,7 @@
@ cdecl _set_invalid_parameter_handler(ptr) msvcrt._set_invalid_parameter_handler
@ stub _set_malloc_crt_max_wait
@ stub _set_output_format
@ stub _set_printf_count_output
@ cdecl _set_printf_count_output(long) msvcrt._set_printf_count_output
@ cdecl _set_purecall_handler(ptr) msvcrt._set_purecall_handler
@ cdecl _set_sbh_threshold(long) msvcrt._set_sbh_threshold
@ cdecl _seterrormode(long) msvcrt._seterrormode

View file

@ -1491,3 +1491,5 @@
@ cdecl -arch=i386 _statusfp2(ptr ptr)
@ cdecl _wcstod_l(wstr ptr) MSVCRT__wcstod_l
@ cdecl _wdupenv_s(ptr ptr str)
@ cdecl _get_printf_count_output()
@ cdecl _set_printf_count_output(long)

View file

@ -491,7 +491,15 @@ int FUNC_NAME(pf_printf)(FUNC_NAME(puts_clbk) pf_puts, void *puts_ctx, const API
i = FUNC_NAME(pf_output_format_str)(pf_puts, puts_ctx, buf, -1, &flags, locale);
#endif
} else if(flags.Format == 'n') {
int *used = pf_args(args_ctx, pos, VT_PTR, &valist).get_ptr;
int *used;
if(!n_format_enabled) {
MSVCRT_INVALID_PMT("\'n\' format specifier disabled");
*MSVCRT__errno() = MSVCRT_EINVAL;
return -1;
}
used = pf_args(args_ctx, pos, VT_PTR, &valist).get_ptr;
*used = written;
i = 0;
} else if(flags.Format && strchr("diouxX", flags.Format)) {

View file

@ -33,11 +33,27 @@
WINE_DEFAULT_DEBUG_CHANNEL(msvcrt);
static BOOL n_format_enabled = TRUE;
#include "printf.h"
#define PRINTF_WIDE
#include "printf.h"
#undef PRINTF_WIDE
/* _get_printf_count_output - not exported in native msvcrt */
int CDECL _get_printf_count_output( void )
{
return n_format_enabled ? 1 : 0;
}
/* _set_printf_count_output - not exported in native msvcrt */
int CDECL _set_printf_count_output( int enable )
{
BOOL old = n_format_enabled;
n_format_enabled = (enable ? TRUE : FALSE);
return old ? 1 : 0;
}
/*********************************************************************
* _wcsdup (MSVCRT.@)
*/

View file

@ -108,12 +108,14 @@ int __cdecl _flsbuf(int,FILE*);
int __cdecl _flushall(void);
int __cdecl _fputchar(int);
FILE* __cdecl _fsopen(const char*,const char*,int);
int __cdecl _get_printf_count_output(void);
int __cdecl _getmaxstdio(void);
int __cdecl _getw(FILE*);
int __cdecl _pclose(FILE*);
FILE* __cdecl _popen(const char*,const char*);
int __cdecl _putw(int,FILE*);
int __cdecl _rmtmp(void);
int __cdecl _set_printf_count_output(int);
int __cdecl _setmaxstdio(int);
int __cdecl _snprintf(char*,size_t,const char*,...);
int __cdecl _snprintf_s(char*,size_t,size_t,const char*,...);