/********************************************************************** 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(); } }