msvcrt: Implement _ftelli64. (try 2)

Eryk Wieliczko ewdevel at gmail.com
Wed Nov 3 07:33:12 CDT 2010


---
 dlls/msvcr100/msvcr100.spec |    2 +-
 dlls/msvcr80/msvcr80.spec   |    2 +-
 dlls/msvcr90/msvcr90.spec   |    2 +-
 dlls/msvcrt/file.c          |   18 +++++++++++++-----
 dlls/msvcrt/msvcrt.spec     |    1 +
 include/msvcrt/stdio.h      |    1 +
 6 files changed, 18 insertions(+), 8 deletions(-)

diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec
index 8b8e32a..79542d4 100644
--- a/dlls/msvcr100/msvcr100.spec
+++ b/dlls/msvcr100/msvcr100.spec
@@ -656,7 +656,7 @@
 @ cdecl _fstat64(long ptr) msvcrt._fstat64
 @ cdecl _fstat64i32(long ptr) msvcr90._fstat64i32
 @ stub _ftell_nolock
-@ stub _ftelli64
+@ cdecl -ret64 _ftelli64(ptr) msvcrt._ftelli64
 @ stub _ftelli64_nolock
 @ cdecl _ftime32(ptr) msvcrt._ftime32
 @ stub _ftime32_s
diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec
index 3150e57..4267b39 100644
--- a/dlls/msvcr80/msvcr80.spec
+++ b/dlls/msvcr80/msvcr80.spec
@@ -497,7 +497,7 @@
 @ cdecl _fstat64(long ptr) msvcrt._fstat64
 @ cdecl _fstat64i32(long ptr) msvcr90._fstat64i32
 @ stub _ftell_nolock
-@ stub _ftelli64
+@ cdecl -ret64 _ftelli64(ptr) msvcrt._ftelli64
 @ stub _ftelli64_nolock
 @ cdecl _ftime32(ptr) msvcrt._ftime32
 @ stub _ftime32_s
diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec
index 47763fe..0f4ede5 100644
--- a/dlls/msvcr90/msvcr90.spec
+++ b/dlls/msvcr90/msvcr90.spec
@@ -489,7 +489,7 @@
 @ cdecl _fstat64(long ptr) msvcrt._fstat64
 @ cdecl _fstat64i32(long ptr)
 @ stub _ftell_nolock
-@ stub _ftelli64
+@ cdecl -ret64 _ftelli64(ptr) msvcrt._ftelli64
 @ stub _ftelli64_nolock
 @ cdecl _ftime32(ptr) msvcrt._ftime32
 @ stub _ftime32_s
diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c
index 8902bdd..2915df8 100644
--- a/dlls/msvcrt/file.c
+++ b/dlls/msvcrt/file.c
@@ -2966,14 +2966,14 @@ int CDECL MSVCRT_fsetpos(MSVCRT_FILE* file, MSVCRT_fpos_t *pos)
 }
 
 /*********************************************************************
- *		ftell (MSVCRT.@)
+ *		_ftelli64 (MSVCRT.@)
  */
-LONG CDECL MSVCRT_ftell(MSVCRT_FILE* file)
+__int64 CDECL MSVCRT__ftelli64(MSVCRT_FILE* file)
 {
   /* TODO: just call fgetpos and return lower half of result */
   int off=0;
-  MSVCRT_long pos;
-  pos = MSVCRT__tell(file->_file);
+  __int64 pos;
+  pos = _telli64(file->_file);
   if(pos == -1) return -1;
   if(file->_bufsiz)  {
 	if( file->_flag & MSVCRT__IOWRT ) {
@@ -2987,7 +2987,7 @@ LONG CDECL MSVCRT_ftell(MSVCRT_FILE* file)
 				if (file->_ptr[i] == '\n')
 					off--;
 			}
-		        /* Black magic when reading CR at buffer boundary*/
+			/* Black magic when reading CR at buffer boundary*/
 			if(MSVCRT_fdesc[file->_file].wxflag & WX_READCR)
 			  off--;
 
@@ -2998,6 +2998,14 @@ LONG CDECL MSVCRT_ftell(MSVCRT_FILE* file)
 }
 
 /*********************************************************************
+ *		ftell (MSVCRT.@)
+ */
+LONG CDECL MSVCRT_ftell(MSVCRT_FILE* file)
+{
+  return MSVCRT__ftelli64(file);
+}
+
+/*********************************************************************
  *		fgetpos (MSVCRT.@)
  */
 int CDECL MSVCRT_fgetpos(MSVCRT_FILE* file, MSVCRT_fpos_t *pos)
diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec
index 18e3268..a1413b5 100644
--- a/dlls/msvcrt/msvcrt.spec
+++ b/dlls/msvcrt/msvcrt.spec
@@ -442,6 +442,7 @@
 @ cdecl _fstat(long ptr) MSVCRT__fstat
 @ cdecl _fstat64(long ptr) MSVCRT__fstat64
 @ cdecl _fstati64(long ptr) MSVCRT__fstati64
+@ cdecl -ret64 _ftelli64(ptr) MSVCRT__ftelli64
 @ cdecl _ftime(ptr) MSVCRT__ftime
 @ cdecl _ftime32(ptr) MSVCRT__ftime32
 # stub _ftime32_s
diff --git a/include/msvcrt/stdio.h b/include/msvcrt/stdio.h
index dd4b26c..068af5f 100644
--- a/include/msvcrt/stdio.h
+++ b/include/msvcrt/stdio.h
@@ -140,6 +140,7 @@ int    __cdecl fscanf_s(FILE*,const char*,...);
 int    __cdecl fseek(FILE*,__msvcrt_long,int);
 int    __cdecl fsetpos(FILE*,fpos_t*);
 __msvcrt_long __cdecl ftell(FILE*);
+__int64 __cdecl _ftelli64(FILE*);
 size_t __cdecl fwrite(const void*,size_t,size_t,FILE*);
 int    __cdecl getc(FILE*);
 int    __cdecl getchar(void);
-- 
1.7.0.4




More information about the wine-patches mailing list