blob: 0002ee631e90710bb5114f974c499b0be208558f [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008, 2018 xored software, Inc. and others.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* xored software, Inc. - initial API and Implementation (Andrei Sobolev)
*******************************************************************************/
package org.eclipse.dltk.internal.debug.ui.interpreters;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.dltk.core.DLTKCore;
import org.eclipse.dltk.launching.EnvironmentVariable;
import org.eclipse.osgi.util.NLS;
public class EnvironmentVariablesFileUtils {
public static void save(EnvironmentVariable[] variables, String file)
throws Exception {
Writer writer = null;
try {
writer = new OutputStreamWriter(new BufferedOutputStream(
new FileOutputStream(new File(file)), 4096));
for (int i = 0; i < variables.length; i++) {
writer.write(variables[i].getName() + "=" //$NON-NLS-1$
+ variables[i].getValue() + "\n"); //$NON-NLS-1$
}
} catch (FileNotFoundException e) {
if (DLTKCore.DEBUG) {
e.printStackTrace();
}
throw new Exception(e.getMessage());
} catch (IOException e) {
if (DLTKCore.DEBUG) {
e.printStackTrace();
}
throw new Exception(e.getMessage());
} finally {
if (writer != null) {
try {
writer.close();
} catch (IOException e) {
if (DLTKCore.DEBUG) {
e.printStackTrace();
}
}
}
}
}
public static EnvironmentVariable[] load(String file) throws Exception {
LineNumberReader reader = null;
List<EnvironmentVariable> results = new ArrayList<>();
try {
reader = new LineNumberReader(
new InputStreamReader(new BufferedInputStream(
new FileInputStream(new File(file)))));
while (true) {
String line = reader.readLine();
if (line == null) {
break;
}
// line = line.trim();
if (line.length() > 0) {
int pos = line.indexOf('=');
if (pos == -1) {
final String template = Messages.EnvironmentVariablesFileUtils_incorrectFormat;
throw new Exception(NLS.bind(template,
Integer.toString(reader.getLineNumber())));
}
String varName = line.substring(0, pos).trim();
if (varName.length() == 0) {
final String template = Messages.EnvironmentVariablesFileUtils_incorrectFormat;
throw new Exception(NLS.bind(template,
Integer.toString(reader.getLineNumber())));
}
String value = line.substring(pos + 1).trim();
results.add(new EnvironmentVariable(varName, value));
} // else skip line
}
if (results.size() > 0) {
return results.toArray(new EnvironmentVariable[results.size()]);
}
} catch (FileNotFoundException e) {
if (DLTKCore.DEBUG) {
e.printStackTrace();
}
throw new Exception(e.getMessage());
} catch (IOException e) {
if (DLTKCore.DEBUG) {
e.printStackTrace();
}
throw new Exception("IOError:" + e.getMessage()); //$NON-NLS-1$
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
if (DLTKCore.DEBUG) {
e.printStackTrace();
}
}
}
}
return null;
}
}