X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse.launching/src/net/sourceforge/phpdt/internal/launching/DebuggerRunner.java b/net.sourceforge.phpeclipse.launching/src/net/sourceforge/phpdt/internal/launching/DebuggerRunner.java new file mode 100644 index 0000000..203a5b4 --- /dev/null +++ b/net.sourceforge.phpeclipse.launching/src/net/sourceforge/phpdt/internal/launching/DebuggerRunner.java @@ -0,0 +1,88 @@ +/********************************************************************** +Copyright (c) 2000, 2002 IBM Corp. and others. +All rights reserved. This program and the accompanying materials +are made available under the terms of the Common Public License v1.0 +which accompanies this distribution, and is available at +http://www.eclipse.org/legal/cpl-v10.html + +Contributors: + IBM Corporation - Initial implementation + Vicente Fernando - www.alfersoft.com.ar +**********************************************************************/ +package net.sourceforge.phpdt.internal.launching; + +import java.util.Iterator; + +import org.eclipse.core.resources.IProject; +import org.eclipse.debug.core.ILaunch; +import org.eclipse.debug.core.model.IProcess; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.Path; +import net.sourceforge.phpdt.internal.debug.core.model.PHPDebugTarget; +import net.sourceforge.phpdt.internal.debug.core.Environment; +import net.sourceforge.phpdt.internal.debug.core.PHPDBGProxy; +import net.sourceforge.phpeclipse.resourcesview.PHPProject; + +public class DebuggerRunner extends InterpreterRunner { + + public IProcess run(InterpreterRunnerConfiguration configuration, ILaunch launch) { + String[] env; + PHPDBGProxy newPHPDBGProxy= new PHPDBGProxy(); + newPHPDBGProxy.start(); + env= setEnvironmentVariables(newPHPDBGProxy.getPort(), configuration.getAbsoluteFileName()); + + IProcess process = super.run(configuration, launch, env); + PHPDebugTarget debugTarget = new PHPDebugTarget(launch, process); + newPHPDBGProxy.setDebugTarget(debugTarget); + launch.addDebugTarget(debugTarget); + + return process; + } + + protected String[] setEnvironmentVariables(int listenPort, String AbsoluteFileName) { + IPath FilePath= new Path(AbsoluteFileName); + String OSFilePath= FilePath.toOSString(); + String DBGSessID; + String env[]= new String[18]; + + DBGSessID = "DBGSESSID=0753972710000018@clienthost:" + listenPort; + + env[0]= "HTTP_COOKIE=" + DBGSessID; + env[1]= "REDIRECT_QUERY_STRING="; + env[2]= "REDIRECT_STATUS=200"; + env[3]= "REDIRECT_URL=" + OSFilePath; + env[4]= "SERVER_SOFTWARE=DBG / 2.1"; + env[5]= "SERVER_NAME=localhost"; + env[6]= "SERVER_ADDR=127.0.0.1"; + env[7]= "SERVER_PORT=80"; + env[8]= "REMOTE_ADDR=127.0.0.1"; + env[9]= "SCRIPT_FILENAME=c:\\php\\php.exe"; + env[10]= "GATEWAY_INTERFACE=CGI / 1.1"; + env[11]= "SERVER_PROTOCOL=HTTP / 1.1"; + env[12]= "REQUEST_METHOD=GET"; + env[13]= "QUERY_STRING="; + env[14]= "REQUEST_URI=" + OSFilePath; + env[15]= "PATH_INFO=" + OSFilePath; + env[16]= "PATH_TRANSLATED=" + OSFilePath; + env[17]= "SystemRoot=" + Environment.getenv("SystemRoot"); + + return env; + } + + protected String getDebugCommandLineArgument() { + return ""; + } + + protected String renderLoadPath(InterpreterRunnerConfiguration configuration) { + StringBuffer loadPath = new StringBuffer(); + + PHPProject project = configuration.getProject(); + addToLoadPath(loadPath, project.getProject()); + + Iterator referencedProjects = project.getReferencedProjects().iterator(); + while (referencedProjects.hasNext()) + addToLoadPath(loadPath, (IProject) referencedProjects.next()); + + return loadPath.toString(); + } +}