]> OCCT Git - occt-wok.git/commitdiff
No comments
authorcas <cas@opencascade.com>
Wed, 3 Nov 1999 18:05:01 +0000 (18:05 +0000)
committercas <cas@opencascade.com>
Wed, 3 Nov 1999 18:05:01 +0000 (18:05 +0000)
src/WOKUnix/WOKUnix_FDescr.cdl
src/WOKUnix/WOKUnix_FDescr.cxx
src/WOKUnix/WOKUnix_MaxPipeSize.hxx
src/WOKUnix/WOKUnix_Signal.cxx

index 8c9b7570a70fb9c9188be47901cf589a88c60994..cd15a24da76e441e4bcb3b156a307f68320cba16 100755 (executable)
@@ -43,6 +43,4 @@ is
     Stdout(myclass) returns FDescr from WOKUnix;
     Stderr(myclass) returns FDescr from WOKUnix;
     
-fields 
-    myFILE : Address from Standard;
 end;
index 5a71d94c41e14c768b38593d96fa4d6fd52c85f5..20b913c9acf0191449e4f529cdb532f677682a87 100755 (executable)
@@ -26,6 +26,10 @@ extern int errno;
 
 const OSD_WhoAmI Iam = OSD_WFile;
 
+#ifdef LIN
+static FILE* _wokunix_fdopen ( int );
+#endif  // LIN
+
 //=======================================================================
 //function : WOKUnix_FDescr
 //purpose  : 
@@ -39,7 +43,14 @@ WOKUnix_FDescr::WOKUnix_FDescr()
 //function : WOKUnix_FDescr
 //purpose  : 
 //=======================================================================
-WOKUnix_FDescr::WOKUnix_FDescr(const Standard_Integer afd) {myFileChannel = afd;myFILE = fdopen(afd, "r");}
+WOKUnix_FDescr::WOKUnix_FDescr(const Standard_Integer afd) {
+ myFileChannel = afd;
+#ifndef LIN
+ myFILE = fdopen(afd, "r");
+#else
+ myFILE = _wokunix_fdopen ( afd );
+#endif  // LIN
+}
 
 //=======================================================================
 //function : WOKUnix_FDescr
@@ -48,8 +59,12 @@ WOKUnix_FDescr::WOKUnix_FDescr(const Standard_Integer afd) {myFileChannel = afd;
 WOKUnix_FDescr::WOKUnix_FDescr(const Standard_Integer afd, const Handle(TCollection_HAsciiString)& apath)
 {
   myFileChannel = afd;
+#ifndef LIN
   myFILE = fdopen(afd, "r");
-  SetPath(apath->String());
+#else
+  myFILE = _wokunix_fdopen ( afd );
+#endif  // LIN
+ SetPath(apath->String());
 }
 
 //=======================================================================
@@ -389,8 +404,40 @@ WOKUnix_FDescr WOKUnix_FDescr::Stderr()
   return StderrFD;
 }
 
+#ifdef LIN
+static FILE* _wokunix_fdopen ( int fd ) {
+
+ char* fdMode;
+ int   mode = fcntl ( fd, F_GETFL );
+
+ switch ( mode & O_ACCMODE ) {
+
+  case O_RDONLY:
+
+   fdMode = "r";
+
+  break;
+
+  case O_WRONLY:
+
+   fdMode = "w";
+
+  break;
+
+  case O_RDWR:
+
+   fdMode = "r+";
+
+  break;
+
+ }  // end switch
 
+ FILE* retVal = fdopen ( fd, fdMode );
 
+ if ( retVal == NULL ) perror ( "fdopen" );
 
+ return retVal;
 
+}  // end _wokunix_fdopen
+#endif  // LIN
 
index c07d95b1a6c64bea872077e8cac913cf5721a1cd..723d4d3fa98da639f9e779f76d756460a5b686b4 100755 (executable)
@@ -21,6 +21,9 @@
 #elif SOLARIS
 #include <sys/param.h>
 #define MAX_PIPE_SIZE PIPE_MAX
+#elif defined(LIN)
+#include <limits.h>
+#define MAX_PIPE_SIZE PIPE_BUF
 #endif
 
 
index 752375b6379bbdab4c2f26daefaf2546c26af126..1be1356261e55094d647702a0e2221e33c8a5973 100755 (executable)
@@ -5,7 +5,10 @@
 #include <stdlib.h>
 #include <signal.h>
 
-#ifndef HPUX
+#ifdef LIN
+#include <bits/sigset.h>
+#include <signal.h>
+#elif !defined(HPUX)
 #include <siginfo.h>
 #endif
 
@@ -79,6 +82,9 @@ void WOKUnix_Signal::Arm(const WOKUnix_SigHandler& ahandler)
   act.sa_mask.__sigbits[2]      = 0;
   act.sa_mask.__sigbits[3]      = 0;
   act.sa_flags             = 0;
+#elif defined(LIN)
+  sigemptyset(&act.sa_mask) ;
+  act.sa_flags   = 0;
 #else
   act.sa_mask    = 0;
   act.sa_flags   = 0;