Commit Graph

461 Commits

Author SHA1 Message Date
Martin Storsjo 255a7fe067 ucrtbase: Implement some printf functions.
Not all functions are implemented (yet not all variants are
implemented in the normal msvcrt either).

The new functions are more generalized and are C99 compliant.
They take an options parameter that e.g. for the snprintf
family of functions indicate whether the truncation and return
value should be handled as before or in the standards compliant
way.

Signed-off-by: Martin Storsjo <martin@martin.st>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-28 22:31:24 +09:00
Carlo Bramini 21a14e9612 msvcrt: SEEK_* macros from GLIBC should be replaced with safer MSVCRT_SEEK_* macros. 2015-08-19 08:39:02 +09:00
Carlo Bramini 13f34481b2 msvcrt: Use MSVCRT_xxx macros instead of the same ones from GLIBC. 2015-08-17 14:51:50 +09:00
Carlo Bramini 9b495caacf msvcrt: Call SetFilePointer() with correct parameters. 2015-08-17 14:51:46 +09:00
Iván Matellanes ea2798f1ce msvcrt: _setmode should check if file descriptor is valid. 2015-08-05 23:45:50 +09:00
Piotr Caban 2294d3ba45 msvcrt: Don't call DeleteCriticalSection on static critical section. 2015-07-16 21:21:07 +09:00
Piotr Caban eb9e00857a msvcrt: Write directly to the console in _putwch. 2015-06-15 14:49:04 +09:00
Piotr Caban 725e4733cf msvcrt: Remove no longer needed global lock from functions using fd critical sections. 2015-06-11 14:40:32 +09:00
Piotr Caban 6ed69c107f msvcrt: Avoid using global critical section while allocating new file descriptors. 2015-06-11 14:40:30 +09:00
Piotr Caban e7fc237088 msvcrt: Don't use MSVCRT_fdend in msvcrt_create_io_inherit_block. 2015-06-11 14:40:14 +09:00
Piotr Caban 417b605687 msvcrt: Fix possible deadlock in dup2 function. 2015-06-11 14:40:01 +09:00
Piotr Caban ba757eaec7 msvcrt: Use fd critical section in _write. 2015-06-04 19:02:31 +09:00
Piotr Caban eec7a565be msvcrt: Don't lock __badioinfo. 2015-06-04 19:02:29 +09:00
Piotr Caban f00b7f4058 msvcrt: Use fd critical section in _setmode. 2015-06-04 19:02:26 +09:00
Piotr Caban bd6eaf918c msvcrt: Get rid of msvcrt_is_valid_fd helper. 2015-06-03 22:52:04 +09:00
Piotr Caban 9ce2a8a60c msvcrt: Use fd critical section in msvcrt_create_io_inherit_block. 2015-06-03 22:52:02 +09:00
Piotr Caban 86baccc9ae msvcrt: Get rid of msvcrt_fdtoh helper. 2015-06-03 22:52:00 +09:00
Piotr Caban 9278190d46 msvcrt: Use fd critical section in _futime64. 2015-06-03 22:51:57 +09:00
Piotr Caban 16285f5700 msvcrt: Use fd critical section in read. 2015-06-03 22:51:55 +09:00
Piotr Caban b052afd4af msvcrt: Use fd critical section in msvcrt_free_fd. 2015-06-03 22:51:53 +09:00
Piotr Caban c7b0fb5154 msvcrt: Use fd critical section in dup2. 2015-06-03 22:51:50 +09:00
Piotr Caban 760b78813d msvcrt: Don't ignore pmode attribute in _wsopen_s. 2015-04-17 14:53:53 +09:00
Michael Stefaniuc 278b70bdd0 msvcrt: Clarify comparison of the diff of two unsigneds with 0 (PVS-Studio). 2015-03-06 20:32:02 +09:00
Piotr Caban 90b68f9964 msvcrt: Reset write direction after flush on read/write stream. 2015-01-26 11:22:58 +01:00
Piotr Caban 7880525f44 msvcrt: Handle read buffer flushing in msvcrt_flush_buffer helper. 2015-01-26 11:22:54 +01:00
Piotr Caban ba0d1586ff msvcrt: Drop read buffer in _flsbuf. 2015-01-21 18:08:11 +01:00
Piotr Caban 6c2d4f1092 msvcrt: Use fd critical section in _fstat64. 2014-12-05 20:48:02 +01:00
Piotr Caban f2f45d5fe6 msvcrt: Use fd critical section in _chsize_s. 2014-12-05 20:48:01 +01:00
Piotr Caban fa6de59770 msvcrt: Use fd critical section in _lseeki64. 2014-12-05 20:47:59 +01:00
Piotr Caban ffdd16cc0d msvcrt: Use fd critical section in _locking. 2014-12-05 20:47:57 +01:00
Piotr Caban 9a4cfbc3ed msvcrt: Use fd critical section in _eof. 2014-12-05 20:47:55 +01:00
Iván Matellanes 17fcef507f msvcrt: Call the _nolock variant when the file is already locked. 2014-12-01 11:11:16 +01:00
Piotr Caban afc6962a24 msvcrt: Use fd critical section in _close. 2014-11-11 23:55:52 +09:00
Piotr Caban 4508e665c0 msvcrt: Use fd critical section in _commit. 2014-11-11 23:55:49 +09:00
Piotr Caban 1d791f5db2 msvcrt: Rename msvcrt_get_ioinfo function. 2014-11-11 23:55:43 +09:00
Piotr Caban 0c4cb6ce5d msvcrt: Initialize file descriptor critical section. 2014-11-11 23:55:34 +09:00
Iván Matellanes bcbd83d154 msvcrt: Added _fread_nolock_s implementation. 2014-11-10 19:25:15 +09:00
Iván Matellanes 4f807d9ae9 msvcrt: Added _ungetwc_nolock implementation. 2014-11-05 13:15:44 +09:00
Iván Matellanes 6f24dd9677 msvcrt: Added _ungetc_nolock implementation. 2014-11-05 13:15:20 +09:00
Iván Matellanes b536ff62ef msvcrt: Added _fputwc_nolock implementation. 2014-11-05 13:14:35 +09:00
Iván Matellanes 975a95a25b msvcrt: Added _fputc_nolock implementation. 2014-11-05 13:14:03 +09:00
Iván Matellanes 89d91168a0 msvcrt: Use correct type for fread and fwrite return values. 2014-11-04 13:31:33 +09:00
Iván Matellanes 20e0a6f20d msvcrt: Avoid locking the file in _fclose_nolock. 2014-11-04 13:31:29 +09:00
Iván Matellanes 156684ba91 msvcrt: Added _fgetwc_nolock implementation. 2014-10-31 15:35:36 +09:00
Iván Matellanes 878b4a9280 msvcrt: Added _fgetc_nolock implementation. 2014-10-31 15:35:24 +09:00
Iván Matellanes f896cd3dc9 msvcrt: _filbuf should not lock any file. 2014-10-31 15:35:19 +09:00
Iván Matellanes 4bb80afedc msvcrt: Added _fflush_nolock implementation.
Thanks to Piotr Caban for the test.
2014-10-27 19:03:57 +09:00
Iván Matellanes c53e0384a5 msvcrt: Added _fseek_nolock implementation. 2014-10-16 13:02:24 +09:00
Iván Matellanes 5077d8c137 msvcrt: Added _fseeki64_nolock implementation. 2014-10-16 13:02:16 +09:00
Iván Matellanes 50574ccffa msvcrt: Added _ftell_nolock implementation. 2014-10-16 13:02:08 +09:00
Iván Matellanes 7cf0c877b3 msvcrt: Added _ftelli64_nolock implementation. 2014-10-16 13:01:59 +09:00
Iván Matellanes 25d7a1bbbf msvcrt: Added _fwrite_nolock() implementation. 2014-10-13 18:09:06 +09:00
Iván Matellanes 206ea48f20 msvcrt: Added _fread_nolock() implementation. 2014-10-13 18:08:54 +09:00
Iván Matellanes 9fda14a9d6 msvcrt: Added _fclose_nolock() implementation. 2014-10-08 14:47:46 +02:00
Piotr Caban d3a48ee342 msvcrt: Only check for flag presence in isatty function. 2014-08-04 16:18:10 +02:00
Piotr Caban a566569305 msvcrt: Always set fd to -1 in _sopen_s on failure. 2014-07-10 15:23:02 +02:00
Piotr Caban 0350b6c7fd msvcrt: Fix buffer allocation in setvbuf. 2014-06-30 22:04:52 +02:00
Piotr Caban 60eb44d820 msvcrt: Don't touch _bufsiz value while initializing FILE structure. 2014-06-27 10:37:54 +02:00
Piotr Caban fffbc8e570 msvcrt: Use file->_flag to check if file buffering is enabled. 2014-06-27 10:37:51 +02:00
Piotr Caban 18a416f7d5 msvcrt: Support NULL buffer in setvbuf. 2014-06-26 19:00:41 +02:00
Piotr Caban 1ae475dae8 msvcrt: Fix ungetc on files with empty buffer. 2014-06-26 19:00:41 +02:00
Piotr Caban f91f24f6e7 msvcrt: Fix _flsbuf behavior on streams with MSVCRT__IONBF flag. 2014-06-26 19:00:40 +02:00
Grazvydas Ignotas ad968be779 msvcrt: Implement bufsiz block flushing behavior. 2014-06-25 11:48:13 +02:00
Grazvydas Ignotas c6a160691a msvcrt: Clear _cnt on buffer flush. 2014-06-25 11:47:30 +02:00
Grazvydas Ignotas 40067dd011 msvcrt: Change internal buffer size to 4k. 2014-06-17 12:35:48 +02:00
Grazvydas Ignotas 9614283996 msvcrt: Free old buffer properly in setvbuf. 2014-06-17 12:35:22 +02:00
Piotr Caban b0424313fd msvcrt: Handle negative file->_cnt value in fwrite. 2014-06-11 19:15:26 +02:00
Piotr Caban 42e800fe79 msvcrt: Fix ioinfo structure size. 2014-05-07 10:27:46 +02:00
Victor Martinez Calvo f6bb1a51a9 msvcrt: Avoid null dereference in TRACE in MSVCRT__wfreopen. 2014-04-30 18:33:00 +02:00
Alexandre Julliard 0c496f0280 msvcrt: Update comments for non-exported functions. 2014-04-21 14:32:40 +02:00
Piotr Caban beeea28a53 msvcr100: Move functions implementation to msvcrt. 2014-04-16 18:00:15 +02:00
Piotr Caban e70bf5f8c6 msvcrt: Fix compilation errors on Mingw. 2014-04-16 18:00:01 +02:00
Piotr Caban 6ad441cd6b msvcrt: Return error on invalid handle in _open_osfhandle. 2014-02-12 19:15:28 +01:00
Piotr Caban 5e3cadf834 msvcrt: Don't close handles returned by GetStdHandle function. 2014-01-28 10:53:21 +01:00
Piotr Caban 6f4a181709 msvcrt: Flush standard streams in flushall function. 2014-01-28 10:53:09 +01:00
Piotr Caban e16059113c msvcrt: Support _IOSTRG flag in _filbuf function. 2014-01-28 10:52:35 +01:00
Piotr Caban ed2d53a36a msvcrt: Don't write to buffer in ungetc if _IOSTRG flag is specified. 2013-12-30 19:44:08 +01:00
Piotr Caban 6122c2ba37 msvcrt: Convert data to multibyte encoding in ungetwc if needed. 2013-12-30 19:44:02 +01:00
Andrey Zhezherun 3bb2c11757 msvcrt: Implemented _chsize_s. 2013-11-05 20:38:20 +01:00
Piotr Caban 647817b018 msvcrt: Don't call invalid parameter handler on invalid mode flag. 2013-11-01 14:17:31 +01:00
Piotr Caban afec0b00bd msvcrt: Make the first call to fwrite buffered. 2013-10-21 21:06:15 +02:00
Piotr Caban 024ece50e8 msvcrt: Fix parameter validation in _stat64 function. 2013-08-26 15:01:37 +02:00
Vincent Povirk 5f2e48f737 msvcrt: _[w]access_s returns an error code. 2013-08-22 10:27:54 +02:00
Piotr Caban 089cc78182 msvcrt: Fix lookahead buffer usage on pipes. 2013-08-21 19:52:51 +02:00
Piotr Caban f42c631d6e msvcrt: Improve setting standard handles flags. 2013-08-21 19:52:37 +02:00
Piotr Caban b6fc57ec84 msvcrt: Add _wmktemp_s implementation. 2013-07-24 14:35:12 -05:00
Piotr Caban 7d41f9b3e9 msvcrt: Add _mktemp_s implementation. 2013-07-24 14:35:11 -05:00
Piotr Caban ce9d4b807e msvcrt: Fix _mktemp implementation. 2013-07-24 14:35:11 -05:00
Piotr Caban 598ff4dd5a msvcrt: Reuse FILE object in wfreopen function. 2013-06-04 14:59:20 +02:00
Piotr Caban f99742a539 msvcrt: Move _fstat32 and _fstat64i32 functions to msvcrt. 2013-04-30 18:44:46 +02:00
Piotr Caban 280f8237b5 msvcrt: Move fread_s function to msvcrt. 2013-03-28 18:54:42 +01:00
Piotr Caban 6eeb000c90 msvcrt: Fixed fgetwc behavior on multibyte characters and Unicode files. 2013-03-25 16:24:13 +01:00
Piotr Caban cde73251d8 msvcrt: Remove incorrect cast in fgetws function. 2013-03-25 16:24:01 +01:00
Piotr Caban 027d985210 msvcrt: Limit access to out buffer in fread function.
DVDFab HD Decrypter expects that unused part of output buffer is not
modified.
2013-03-14 14:56:10 +01:00
Piotr Caban 8e5bebe262 msvcrt: Rename msvcrt_alloc_fd_from to msvcrt_set_fd. 2013-03-05 12:43:36 +01:00
Piotr Caban db92137f83 msvcrt: Reuse standard file descriptors after closing them. 2013-03-04 11:14:45 +01:00
Piotr Caban f565e4a315 msvcrt: Don't duplicate standard handles during initialization. 2013-03-04 11:14:41 +01:00
Andrew Talbot d8efcc9cb3 msvcrt: Avoid signed-unsigned integer comparisons. 2013-02-20 10:33:38 +01:00
Piotr Caban a8df9b14ad msvcrt: Use temporary buffers to speed up operations on stdout and stderr. 2013-01-30 13:05:29 +01:00
Piotr Caban 2ee5323a91 msvcrt: Don't make stdout and stderr bufferred when writing to console. 2013-01-30 13:05:29 +01:00
Francois Gouget a5ff4b8088 Assorted spelling fixes. 2013-01-29 12:13:04 +01:00
Piotr Caban 7654d95462 msvcrt: Added N flag support to fopen. 2013-01-25 17:30:18 +01:00
Piotr Caban ab4b4d34c3 msvcrt: Ignore S and R flags in fopen. 2013-01-25 17:30:10 +01:00
Marcus Meissner a8b076d67f msvcrt: read_utf8: free readbuf on return (Coverity). 2013-01-21 12:51:15 +01:00
Piotr Caban 7f4e1c65b1 msvcrt: Added support for commit flag in fopen. 2013-01-18 13:28:58 +01:00
Alexandre Julliard afee133b65 msvcrt: Fix incorrect use of the system wctomb function. 2013-01-14 13:47:00 +01:00
Piotr Caban 5515170d13 msvcrt: Be less strict while parsing file open mode in fopen function. 2013-01-14 11:04:19 +01:00
Piotr Caban c1792e1a8a msvcrt: Fixed ftell behaviour when file is opened for writing in text mode. 2013-01-11 12:04:36 +01:00
Piotr Caban 1fae72e759 msvcrt: Don't add '\r' character in fputws function.
write is responsible for adding '\r' characters, don't do it twice.
2013-01-11 12:04:29 +01:00
Piotr Caban a8c2ae1751 msvcrt: Use fputwc to output characters to file in fprintf functions. 2013-01-11 12:04:18 +01:00
Piotr Caban ebfa653618 msvcrt: Make fputwc encoding aware. 2013-01-11 12:04:08 +01:00
Piotr Caban d88aa37e59 msvcrt: Added UTF8 support to read function. 2013-01-10 12:29:13 +01:00
Piotr Caban ac3cdc7ffa msvcrt: Added UTF16 support to read function. 2013-01-10 12:29:07 +01:00
Piotr Caban a0ef884542 msvcrt: Added unicode modes support _setmode function. 2013-01-10 12:28:53 +01:00
Piotr Caban eeb7d0a649 msvcrt: Improved ftell implementation. 2013-01-10 12:28:47 +01:00
Piotr Caban 4ffa9364eb msvcrt: Simplify fseek implementation. 2013-01-10 12:28:39 +01:00
Piotr Caban 568a3be869 msvcrt: Call ftell function in fgetpos. 2013-01-10 12:28:32 +01:00
Piotr Caban 6e011b8310 msvcrt: Fixed handling of '\r' when it's the last character in the buffer in read. 2013-01-10 12:28:24 +01:00
Piotr Caban 94e3647533 msvcrt: Added support for unicode mode in write function. 2013-01-10 12:27:48 +01:00
Piotr Caban 447f4fa51c msvcrt: Call _wsopen_s function in _sopen_s. 2013-01-10 12:27:36 +01:00
Piotr Caban 424ce2d2f5 msvcrt: Added support for unicode text mode in open functions family. 2013-01-10 12:27:10 +01:00
Piotr Caban 96be6eb570 msvcrt: Added support for unicode open mode in msvcrt_get_flags function. 2013-01-10 12:26:53 +01:00
Piotr Caban a6daa3519d msvcrt: Don't duplicate wfsopen functionality in wfrepopen. 2013-01-10 12:23:49 +01:00
Piotr Caban bcf4467b86 msvcrt: Return error in stat function when path is specified with trailing slash character. 2012-12-27 17:15:39 +01:00
Piotr Caban bc33d39e23 msvcrt: Don't flush stream in fputs function. 2012-12-13 18:24:03 +01:00
Piotr Caban 3b41fab0e9 msvcrt: Added _fwprintf_l implementation. 2012-12-12 12:01:11 +01:00
Piotr Caban 48335be04e msvcrt: Added _vfwprintf_l implementation. 2012-12-12 12:01:01 +01:00
Piotr Caban d3ecfe0599 msvcrt: Fixed _localtime64 implementation. 2012-12-10 17:36:28 +01:00
Piotr Caban ec26342c88 msvcrt: Allocate buffer in fwrite function. 2012-11-02 19:47:33 +01:00
Piotr Caban 39345a1b15 msvcrt: Fixed _ungetwc implementation. 2012-10-24 11:25:33 +02:00
Piotr Caban c00702cd6e msvcrt: Fixed tmpfile implementation. 2012-10-16 20:45:44 +02:00
Michael Stefaniuc 0409b9895c msvcrt: Aoid TRUE:FALSE conditional expressions. 2012-08-13 17:29:40 +02:00
Alexandre Julliard 06989a0483 msvcrt: Make sure that errno is always set when calling the invalid parameter handler. 2012-07-26 11:05:32 +02:00
André Hentschel f09a40a215 msvcrt: Add tmpfile_s implementation. 2012-07-18 11:49:19 +02:00
Robert van Herk 516bb0ba64 msvcrt: Fix file mode T (temporary file). 2012-03-28 11:47:13 +02:00
Akihiro Sagawa cf7479ca85 msvcrt: Add support for _flushall to clear all input buffer. 2012-03-14 12:59:11 +01:00
Akihiro Sagawa 58d6a9a331 msvcrt: Add a helper function to flush all buffers. 2012-03-14 12:59:10 +01:00
Akihiro Sagawa 1a01893c74 msvcrt: Add support for fflush to clear an input buffer. 2012-03-14 12:59:10 +01:00
Piotr Caban c39793087d msvcrt: Handle negative file->_cnt value in _flsbuf function. 2012-02-07 09:32:20 -06:00
Eric Pouech f8b29a0685 msvcrt: Fix TRACE format modifier for wfreopen. 2012-02-06 10:19:32 -06:00
Daniel Lehman 85559848ff msvcrt: Sync _wtempnam with _tempnam. 2012-01-09 12:52:16 +01:00
Piotr Caban 66520ea08a msvcrt: Fix FILE critical section initialization. 2011-11-24 20:57:01 +01:00
Piotr Caban 3fe5e6ee8a msvcrt: Keep FILE critical section initialized after closing file. 2011-11-23 14:14:39 +01:00
Francois Gouget d78bfe1149 msvcrt: Statically initialize and name the MSVCRT_file_cs critical section. 2011-11-16 17:02:10 +01:00
Piotr Caban 764b85511c msvcrt: Don't use fputc in flsbuf implementation. 2011-11-16 17:01:09 +01:00
Piotr Caban e4ac347075 msvcrt: Don't hold FILE critical section in some functions. 2011-11-15 19:37:37 +01:00
André Hentschel 947d1bf588 msvcrt: Implement _wfreopen_s. 2011-11-15 11:48:38 +01:00
André Hentschel ba5b0c34a8 msvcrt: Implement freopen_s. 2011-11-15 11:48:24 +01:00
Francois Gouget f2043352d1 msvcrt: Give a name to the critical sections. 2011-11-14 20:15:33 +01:00
Piotr Caban c867f3324e msvcrt: Free fd entries with incorrect HANDLE value. 2011-10-06 16:46:40 -05:00