/******************************************************************************* * Copyright (c) 2000, 2012 IBM Corporation 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: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.cdt.internal.core; import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Platform; import org.eclipse.core.runtime.Status; public class Util { /** * Returns an IStatus object with severity IStatus.ERROR based on the * given Throwable. * @param t the Throwable that caused the error. * @return an IStatus object based on the given Throwable. */ public static IStatus createStatus(Throwable t) { String msg= t.getMessage(); if (msg == null) { msg= Messages.Util_unexpectedError; } return new Status(IStatus.ERROR, CCorePlugin.PLUGIN_ID, 0, msg, t); } /** * Determines if [filename] is an absolute path specification on the host OS. For example, "c:\some\file" * will return true on Windows, but false on UNIX. Conversely, "/some/file" will return false on Windows, * true on Linux. "somefile.txt", "some/file", "./some/file", and "../some/file" will all return false on * all hosts. * * <p> * UNC paths ("\\some\dir") are recognized as native on Windows. * * @param filename * a file specification. Slashes do not need to be in native format or consistent, except for a * UNC path, where both prefix slashes must be either forward or backwards. */ public static boolean isNativeAbsolutePath(String filename) { if (Platform.getOS().equals(Platform.OS_WIN32)) { if (filename.length() > 2) { // "c:\some\dir" if (filename.charAt(1) == ':') { return filename.length() > 3 && isSlash(filename.charAt(2)); } else { return filename.startsWith("\\\\") || // UNC //$NON-NLS-1$ filename.startsWith("//"); // UNC converted to forward slashes //$NON-NLS-1$ } } return false; } else { // So much simpler on Linux/UNIX (and MacOS now?) return filename.length() > 1 && isSlash(filename.charAt(0)); } } private static boolean isSlash(Character c) { return c == '\\' || c == '/'; } }