/******************************************************************************* * Copyright (c) 2010, 2011 Ericsson and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Ericsson - Initial API and implementation *******************************************************************************/ package org.eclipse.cdt.dsf.mi.service.command.commands; import org.eclipse.cdt.dsf.debug.service.command.ICommandControlService.ICommandControlDMContext; /** * * -gdb-set env VARNAME [=VALUE] * * Set environment variable VARNAME to VALUE. The value changes for your program only, * not for gdb itself. VALUE may be any string; the values of environment variables are * just strings, and any interpretation is supplied by your program itself. The VALUE * parameter is optional; if it is omitted, the variable is set to a null value. * * @since 3.0 * */ public class MIGDBSetEnv extends MIGDBSet { public MIGDBSetEnv(ICommandControlDMContext dmc, String name) { this(dmc, name, null); } public MIGDBSetEnv(ICommandControlDMContext dmc, String name, String value) { // MICommand wraps a parameter with double quotes if it contains a space. If the // value of the environment variable has a space, and we bundle the var name, the // '=' and the value as a single parameter, then we'll end up with something like // // -gdb-set env "MYVAR=MY VAR" // // which defines an environment variable named "MYVAR=MY VAR", with an empty // string for a value. To avoid this, we send each element as a separate parameter // // -gdb-set env MYVAR = MY VAR super(dmc, null); if (value == null || value.length() == 0) { setParameters(new String[] { "env", name }); //$NON-NLS-1$ } else { String[] splitValue = value.split(" "); //$NON-NLS-1$ String[] params = new String[splitValue.length+3]; params[0] = "env"; //$NON-NLS-1$ params[1] = name; params[2] = "="; //$NON-NLS-1$ for (int i=3; i<params.length; i++) { params[i] = splitValue[i-3]; } setParameters(params); } } }