--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/networkingtestandutils/networkingexamples/cgi/src/ws_cgi.cpp Tue Jan 26 15:23:49 2010 +0200
@@ -0,0 +1,107 @@
+// Copyright (c) 2004-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:
+// ws_cgi.cpp - CGI library main module
+//
+
+#include "ws_cgi.h"
+
+// Entry point.
+#ifndef EKA2
+GLDEF_C TInt E32Dll(TDllReason /*aReason*/)
+{
+ return (KErrNone);
+}
+#endif
+
+
+//******************************************* CCommandArg Functions ***********************************************
+EXPORT_C CCommandArg::CCommandArg()
+{
+ iArgc = 0;
+}
+
+EXPORT_C CCommandArg::~CCommandArg()
+{
+ for (TInt i=0; i<iArgc;i++)
+ {
+ delete iArgv[i];
+ }
+ iArgc = 0;
+
+}
+
+void CCommandArg::SetL(const CCommandArg& aComArg)
+{
+ iArgc = aComArg.iArgc;
+
+ for (TInt i=0; i<iArgc;i++)
+ {
+ iArgv[i] = aComArg.iArgv[i]->Des().AllocL();
+ }
+}
+
+//******************************************* TCgiEnv Functions ***********************************************
+void TCgiEnv::Set(const TCgiEnv& aCgiEnv)
+{
+ iAuthType.Copy(aCgiEnv.iAuthType);
+ iContentLength.Copy(aCgiEnv.iContentLength);
+ iContentType.Copy(aCgiEnv.iContentType);
+ iGatewayInterface.Copy(aCgiEnv.iGatewayInterface);
+ iPathInfo.Copy(aCgiEnv.iPathInfo);
+ iPathTranslated.Copy(aCgiEnv.iPathTranslated);
+ iQueryString.Copy(aCgiEnv.iQueryString);
+ iRemoteAddr.Copy(aCgiEnv.iRemoteAddr);
+ iRemoteHost.Copy(aCgiEnv.iRemoteHost);
+ iRemoteIdent.Copy(aCgiEnv.iRemoteIdent);
+ iRemoteUser.Copy(aCgiEnv.iRemoteUser);
+ iRequestMethod.Copy(aCgiEnv.iRequestMethod);
+ iScriptName.Copy(aCgiEnv.iScriptName);
+ iServerName.Copy(aCgiEnv.iServerName);
+ iServerPort.Copy(aCgiEnv.iServerPort);
+ iServerProtocol.Copy(aCgiEnv.iServerProtocol);
+ iServerSoftware.Copy(aCgiEnv.iServerSoftware);
+}
+
+//************************************************ CExecCGI functions **********************************************
+EXPORT_C void CExecCGI::ConstructL(const TFileName& aFileIn, const TFileName& aFileOut, const CCommandArg& aComArg, const TCgiEnv& aEnv)
+{
+ iFileIn = aFileIn;
+ iFileOut = aFileOut;
+ iComArg.SetL(aComArg);
+ iEnv.Set(aEnv);
+}
+
+EXPORT_C void CExecCGI::StartCGI()
+{
+ iFileSession.Connect();
+ iFileOutput.Replace(iFileSession,iFileOut,EFileStream);
+ iFileInput.Open(iFileSession,iFileIn,EFileStream);
+}
+
+EXPORT_C TInt CExecCGI::Read(TDes8& aBuffer) const
+{
+ return iFileInput.Read(aBuffer);
+}
+
+EXPORT_C TInt CExecCGI::Write(const TDesC8& aBuffer)
+{
+ return iFileOutput.Write(aBuffer);
+}
+
+EXPORT_C void CExecCGI::CloseCGI()
+{
+ iFileInput.Close();
+ iFileOutput.Close();
+ iFileSession.Close();
+}