Piotr Caban : msvcrt: Simplify fseek implementation.

Alexandre Julliard julliard at winehq.org
Thu Jan 10 13:36:11 CST 2013


Module: wine
Branch: master
Commit: 4ffa9364eba5d4c2a5b00d6df647ac0cfb6db3ec
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=4ffa9364eba5d4c2a5b00d6df647ac0cfb6db3ec

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Thu Jan 10 11:44:02 2013 +0100

msvcrt: Simplify fseek implementation.

---

 dlls/msvcrt/file.c   |   15 +++------------
 dlls/msvcrt/msvcrt.h |    1 +
 2 files changed, 4 insertions(+), 12 deletions(-)

diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c
index 8b5ec29..e19e81e 100644
--- a/dlls/msvcrt/file.c
+++ b/dlls/msvcrt/file.c
@@ -1169,19 +1169,10 @@ int CDECL MSVCRT__fseeki64(MSVCRT_FILE* file, __int64 offset, int whence)
 	msvcrt_flush_buffer(file);
 
   if(whence == SEEK_CUR && file->_flag & MSVCRT__IOREAD ) {
-	offset -= file->_cnt;
-	if (msvcrt_get_ioinfo(file->_file)->wxflag & WX_TEXT) {
-		/* Black magic correction for CR removal */
-		int i;
-		for (i=0; i<file->_cnt; i++) {
-			if (file->_ptr[i] == '\n')
-				offset--;
-		}
-		/* Black magic when reading CR at buffer boundary*/
-		if(msvcrt_get_ioinfo(file->_file)->wxflag & WX_READCR)
-		    offset--;
-	}
+      whence = SEEK_SET;
+      offset += MSVCRT__ftelli64(file);
   }
+
   /* Discard buffered input */
   file->_cnt = 0;
   file->_ptr = file->_base;
diff --git a/dlls/msvcrt/msvcrt.h b/dlls/msvcrt/msvcrt.h
index 30779bc..1bdf393 100644
--- a/dlls/msvcrt/msvcrt.h
+++ b/dlls/msvcrt/msvcrt.h
@@ -885,6 +885,7 @@ int __cdecl      MSVCRT_fgetc(MSVCRT_FILE*);
 int __cdecl      MSVCRT_ungetc(int,MSVCRT_FILE*);
 MSVCRT_wint_t __cdecl MSVCRT_fgetwc(MSVCRT_FILE*);
 MSVCRT_wint_t __cdecl MSVCRT_ungetwc(MSVCRT_wint_t,MSVCRT_FILE*);
+__int64 __cdecl  MSVCRT__ftelli64(MSVCRT_FILE* file);
 void __cdecl     MSVCRT__exit(int);
 void __cdecl     MSVCRT_abort(void);
 MSVCRT_ulong* __cdecl MSVCRT___doserrno(void);




More information about the wine-cvs mailing list