tcharize a couple of routines
Modified: trunk/reactos/lib/crt/makefile
Modified: trunk/reactos/lib/crt/stdio/fopen.c
Modified: trunk/reactos/lib/crt/stdio/fprintf.c
Added: trunk/reactos/lib/crt/stdio/fwprintf.c
Added: trunk/reactos/lib/crt/stdio/wfopen.c
_____
Modified: trunk/reactos/lib/crt/makefile
--- trunk/reactos/lib/crt/makefile 2005-03-01 22:13:40 UTC (rev
13790)
+++ trunk/reactos/lib/crt/makefile 2005-03-01 22:22:56 UTC (rev
13791)
@@ -274,7 +274,9 @@
stdio/fileno.o \
stdio/flsbuf.o \
stdio/fopen.o \
+ stdio/wfopen.o \
stdio/fprintf.o \
+ stdio/fwprintf.o \
stdio/fputc.o \
stdio/fputchar.o \
stdio/fputs.o \
_____
Modified: trunk/reactos/lib/crt/stdio/fopen.c
--- trunk/reactos/lib/crt/stdio/fopen.c 2005-03-01 22:13:40 UTC (rev
13790)
+++ trunk/reactos/lib/crt/stdio/fopen.c 2005-03-01 22:22:56 UTC (rev
13791)
@@ -30,13 +30,14 @@
#include <string.h>
#include <io.h>
#include <fcntl.h>
+#include <tchar.h>
#include <internal/file.h>
//might change fopen(file,mode) -> fsopen(file,mode,_SH_DENYNO);
-FILE* fopen(const char *file, const char *mode)
+FILE* _tfopen(const _TCHAR *file, const _TCHAR *mode)
{
FILE *f;
int fd, rw, oflags = 0;
@@ -50,28 +51,28 @@
if (f == NULL)
return NULL;
- rw = (strchr(mode, '+') == NULL) ? 0 : 1;
- if (strchr(mode, 'a'))
+ rw = (_tcschr(mode, '+') == NULL) ? 0 : 1;
+ if (_tcschr(mode, 'a'))
oflags = O_CREAT | (rw ? O_RDWR : O_WRONLY);
- if (strchr(mode, 'r'))
+ if (_tcschr(mode, 'r'))
oflags = rw ? O_RDWR : O_RDONLY;
- if (strchr(mode, 'w'))
+ if (_tcschr(mode, 'w'))
oflags = O_TRUNC | O_CREAT | (rw ? O_RDWR : O_WRONLY);
- if (strchr(mode, 't'))
+ if (_tcschr(mode, 't'))
oflags |= O_TEXT;
- else if (strchr(mode, 'b'))
+ else if (_tcschr(mode, 'b'))
oflags |= O_BINARY;
else
oflags |= (_fmode& (O_TEXT|O_BINARY));
- fd = _open(file, oflags, 0);
+ fd = _topen(file, oflags, 0);
if (fd < 0)
return NULL;
// msvcrt ensures that writes will end up at the end of file in append
mode
// we just move the file pointer to the end of file initially
- if (strchr(mode, 'a'))
+ if (_tcschr(mode, 'a'))
_lseek(fd, 0, SEEK_END);
f->_cnt = 0;
@@ -79,14 +80,14 @@
f->_bufsiz = 0;
if (rw)
f->_flag = _IOREAD | _IOWRT;
- else if (strchr(mode, 'r'))
+ else if (_tcschr(mode, 'r'))
f->_flag = _IOREAD;
else
f->_flag = _IOWRT;
- if (strchr(mode, 't'))
+ if (_tcschr(mode, 't'))
f->_flag |= _IOTEXT;
- else if (strchr(mode, 'b'))
+ else if (_tcschr(mode, 'b'))
f->_flag |= _IOBINARY;
else if (_fmode& O_BINARY)
f->_flag |= _IOBINARY;
@@ -94,64 +95,3 @@
f->_base = f->_ptr = NULL;
return f;
}
-
-/*
- * @implemented
- */
-FILE* _wfopen(const wchar_t *file, const wchar_t *mode)
-{
- FILE *f;
- int fd, rw, oflags = 0;
-
- if (file == 0)
- return 0;
- if (mode == 0)
- return 0;
-
- f = __alloc_file();
- if (f == NULL)
- return NULL;
-
- rw = (wcschr(mode, L'+') == NULL) ? 0 : 1;
- if (wcschr(mode, L'a'))
- oflags = O_CREAT | (rw ? O_RDWR : O_WRONLY);
- if (wcschr(mode, L'r'))
- oflags = rw ? O_RDWR : O_RDONLY;
- if (wcschr(mode, L'w'))
- oflags = O_TRUNC | O_CREAT | (rw ? O_RDWR : O_WRONLY);
- if (wcschr(mode, L't'))
- oflags |= O_TEXT;
- else if (wcschr(mode, L'b'))
- oflags |= O_BINARY;
- else
- oflags |= (_fmode& (O_TEXT|O_BINARY));
-
- fd = _wopen(file, oflags, 0);
- if (fd < 0)
- return NULL;
-
-// msvcrt ensures that writes will end up at the end of file in append
mode
-// we just move the file pointer to the end of file initially
- if (wcschr(mode, 'a'))
- _lseek(fd, 0, SEEK_END);
-
- f->_cnt = 0;
- f->_file = fd;
- f->_bufsiz = 0;
- if (rw)
- f->_flag = _IOREAD | _IOWRT;
- else if (wcschr(mode, L'r'))
- f->_flag = _IOREAD;
- else
- f->_flag = _IOWRT;
-
- if (wcschr(mode, L't'))
- f->_flag |= _IOTEXT;
- else if (wcschr(mode, L'b'))
- f->_flag |= _IOBINARY;
- else if (_fmode& O_BINARY)
- f->_flag |= _IOBINARY;
-
- f->_base = f->_ptr = NULL;
- return f;
-}
_____
Modified: trunk/reactos/lib/crt/stdio/fprintf.c
--- trunk/reactos/lib/crt/stdio/fprintf.c 2005-03-01 22:13:40 UTC
(rev 13790)
+++ trunk/reactos/lib/crt/stdio/fprintf.c 2005-03-01 22:22:56 UTC
(rev 13791)
@@ -1,16 +1,17 @@
/* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */
#include <stdio.h>
#include <wchar.h>
+#include <tchar.h>
#include <internal/file.h>
/*
* @implemented
*/
int
-fprintf(register FILE *iop, const char *fmt, ...)
+_ftprintf(register FILE *iop, const _TCHAR *fmt, ...)
{
int len;
- char localbuf[BUFSIZ];
+ _TCHAR localbuf[BUFSIZ];
va_list a=0;
@@ -18,38 +19,9 @@
if (iop->_flag & _IONBF)
{
iop->_flag &= ~_IONBF;
- iop->_ptr = iop->_base = localbuf;
- iop->_bufsiz = BUFSIZ;
- len = vfprintf(iop,fmt,a);
- fflush(iop);
- iop->_flag |= _IONBF;
- iop->_base = NULL;
- iop->_bufsiz = 0;
- iop->_cnt = 0;
- }
- else
- len = vfprintf(iop, fmt, a);
- return ferror(iop) ? EOF : len;
-}
-
-/*
- * @implemented
- */
-int
-fwprintf(register FILE *iop, const wchar_t *fmt, ...)
-{
- int len;
- wchar_t localbuf[BUFSIZ];
- va_list a=0;
-
-
- va_start( a, fmt );
- if (iop->_flag & _IONBF)
- {
- iop->_flag &= ~_IONBF;
iop->_ptr = iop->_base = (char *)localbuf;
iop->_bufsiz = BUFSIZ;
- len = vfwprintf(iop,fmt,a);
+ len = _vftprintf(iop,fmt,a);
fflush(iop);
iop->_flag |= _IONBF;
iop->_base = NULL;
@@ -57,6 +29,6 @@
iop->_cnt = 0;
}
else
- len = vfwprintf(iop, fmt, a);
- return ferror(iop) ? EOF : len;
+ len = _vftprintf(iop, fmt, a);
+ return ferror(iop) ? -1 : len;
}
_____
Added: trunk/reactos/lib/crt/stdio/fwprintf.c
--- trunk/reactos/lib/crt/stdio/fwprintf.c 2005-03-01 22:13:40 UTC
(rev 13790)
+++ trunk/reactos/lib/crt/stdio/fwprintf.c 2005-03-01 22:22:56 UTC
(rev 13791)
@@ -0,0 +1,4 @@
+#define UNICODE
+#define _UNICODE
+
+#include "fprintf.c"
_____
Added: trunk/reactos/lib/crt/stdio/wfopen.c
--- trunk/reactos/lib/crt/stdio/wfopen.c 2005-03-01 22:13:40 UTC
(rev 13790)
+++ trunk/reactos/lib/crt/stdio/wfopen.c 2005-03-01 22:22:56 UTC
(rev 13791)
@@ -0,0 +1,4 @@
+#define UNICODE
+#define _UNICODE
+
+#include "fopen.c"