develooper Front page | perl.perl5.porters | Postings from September 2003

[PATCH] 5.8.1 / bcc55 / win32 / Enable PerlIO and/ or USE_LARGE_FILES

Thread Next
From:
Nigel Sandever
Date:
September 26, 2003 01:20
Subject:
[PATCH] 5.8.1 / bcc55 / win32 / Enable PerlIO and/ or USE_LARGE_FILES
Message ID:
Law9-F94BdsnvUFcxT500000ea5@hotmail.com



--- saved\dosish.h	Tue Sep 02 14:39:20 2003
+++ dosish.h	Thu Sep 25 18:39:09 2003
@@ -83,7 +83,12 @@
  *	information.
  */
#if defined(WIN64) || defined(USE_LARGE_FILES)
+ #if defined(__BORLANDC__) /* buk */
+  #include <sys\stat.h>
+  #define Stat_t struct stati64
+ #else
#define Stat_t struct _stati64
+ #endif
#else
#if defined(UNDER_CE)
#define Stat_t struct xcestat

--- ..\saved\win32sck.c	Tue Sep 02 14:42:10 2003
+++ win32sck.c	Thu Sep 25 18:56:05 2003
@@ -497,7 +497,11 @@
     int osf;
     if (!wsock_started || IsWinNT()) {
#if defined(WIN64) || defined(USE_LARGE_FILES)
+#if defined(__BORLANDC__) /* buk */
+    return win32_fstat(fd, sbufptr );
+#else
	return _fstati64(fd, sbufptr);
+#endif
#else
	return fstat(fd, sbufptr);
#endif
@@ -525,7 +529,11 @@
	}
     }
#if defined(WIN64) || defined(USE_LARGE_FILES)
+#if defined(__BORLANDC__) /* buk */
+    return win32_fstat(fd, sbufptr);
+#else
     return _fstati64(fd, sbufptr);
+#endif
#else
     return fstat(fd, sbufptr);
#endif

--- ..\saved\win32.c	Tue Sep 02 14:42:10 2003
+++ win32.c	Thu Sep 25 19:47:45 2003
@@ -2578,10 +2578,14 @@
win32_ftell(FILE *pf)
{
#if defined(WIN64) || defined(USE_LARGE_FILES)
+#if defined(__BORLAND__) /* buk */
+	return win32_tell( fileno( pf ) );
+#else
     fpos_t pos;
     if (fgetpos(pf, &pos))
	return -1;
     return (Off_t)pos;
+#endif
#else
     return ftell(pf);
#endif
@@ -2591,6 +2595,13 @@
win32_fseek(FILE *pf, Off_t offset,int origin)
{
#if defined(WIN64) || defined(USE_LARGE_FILES)
+#if defined(__BORLANDC__) /* buk */
+    return win32_lseek(
+		fileno(pf),
+		offset,
+		origin
+		);
+#else
     fpos_t pos;
     switch (origin) {
     case SEEK_CUR:
@@ -2610,6 +2621,7 @@
	return -1;
     }
     return fsetpos(pf, &offset);
+#endif
#else
     return fseek(pf, offset, origin);
#endif
@@ -2618,13 +2630,25 @@
DllExport int
win32_fgetpos(FILE *pf,fpos_t *p)
{
+#if defined(__BORLANDC__) && defined(USE_LARGE_FILES) /* buk */
+	if( win32_tell(fileno(pf)) == -1L ) {
+		errno = EBADF;
+		return -1;
+	}
+	return 0;
+#else
     return fgetpos(pf, p);
+#endif
}

DllExport int
win32_fsetpos(FILE *pf,const fpos_t *p)
{
+#if defined(__BORLANDC__) && defined(USE_LARGE_FILES) /* buk */
+	return win32_lseek(fileno(pf), *p, SEEK_CUR);
+#else
     return fsetpos(pf, p);
+#endif
}

DllExport void
@@ -3157,7 +3181,23 @@
win32_lseek(int fd, Off_t offset, int origin)
{
#if defined(WIN64) || defined(USE_LARGE_FILES)
+#if defined(__BORLANDC__) /* buk */
+    LARGE_INTEGER pos;
+    pos.QuadPart = offset;
+    pos.LowPart = SetFilePointer(
+		(HANDLE)_get_osfhandle(fd),
+		pos.LowPart,
+		&pos.HighPart,
+		origin
+	);
+	if (pos.LowPart == INVALID_SET_FILE_POINTER && GetLastError() != NO_ERROR) 
{
+		pos.QuadPart = -1;
+	}
+
+	return pos.QuadPart;
+#else
     return _lseeki64(fd, offset, origin);
+#endif
#else
     return lseek(fd, offset, origin);
#endif
@@ -3167,7 +3207,24 @@
win32_tell(int fd)
{
#if defined(WIN64) || defined(USE_LARGE_FILES)
+#if defined(__BORLANDC__) /* buk *//
+    LARGE_INTEGER pos;
+    pos.QuadPart = 0;
+    pos.LowPart = SetFilePointer(
+		(HANDLE)_get_osfhandle(fd),
+		pos.LowPart,
+		&pos.HighPart,
+		FILE_CURRENT
+	);
+	if (pos.LowPart == INVALID_SET_FILE_POINTER && GetLastError() != NO_ERROR) 
{
+		pos.QuadPart = -1;
+	}
+
+	return pos.QuadPart;
+	/* return tell(fd); */
+#else
     return _telli64(fd);
+#endif
#else
     return tell(fd);
#endif

_________________________________________________________________
Sign-up for a FREE BT Broadband connection today! 
http://www.msn.co.uk/specials/btbroadband


Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About