--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/genericopenlibs/cstdlib/INC/SYSIF.H Tue Feb 02 02:01:42 2010 +0200
@@ -0,0 +1,228 @@
+// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include <e32std.h>
+#include <e32base.h>
+#include <f32file.h>
+#include <es_sock.h>
+#include "ENVIRON.H"
+#include <stdlib.h>
+#include <c32comm.h>
+
+
+class MSystemInterface
+/**
+@internalComponent
+*/
+ {
+public:
+ virtual MSystemInterface& Clone()=0;
+ virtual void Release()=0;
+ virtual void TerminateProcess(int status)=0;
+
+ virtual int dup (int fid, int& anErrno)=0;
+ virtual int dup2 (int fid, int fid2, int& anErrno)=0;
+ virtual int open (const wchar_t* name, int mode, int perms, int& anErrno)=0;
+ virtual int read (int fid, char* buf, unsigned long len, int& anErrno)=0;
+ virtual int write (int fid, const char* buf, unsigned long len, int& anErrno)=0;
+ virtual int fsync (int fid, int& anErrno)=0;
+ virtual int close (int fid, int& anErrno)=0;
+ virtual int lseek (int fid, int offset, int whence, int& anErrno)=0;
+ virtual int fstat (int fid, struct stat* st, int& anErrno)=0;
+ virtual int ioctl (int fid, int cmd, void* param, int& anErrno)=0;
+ virtual int ioctl (int fid, int cmd, void* param, TRequestStatus& aStatus, int& anErrno)=0;
+ virtual int ioctl_complete (int fid, int cmd, void* param, TRequestStatus& aStatus, int& anErrno)=0;
+ virtual int ioctl_cancel (int fid, int& anErrno)=0;
+
+ virtual wchar_t * getcwd (wchar_t * buf, unsigned long len, int& anErrno)=0;
+ virtual int chdir (const wchar_t* path, int& anErrno)=0;
+ virtual int mkdir (const wchar_t* path, int perms, int& anErrno)=0;
+ virtual int rmdir (const wchar_t* path, int& anErrno)=0;
+ virtual int chmod (const wchar_t* path, int perms, int& anErrno)=0;
+ virtual int unlink (const wchar_t* path, int& anErrno)=0;
+ virtual int stat (const wchar_t* name, struct stat* st, int& anErrno)=0;
+ virtual int rename (const wchar_t* oldname, const wchar_t* newname, int& anErrno)=0;
+
+ virtual TInt ResolvePath (TParse& aResult, const wchar_t* path, TDes* aFilename)=0;
+
+ virtual int socket (int family, int style, int protocol, int& anErrno)=0;
+ virtual int recvfrom (int fd, char* buf, unsigned long cnt, int flags, struct sockaddr* from, unsigned long* fromsize, int& anErrno)=0;
+ virtual int sendto (int fd, const char* buf, unsigned long cnt, int flags, struct sockaddr* to, unsigned long tosize, int& anErrno)=0;
+ virtual int shutdown (int fd, int how, int& anErrno)=0;
+ virtual int listen (int fd, int n, int& anErrno)=0;
+ virtual int accept (int fd, int& anErrno)=0;
+ virtual int bind (int fd, struct sockaddr* addr, unsigned long size, int& anErrno)=0;
+ virtual int connect (int fd, struct sockaddr* addr, unsigned long size, int& anErrno)=0;
+ virtual int sockname (int fd, struct sockaddr* addr, unsigned long* size, int anEnd, int& anErrno)=0;
+ virtual int getsockopt (int fd, int level, int opt, void* buf, unsigned long* len, int& anErrno)=0;
+ virtual int setsockopt (int fd, int level, int opt, void* buf, unsigned long len, int& anErrno)=0;
+
+ virtual wchar_t* getenv (const wchar_t* name)=0;
+ virtual void unsetenv (const wchar_t* name)=0;
+ virtual int setenv (const wchar_t* name, const wchar_t* value, int rewrite, int& anErrno)=0;
+
+ virtual int popen3 (const wchar_t *file, const wchar_t *cmd, const wchar_t *mode, wchar_t** envp, int fids[3], int& anErrno)=0;
+ virtual int waitpid (int pid, int* status, int options, int& anErrno)=0;
+ };
+
+class CFileDescBase;
+class CFileTable
+/**
+@internalComponent
+*/
+ {
+public:
+ CFileTable();
+ ~CFileTable();
+
+ void InitL();
+ void Close();
+ void Default(CFileDescBase* aConsole);
+ TInt Reserve();
+ TInt Attach(TInt aFid, CFileDescBase* aFile);
+ TInt Detach(TInt aFid, CFileDescBase*& aDetached);
+ TInt At(TInt aFid, CFileDescBase*& aFound) const;
+ TInt Reserve(TInt aFids[3]);
+ TInt Detach(TInt aFids[3]);
+
+ int dup (int fid, int& anErrno);
+ int dup2 (int fid, int fid2, int& anErrno);
+// int open (const wchar_t* name, int mode, int perms, int& anErrno, RFs& aFs);
+ int open (const wchar_t* name, int mode, int perms, int& anErrno, RSessionBase& aFs);
+ int close (int fid, int& anErrno);
+
+ int userclose (int fid, int& anErrno);
+
+ int lseek (int fid, int offset, int whence, int& anErrno);
+ int fstat (int fid, struct stat* st, int& anErrno);
+ int socket (int family, int style, int protocol, int& anErrno, RSocketServ& aSs);
+ int listen (int fd, int n, int& anErrno);
+ int bind (int fd, TSockAddr& address, int& anErrno);
+ int sockname (int fd, TSockAddr& address, int anEnd, int& anErrno);
+ int getsockopt (int fd, int level, int opt, void* buf, unsigned long* len, int& anErrno);
+ int setsockopt (int fd, int level, int opt, void* buf, unsigned long len, int& anErrno);
+ int ioctlcomplete (int fid, int cmd, void* param, TRequestStatus& aStatus, int& anErrno);
+ int ioctlcancel (int fid, int& anErrno);
+
+ TInt Asynch (int fid, CFileDescBase*& aFile);
+
+private:
+ CArrayPtrSeg<CFileDescBase> iFids;
+ TInt Dup(TInt& aFid);
+ TInt Dup2(TInt aFid, TInt aFid2);
+ void Release(TInt aFid);
+ };
+
+class PosixFilesystem
+/**
+@internalComponent
+*/
+ {
+public:
+ static wchar_t* getcwd (RFs& aFs, wchar_t* buf, unsigned long len, int& anErrno);
+ static int chdir (RFs& aFs, const wchar_t* path, int& anErrno);
+ static int mkdir (RFs& aFs, const wchar_t* path, int perms, int& anErrno);
+ static int rmdir (RFs& aFs, const wchar_t* path, int& anErrno);
+ static int chmod (RFs& aFs, const wchar_t* path, int perms, int& anErrno);
+ static int unlink (RFs& aFs, const wchar_t* path, int& anErrno);
+ static int stat (RFs& aFs, const wchar_t* name, struct stat* st, int& anErrno);
+ static int rename (RFs& aFs, const wchar_t* oldname, const wchar_t* newname, int& anErrno);
+ static TInt ResolvePath (RFs& aFs, TParse& aResult, const wchar_t* path, TDes* aFilename);
+ static TInt SetDefaultDir (RFs& aFs);
+ };
+
+NONSHARABLE_CLASS(CLocalSystemInterface) : public CBase, public MSystemInterface
+/**
+To make CleanupStack::PushL() and CleanupStack::Pop() work properly in the 2-phase constructor,
+derivation order must be: public CBase, public MSystemInterface.
+
+@internalComponent
+*/
+ {
+public:
+ static CLocalSystemInterface* NewL();
+ ~CLocalSystemInterface();
+
+ virtual MSystemInterface& Clone();
+ virtual void Release();
+ virtual void TerminateProcess(int status);
+
+ virtual int dup (int fid, int& anErrno);
+ virtual int dup2 (int fid, int fid2, int& anErrno);
+ virtual int open (const wchar_t* name, int mode, int perms, int& anErrno);
+ virtual int read (int fid, char* buf, unsigned long len, int& anErrno);
+ virtual int write (int fid, const char* buf, unsigned long len, int& anErrno);
+ virtual int fsync (int fid, int& anErrno);
+ virtual int close (int fid, int& anErrno);
+ virtual int lseek (int fid, int offset, int whence, int& anErrno);
+ virtual int fstat (int fid, struct stat* st, int& anErrno);
+ virtual int ioctl (int fid, int cmd, void* param, int& anErrno);
+ virtual int ioctl (int fid, int cmd, void* param, TRequestStatus& aStatus, int& anErrno);
+ virtual int ioctl_complete (int fid, int cmd, void* param, TRequestStatus& aStatus, int& anErrno);
+ virtual int ioctl_cancel (int fid, int& anErrno);
+
+ virtual wchar_t* getcwd (wchar_t* buf, unsigned long len, int& anErrno);
+
+
+ virtual int chdir (const wchar_t* path, int& anErrno);
+ virtual int mkdir (const wchar_t* path, int perms, int& anErrno);
+ virtual int rmdir (const wchar_t* path, int& anErrno);
+ virtual int chmod (const wchar_t* path, int perms, int& anErrno);
+ virtual int unlink (const wchar_t* path, int& anErrno);
+ virtual int stat (const wchar_t* name, struct stat* st, int& anErrno);
+ virtual int rename (const wchar_t* oldname, const wchar_t* newname, int& anErrno);
+
+ virtual TInt ResolvePath (TParse& aResult, const wchar_t* path, TDes* aFilename);
+
+ virtual int socket (int family, int style, int protocol, int& anErrno);
+ virtual int recvfrom (int fd, char* buf, unsigned long cnt, int flags, struct sockaddr* from, unsigned long* fromsize, int& anErrno);
+ virtual int sendto (int fd, const char* buf, unsigned long cnt, int flags, struct sockaddr* to, unsigned long tosize, int& anErrno);
+ virtual int shutdown (int fd, int how, int& anErrno);
+ virtual int listen (int fd, int n, int& anErrno);
+ virtual int accept (int fd, int& anErrno);
+ virtual int bind (int fd, struct sockaddr* addr, unsigned long size, int& anErrno);
+ virtual int connect (int fd, struct sockaddr* addr, unsigned long size, int& anErrno);
+ virtual int sockname (int fd, struct sockaddr* addr, unsigned long* size, int anEnd, int& anErrno);
+ virtual int getsockopt (int fd, int level, int opt, void* buf, unsigned long* len, int& anErrno);
+ virtual int setsockopt (int fd, int level, int opt, void* buf, unsigned long len, int& anErrno);
+
+ virtual wchar_t* getenv (const wchar_t* name);
+ virtual void unsetenv (const wchar_t* name);
+ virtual int setenv (const wchar_t* name, const wchar_t* value, int rewrite, int& anErrno);
+
+ virtual int popen3 (const wchar_t *file, const wchar_t *cmd, const wchar_t *mode, wchar_t** envp, int fids[3], int& anErrno);
+ virtual int waitpid (int pid, int* status, int options, int& anErrno);
+
+private:
+ CLocalSystemInterface();
+ void ConstructL();
+
+private:
+ TInt iUseCount;
+ CFileTable iFids;
+ RFs iFs;
+ RSocketServ iSs;
+
+ RCommServ iCs;
+
+ CEnvironment iEnv;
+ };
+
+#include <sys/reent.h>
+/**
+@internalComponent
+*/
+inline MSystemInterface& Interface(struct _reent* r)
+ { return (*REINTERPRET_CAST(MSystemInterface*,r->_system)); }