--- a/FileStr_win32.st Sat Jul 10 01:05:49 1999 +0200
+++ b/FileStr_win32.st Sat Jul 10 12:18:50 1999 +0200
@@ -19,9 +19,6 @@
!FileStream primitiveDefinitions!
%{
-#ifdef __openVMS__
-# undef __new
-#endif
#include <stdio.h>
#define _STDIO_H_INCLUDED_
@@ -29,20 +26,8 @@
#include <errno.h>
#define _ERRNO_H_INCLUDED_
-#ifdef transputer
-# include <iocntrl.h>
-# ifndef fileno
- /* kludge: inmos forgot fileno */
-# define fileno(f) ((f)->__file)
-# endif
-#else
-# include <sys/types.h>
-# include <sys/stat.h>
-#endif
-
-#ifdef hpux
-# define fileno(f) ((f->__fileH << 8) | (f->__fileL))
-#endif
+#include <sys/types.h>
+#include <sys/stat.h>
#ifndef SEEK_SET
# define SEEK_SET 0
@@ -58,150 +43,142 @@
* not all systems have off_t
* explicit add of those we know to have ...
*/
-#ifdef __osf__
-# define OFF_T off_t
-#endif
#ifndef OFF_T
# define OFF_T long
#endif
-#ifdef __VMS__
-/*
- * get those VMS definitions ...
- */
-# include <rms.h>
+#if 1
+# define NO_STDIO
+#else
+# undef __BEGIN_INTERRUPTABLE__
+# undef __END_INTERRUPTABLE__
+# define __BEGIN_INTERRUPTABLE__
+# define __END_INTERRUPTABLE__
+#endif
+
+#ifdef i386
+# define _X86_
#endif
-#ifdef WIN32
-# if 1
-# define NO_STDIO
-# else
-# undef __BEGIN_INTERRUPTABLE__
-# undef __END_INTERRUPTABLE__
-# define __BEGIN_INTERRUPTABLE__
-# define __END_INTERRUPTABLE__
-# endif
-# ifdef i386
-# define _X86_
-# endif
+#undef INT
+#undef Array
+#undef Number
+#undef Method
+#undef Point
+#undef Rectangle
+#undef Block
+#undef Time
+#undef Date
-# undef INT
-# undef Array
-# undef Number
-# undef Method
-# undef Point
-# undef Rectangle
-# undef Block
-# undef Time
-# undef Date
-
-# define NOATOM
-# define NOGDICAPMASKS
-# define NOMETAFILE
-# define NOMINMAX
+#define NOATOM
+#define NOGDICAPMASKS
+#define NOMETAFILE
+#define NOMINMAX
//# define NOOPENFILE
-# define NOSOUND
-# define NOWH
+#define NOSOUND
+#define NOWH
//# define NOCOMM
-# define NOKANJI
-# define NOCRYPT
+#define NOKANJI
+#define NOCRYPT
//# define NOMCX
-# define WIN32_LEAN_AND_MEAN
-# include <windows.h>
-# include <winsock.h> /* */
-# if !defined(__BORLANDC__)
-# define stat _stat
-# endif
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <winsock.h> /* */
+#if !defined(__BORLANDC__)
+# define stat _stat
+#endif
-# ifdef __DEF_Array
-# define Array __DEF_Array
-# endif
-# ifdef __DEF_Number
-# define Number __DEF_Number
-# endif
-# ifdef __DEF_Method
-# define Method __DEF_Method
-# endif
-# ifdef __DEF_Point
-# define Point __DEF_Point
-# endif
-# ifdef __DEF_Block
-# define Block __DEF_Block
-# endif
-# ifdef __DEF_Time
-# define Time __DEF_Time
-# endif
-# ifdef __DEF_Date
-# define Date __DEF_Date
-# endif
+#ifdef __DEF_Array
+# define Array __DEF_Array
+#endif
+#ifdef __DEF_Number
+# define Number __DEF_Number
+#endif
+#ifdef __DEF_Method
+# define Method __DEF_Method
+#endif
+#ifdef __DEF_Point
+# define Point __DEF_Point
+#endif
+#ifdef __DEF_Block
+# define Block __DEF_Block
+#endif
+#ifdef __DEF_Time
+# define Time __DEF_Time
+#endif
+#ifdef __DEF_Date
+# define Date __DEF_Date
+#endif
-# define INT int
-#endif /* WIN32 */
+#define INT int
#ifdef NO_STDIO
+
/*# define HFILE HANDLE*/
# define HFILE FILE *
//# define fileno(f) f
-# define TELL(currentPosition,f,buffered) \
+# define TELL(currentPosition,f,buffered) \
if (buffered) { \
currentPosition = ftell(f); \
} else { \
- OBJ rA = __INST(readAhead); \
- if (rA != nil) { \
- __INST(readAhead) = nil; \
- currentPosition = lseek(fileno(f), -1L, SEEK_CUR); \
- } \
- else \
- currentPosition = lseek(fileno(f), 0L, SEEK_CUR); \
+ OBJ rA = __INST(readAhead); \
+ if (rA != nil) { \
+ __INST(readAhead) = nil; \
+ currentPosition = lseek(fileno(f), -1L, SEEK_CUR); \
+ } else { \
+ currentPosition = lseek(fileno(f), 0L, SEEK_CUR); \
+ } \
+ }
+
+# define SEEK(ret,f,nP,buffered) \
+ if (buffered) { \
+ ret = fseek(f, nP, SEEK_SET); \
+ } else { \
+ OBJ rA = __INST(readAhead); \
+ if (rA != nil) { \
+ __INST(readAhead) = nil; \
+ } \
+ ret = lseek(fileno(f), nP, SEEK_SET); \
}
-# define SEEK(ret,f,nP,buffered) \
- if (buffered) { \
- ret = fseek(f, nP, SEEK_SET); \
- } else { \
- OBJ rA = __INST(readAhead); \
- if (rA != nil) { \
- __INST(readAhead) = nil; \
- } \
- ret = lseek(fileno(f), nP, SEEK_SET); \
- }
+# define TOEND(ret,f,buffered) \
+ if (buffered) { \
+ ret = fseek(f, 0L, SEEK_END); \
+ } else { \
+ OBJ rA = __INST(readAhead); \
+ if (rA != nil) { \
+ __INST(readAhead) = nil; \
+ } \
+ ret = lseek(fileno(f), 0L, SEEK_END); \
+ }
-# define TOEND(ret,f,buffered) \
- if (buffered) { \
- ret = fseek(f, 0L, SEEK_END); \
- } else { \
- OBJ rA = __INST(readAhead); \
- if (rA != nil) { \
- __INST(readAhead) = nil; \
- } \
- ret = lseek(fileno(f), 0L, SEEK_END); \
- }
#else
+
# define HFILE FILE *
-# define TELL(currentPosition,f,buffered) \
- if (buffered) { \
- currentPosition = ftell(f); \
- } else { \
- currentPosition = lseek(fileno(f), 0L, SEEK_CUR); \
- }
+# define TELL(currentPosition,f,buffered) \
+ if (buffered) { \
+ currentPosition = ftell(f); \
+ } else { \
+ currentPosition = lseek(fileno(f), 0L, SEEK_CUR); \
+ }
-# define SEEK(ret,f,nP,buffered) \
- if (buffered) { \
- ret = fseek(f, nP, SEEK_SET); \
- } else { \
- ret = lseek(fileno(f), nP, SEEK_SET); \
- }
+# define SEEK(ret,f,nP,buffered) \
+ if (buffered) { \
+ ret = fseek(f, nP, SEEK_SET); \
+ } else { \
+ ret = lseek(fileno(f), nP, SEEK_SET); \
+ }
-# define TOEND(ret,f,buffered) \
- if (buffered) { \
- ret = fseek(f, 0L, SEEK_END); \
- } else { \
- ret = lseek(fileno(f), 0L, SEEK_END); \
- }
-
+# define TOEND(ret,f,buffered) \
+ if (buffered) { \
+ ret = fseek(f, 0L, SEEK_END); \
+ } else { \
+ ret = lseek(fileno(f), 0L, SEEK_END); \
+ }
+
extern long ftell(), lseek();
#endif
@@ -255,36 +232,12 @@
canPosition <Boolean> positionable - read above comment
[author:]
- Claus Gittinger
+ Claus Gittinger (original Unix version)
+ Manfred Dierolf (dos port)
[see also:]
Filename DirectoryStream PipeStream Socket
"
-!
-
-examples
-"
- for VMS users only:
-
- The #openWithMode:attributes: entry allows additional RMS attributes
- to be passed in the second argument, which must be an array of strings
- as described in the 'creat' RTL Library documentation.
-
- For example, to create a file with fixed records and recordLength of 100,
- use:
-
- |newFile|
-
- newFile := FileStream new pathName:'<nameOfFile>'.
- newFile setMode:#writeonly.
- newFile openWithMode:'w' attributes:#('rfm=fix' 'fsz=100').
-
- since all of the above is private protocol, and it is considered bad style to
- access these from user programs, we recommend subclassing FileStream as
- something like VMSFixedRecordFileStream, and redefine the instance creation
- method(s) there as appropriate.
- This will retain VMS specifics in one place and enhance maintanability.
-"
! !
!FileStream class methodsFor:'initialization'!
@@ -879,7 +832,7 @@
path = __INST(pathName);
} while ((f == NULL) && (errno == EINTR));
- if (f == NULL) {
+ if ((f == NULL) || (f == (HFILE)(-1)){
/*
* If no filedescriptors available, try to finalize
* possibly collected fd's and try again.
@@ -1024,6 +977,6 @@
!FileStream class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Attic/FileStr_win32.st,v 1.6 1999-06-18 12:49:31 ps Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Attic/FileStr_win32.st,v 1.7 1999-07-10 10:18:50 cg Exp $'
! !
FileStream initialize!
--- a/FileStream_win32.st Sat Jul 10 01:05:49 1999 +0200
+++ b/FileStream_win32.st Sat Jul 10 12:18:50 1999 +0200
@@ -19,9 +19,6 @@
!FileStream primitiveDefinitions!
%{
-#ifdef __openVMS__
-# undef __new
-#endif
#include <stdio.h>
#define _STDIO_H_INCLUDED_
@@ -29,20 +26,8 @@
#include <errno.h>
#define _ERRNO_H_INCLUDED_
-#ifdef transputer
-# include <iocntrl.h>
-# ifndef fileno
- /* kludge: inmos forgot fileno */
-# define fileno(f) ((f)->__file)
-# endif
-#else
-# include <sys/types.h>
-# include <sys/stat.h>
-#endif
-
-#ifdef hpux
-# define fileno(f) ((f->__fileH << 8) | (f->__fileL))
-#endif
+#include <sys/types.h>
+#include <sys/stat.h>
#ifndef SEEK_SET
# define SEEK_SET 0
@@ -58,150 +43,142 @@
* not all systems have off_t
* explicit add of those we know to have ...
*/
-#ifdef __osf__
-# define OFF_T off_t
-#endif
#ifndef OFF_T
# define OFF_T long
#endif
-#ifdef __VMS__
-/*
- * get those VMS definitions ...
- */
-# include <rms.h>
+#if 1
+# define NO_STDIO
+#else
+# undef __BEGIN_INTERRUPTABLE__
+# undef __END_INTERRUPTABLE__
+# define __BEGIN_INTERRUPTABLE__
+# define __END_INTERRUPTABLE__
+#endif
+
+#ifdef i386
+# define _X86_
#endif
-#ifdef WIN32
-# if 1
-# define NO_STDIO
-# else
-# undef __BEGIN_INTERRUPTABLE__
-# undef __END_INTERRUPTABLE__
-# define __BEGIN_INTERRUPTABLE__
-# define __END_INTERRUPTABLE__
-# endif
-# ifdef i386
-# define _X86_
-# endif
+#undef INT
+#undef Array
+#undef Number
+#undef Method
+#undef Point
+#undef Rectangle
+#undef Block
+#undef Time
+#undef Date
-# undef INT
-# undef Array
-# undef Number
-# undef Method
-# undef Point
-# undef Rectangle
-# undef Block
-# undef Time
-# undef Date
-
-# define NOATOM
-# define NOGDICAPMASKS
-# define NOMETAFILE
-# define NOMINMAX
+#define NOATOM
+#define NOGDICAPMASKS
+#define NOMETAFILE
+#define NOMINMAX
//# define NOOPENFILE
-# define NOSOUND
-# define NOWH
+#define NOSOUND
+#define NOWH
//# define NOCOMM
-# define NOKANJI
-# define NOCRYPT
+#define NOKANJI
+#define NOCRYPT
//# define NOMCX
-# define WIN32_LEAN_AND_MEAN
-# include <windows.h>
-# include <winsock.h> /* */
-# if !defined(__BORLANDC__)
-# define stat _stat
-# endif
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <winsock.h> /* */
+#if !defined(__BORLANDC__)
+# define stat _stat
+#endif
-# ifdef __DEF_Array
-# define Array __DEF_Array
-# endif
-# ifdef __DEF_Number
-# define Number __DEF_Number
-# endif
-# ifdef __DEF_Method
-# define Method __DEF_Method
-# endif
-# ifdef __DEF_Point
-# define Point __DEF_Point
-# endif
-# ifdef __DEF_Block
-# define Block __DEF_Block
-# endif
-# ifdef __DEF_Time
-# define Time __DEF_Time
-# endif
-# ifdef __DEF_Date
-# define Date __DEF_Date
-# endif
+#ifdef __DEF_Array
+# define Array __DEF_Array
+#endif
+#ifdef __DEF_Number
+# define Number __DEF_Number
+#endif
+#ifdef __DEF_Method
+# define Method __DEF_Method
+#endif
+#ifdef __DEF_Point
+# define Point __DEF_Point
+#endif
+#ifdef __DEF_Block
+# define Block __DEF_Block
+#endif
+#ifdef __DEF_Time
+# define Time __DEF_Time
+#endif
+#ifdef __DEF_Date
+# define Date __DEF_Date
+#endif
-# define INT int
-#endif /* WIN32 */
+#define INT int
#ifdef NO_STDIO
+
/*# define HFILE HANDLE*/
# define HFILE FILE *
//# define fileno(f) f
-# define TELL(currentPosition,f,buffered) \
+# define TELL(currentPosition,f,buffered) \
if (buffered) { \
currentPosition = ftell(f); \
} else { \
- OBJ rA = __INST(readAhead); \
- if (rA != nil) { \
- __INST(readAhead) = nil; \
- currentPosition = lseek(fileno(f), -1L, SEEK_CUR); \
- } \
- else \
- currentPosition = lseek(fileno(f), 0L, SEEK_CUR); \
+ OBJ rA = __INST(readAhead); \
+ if (rA != nil) { \
+ __INST(readAhead) = nil; \
+ currentPosition = lseek(fileno(f), -1L, SEEK_CUR); \
+ } else { \
+ currentPosition = lseek(fileno(f), 0L, SEEK_CUR); \
+ } \
+ }
+
+# define SEEK(ret,f,nP,buffered) \
+ if (buffered) { \
+ ret = fseek(f, nP, SEEK_SET); \
+ } else { \
+ OBJ rA = __INST(readAhead); \
+ if (rA != nil) { \
+ __INST(readAhead) = nil; \
+ } \
+ ret = lseek(fileno(f), nP, SEEK_SET); \
}
-# define SEEK(ret,f,nP,buffered) \
- if (buffered) { \
- ret = fseek(f, nP, SEEK_SET); \
- } else { \
- OBJ rA = __INST(readAhead); \
- if (rA != nil) { \
- __INST(readAhead) = nil; \
- } \
- ret = lseek(fileno(f), nP, SEEK_SET); \
- }
+# define TOEND(ret,f,buffered) \
+ if (buffered) { \
+ ret = fseek(f, 0L, SEEK_END); \
+ } else { \
+ OBJ rA = __INST(readAhead); \
+ if (rA != nil) { \
+ __INST(readAhead) = nil; \
+ } \
+ ret = lseek(fileno(f), 0L, SEEK_END); \
+ }
-# define TOEND(ret,f,buffered) \
- if (buffered) { \
- ret = fseek(f, 0L, SEEK_END); \
- } else { \
- OBJ rA = __INST(readAhead); \
- if (rA != nil) { \
- __INST(readAhead) = nil; \
- } \
- ret = lseek(fileno(f), 0L, SEEK_END); \
- }
#else
+
# define HFILE FILE *
-# define TELL(currentPosition,f,buffered) \
- if (buffered) { \
- currentPosition = ftell(f); \
- } else { \
- currentPosition = lseek(fileno(f), 0L, SEEK_CUR); \
- }
+# define TELL(currentPosition,f,buffered) \
+ if (buffered) { \
+ currentPosition = ftell(f); \
+ } else { \
+ currentPosition = lseek(fileno(f), 0L, SEEK_CUR); \
+ }
-# define SEEK(ret,f,nP,buffered) \
- if (buffered) { \
- ret = fseek(f, nP, SEEK_SET); \
- } else { \
- ret = lseek(fileno(f), nP, SEEK_SET); \
- }
+# define SEEK(ret,f,nP,buffered) \
+ if (buffered) { \
+ ret = fseek(f, nP, SEEK_SET); \
+ } else { \
+ ret = lseek(fileno(f), nP, SEEK_SET); \
+ }
-# define TOEND(ret,f,buffered) \
- if (buffered) { \
- ret = fseek(f, 0L, SEEK_END); \
- } else { \
- ret = lseek(fileno(f), 0L, SEEK_END); \
- }
-
+# define TOEND(ret,f,buffered) \
+ if (buffered) { \
+ ret = fseek(f, 0L, SEEK_END); \
+ } else { \
+ ret = lseek(fileno(f), 0L, SEEK_END); \
+ }
+
extern long ftell(), lseek();
#endif
@@ -255,36 +232,12 @@
canPosition <Boolean> positionable - read above comment
[author:]
- Claus Gittinger
+ Claus Gittinger (original Unix version)
+ Manfred Dierolf (dos port)
[see also:]
Filename DirectoryStream PipeStream Socket
"
-!
-
-examples
-"
- for VMS users only:
-
- The #openWithMode:attributes: entry allows additional RMS attributes
- to be passed in the second argument, which must be an array of strings
- as described in the 'creat' RTL Library documentation.
-
- For example, to create a file with fixed records and recordLength of 100,
- use:
-
- |newFile|
-
- newFile := FileStream new pathName:'<nameOfFile>'.
- newFile setMode:#writeonly.
- newFile openWithMode:'w' attributes:#('rfm=fix' 'fsz=100').
-
- since all of the above is private protocol, and it is considered bad style to
- access these from user programs, we recommend subclassing FileStream as
- something like VMSFixedRecordFileStream, and redefine the instance creation
- method(s) there as appropriate.
- This will retain VMS specifics in one place and enhance maintanability.
-"
! !
!FileStream class methodsFor:'initialization'!
@@ -879,7 +832,7 @@
path = __INST(pathName);
} while ((f == NULL) && (errno == EINTR));
- if (f == NULL) {
+ if ((f == NULL) || (f == (HFILE)(-1)){
/*
* If no filedescriptors available, try to finalize
* possibly collected fd's and try again.
@@ -1024,6 +977,6 @@
!FileStream class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Attic/FileStream_win32.st,v 1.6 1999-06-18 12:49:31 ps Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Attic/FileStream_win32.st,v 1.7 1999-07-10 10:18:50 cg Exp $'
! !
FileStream initialize!