mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-04 23:55:26 +02:00
Fix 154874 - handle files with space or $ in the name
This commit is contained in:
parent
3cb4324776
commit
ef09a2df00
9 changed files with 271 additions and 296 deletions
|
@ -1,5 +1,5 @@
|
|||
/********************************************************************************
|
||||
* Copyright (c) 2006 IBM Corporation. All rights reserved.
|
||||
* Copyright (c) 2006 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
|
||||
|
@ -11,7 +11,7 @@
|
|||
* Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
|
||||
*
|
||||
* Contributors:
|
||||
* {Name} (company) - description of contribution.
|
||||
* Martin Oberhuber (Wind River) - Fix 154874 - handle files with space or $ in the name
|
||||
********************************************************************************/
|
||||
|
||||
package org.eclipse.rse.dstore.universal.miners.filesystem;
|
||||
|
@ -30,6 +30,7 @@ import org.eclipse.dstore.core.model.DataElement;
|
|||
import org.eclipse.dstore.core.model.DataStore;
|
||||
import org.eclipse.rse.dstore.universal.miners.IUniversalDataStoreConstants;
|
||||
import org.eclipse.rse.services.clientserver.IServiceConstants;
|
||||
import org.eclipse.rse.services.clientserver.PathUtility;
|
||||
import org.eclipse.rse.services.clientserver.archiveutils.AbsoluteVirtualPath;
|
||||
import org.eclipse.rse.services.clientserver.archiveutils.ArchiveHandlerManager;
|
||||
import org.eclipse.rse.services.clientserver.archiveutils.VirtualChild;
|
||||
|
@ -76,24 +77,24 @@ public class FileClassifier extends Thread
|
|||
}
|
||||
}
|
||||
|
||||
public static final String symbolicLinkStr = "symbolic link to";
|
||||
public static final String symbolicLinkStr = "symbolic link to"; //$NON-NLS-1$
|
||||
|
||||
public static final String fileSep = System.getProperty("file.separator");
|
||||
public static final String defaultType = "file";
|
||||
public static final String fileSep = System.getProperty("file.separator"); //$NON-NLS-1$
|
||||
public static final String defaultType = "file"; //$NON-NLS-1$
|
||||
|
||||
public static final String STR_SYMBOLIC_LINK = "symbolic link";
|
||||
public static final String STR_SHARED_OBJECT="shared object";
|
||||
public static final String STR_OBJECT_MODULE="object module";
|
||||
public static final String STR_MODULE="module";
|
||||
public static final String STR_ARCHIVE="archive";
|
||||
public static final String STR_EXECUTABLE="executable";
|
||||
public static final String STR_SCRIPT="script";
|
||||
public static final String STR_EXECUTABLE_SCRIPT="executable(script)";
|
||||
public static final String STR_EXECUTABLE_BINARY="executable(binary)";
|
||||
public static final String STR_DOT_A=".a";
|
||||
public static final String STR_DOT_SO=".so";
|
||||
public static final String STR_DOT_SO_DOT=".so.";
|
||||
public static final String STR_DIRECTORY="diectory";
|
||||
public static final String STR_SYMBOLIC_LINK = "symbolic link"; //$NON-NLS-1$
|
||||
public static final String STR_SHARED_OBJECT="shared object"; //$NON-NLS-1$
|
||||
public static final String STR_OBJECT_MODULE="object module"; //$NON-NLS-1$
|
||||
public static final String STR_MODULE="module"; //$NON-NLS-1$
|
||||
public static final String STR_ARCHIVE="archive"; //$NON-NLS-1$
|
||||
public static final String STR_EXECUTABLE="executable"; //$NON-NLS-1$
|
||||
public static final String STR_SCRIPT="script"; //$NON-NLS-1$
|
||||
public static final String STR_EXECUTABLE_SCRIPT="executable(script)"; //$NON-NLS-1$
|
||||
public static final String STR_EXECUTABLE_BINARY="executable(binary)"; //$NON-NLS-1$
|
||||
public static final String STR_DOT_A=".a"; //$NON-NLS-1$
|
||||
public static final String STR_DOT_SO=".so"; //$NON-NLS-1$
|
||||
public static final String STR_DOT_SO_DOT=".so."; //$NON-NLS-1$
|
||||
public static final String STR_DIRECTORY="diectory"; //$NON-NLS-1$
|
||||
|
||||
|
||||
private DataElement _subject;
|
||||
|
@ -124,24 +125,24 @@ public class FileClassifier extends Thread
|
|||
{
|
||||
_lines = new ArrayList();
|
||||
// special encoding passed in when starting server
|
||||
_specialEncoding = System.getProperty("dstore.stdin.encoding");
|
||||
_specialEncoding = System.getProperty("dstore.stdin.encoding"); //$NON-NLS-1$
|
||||
|
||||
_subject = subject;
|
||||
_dataStore = subject.getDataStore();
|
||||
_fileMap = new ArrayList();
|
||||
|
||||
// we can resolve links on Linux
|
||||
String osName = System.getProperty("os.name").toLowerCase();
|
||||
if (osName.startsWith("win"))
|
||||
String osName = System.getProperty("os.name").toLowerCase(); //$NON-NLS-1$
|
||||
if (osName.startsWith("win")) //$NON-NLS-1$
|
||||
{
|
||||
_systemSupportsClassify = false;
|
||||
}
|
||||
else if (osName.equals("z/OS")) {
|
||||
else if (osName.equals("z/OS")) { //$NON-NLS-1$
|
||||
_systemSupportsClassFilesOnly = true;
|
||||
}
|
||||
|
||||
_systemShell = "sh";
|
||||
_canResolveLinks = osName.startsWith("linux");
|
||||
_systemShell = "sh"; //$NON-NLS-1$
|
||||
_canResolveLinks = osName.startsWith("linux"); //$NON-NLS-1$
|
||||
|
||||
init();
|
||||
}
|
||||
|
@ -188,7 +189,7 @@ public class FileClassifier extends Thread
|
|||
|
||||
// if this file has already been classified
|
||||
// ignore it
|
||||
String[] tokens = properties.split("\\" + IServiceConstants.TOKEN_SEPARATOR);
|
||||
String[] tokens = properties.split("\\" + IServiceConstants.TOKEN_SEPARATOR); //$NON-NLS-1$
|
||||
|
||||
if (tokens.length < 12)
|
||||
{
|
||||
|
@ -284,7 +285,7 @@ public class FileClassifier extends Thread
|
|||
// resolve links by default
|
||||
if (parentFile.isDirectory() && parentFile.list().length > 0)
|
||||
{
|
||||
classifyChildren(parentFile, "*", false);
|
||||
classifyChildren(parentFile, "*", false); //$NON-NLS-1$
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -351,7 +352,7 @@ public class FileClassifier extends Thread
|
|||
// if it's a *.class file, then we look for main method and qulaified
|
||||
// class name
|
||||
// as part of the classification
|
||||
if (name.endsWith(".class"))
|
||||
if (name.endsWith(".class")) //$NON-NLS-1$
|
||||
{
|
||||
// get parent path
|
||||
String parentPath = parentFile.getAbsolutePath();
|
||||
|
@ -393,21 +394,22 @@ public class FileClassifier extends Thread
|
|||
|
||||
// we assume not executable
|
||||
isExecutable = false;
|
||||
return type;
|
||||
}
|
||||
|
||||
// if it is executable, then also get qualified class name
|
||||
if (isExecutable)
|
||||
{
|
||||
type = "executable(java";
|
||||
type = "executable(java"; //$NON-NLS-1$
|
||||
|
||||
String qualifiedClassName = parser.getQualifiedClassName();
|
||||
|
||||
if (qualifiedClassName != null)
|
||||
{
|
||||
type = type + ":" + qualifiedClassName;
|
||||
type = type + ":" + qualifiedClassName; //$NON-NLS-1$
|
||||
}
|
||||
|
||||
type = type + ")";
|
||||
type = type + ")"; //$NON-NLS-1$
|
||||
}
|
||||
return type;
|
||||
}
|
||||
|
@ -476,7 +478,7 @@ public class FileClassifier extends Thread
|
|||
File refFile = new File(referencedFile);
|
||||
if (refFile.isDirectory())
|
||||
{
|
||||
type.append("(directory)");
|
||||
type.append("(directory)"); //$NON-NLS-1$
|
||||
return type.toString();
|
||||
}
|
||||
|
||||
|
@ -490,8 +492,8 @@ public class FileClassifier extends Thread
|
|||
|
||||
String args[] = new String[3];
|
||||
args[0] = _systemShell;
|
||||
args[1] = "-c";
|
||||
args[2] = "file " + referencedFile;
|
||||
args[1] = "-c"; //$NON-NLS-1$
|
||||
args[2] = "file " + PathUtility.enQuoteUnix(referencedFile); //$NON-NLS-1$
|
||||
|
||||
Process childProcess = Runtime.getRuntime().exec(args, null, parentFile);
|
||||
BufferedReader childReader = null;
|
||||
|
@ -537,7 +539,7 @@ public class FileClassifier extends Thread
|
|||
{
|
||||
String referencedFile = aFile.getCanonicalPath();
|
||||
|
||||
String specialEncoding = System.getProperty("dstore.stdin.encoding");
|
||||
String specialEncoding = System.getProperty("dstore.stdin.encoding"); //$NON-NLS-1$
|
||||
/*
|
||||
if (specialEncoding == null)
|
||||
{
|
||||
|
@ -546,9 +548,9 @@ public class FileClassifier extends Thread
|
|||
*/
|
||||
specialEncoding = null;
|
||||
String args[] = new String[3];
|
||||
args[0] = "sh";
|
||||
args[1] = "-c";
|
||||
args[2] = "file " + referencedFile;
|
||||
args[0] = "sh"; //$NON-NLS-1$
|
||||
args[1] = "-c"; //$NON-NLS-1$
|
||||
args[2] = "file " + PathUtility.enQuoteUnix(referencedFile); //$NON-NLS-1$
|
||||
|
||||
Process childProcess = Runtime.getRuntime().exec(args);
|
||||
|
||||
|
@ -589,7 +591,7 @@ public class FileClassifier extends Thread
|
|||
|
||||
if (encoding == null)
|
||||
{
|
||||
encoding = System.getProperty("file.encoding");
|
||||
encoding = System.getProperty("file.encoding"); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
|
||||
|
@ -624,7 +626,7 @@ public class FileClassifier extends Thread
|
|||
// tokenize the output so that we can get each line of
|
||||
// output
|
||||
// the delimiters are therefore set to "\n\r"
|
||||
String[] tokens = fullOutput.split("\n");
|
||||
String[] tokens = fullOutput.split("\n"); //$NON-NLS-1$
|
||||
if (tokens.length > 0)
|
||||
{
|
||||
if (_lines.size() > 0)
|
||||
|
@ -691,21 +693,21 @@ public class FileClassifier extends Thread
|
|||
boolean hasLinks = false;
|
||||
|
||||
String[] args = new String[3];
|
||||
args[0] = "sh";
|
||||
args[0] = "sh"; //$NON-NLS-1$
|
||||
|
||||
args[1] = "-c";
|
||||
args[1] = "-c"; //$NON-NLS-1$
|
||||
|
||||
// if we are asked to resolve children, and it is possible to do so
|
||||
// then use "file -L". This is slower than if we run without the
|
||||
// "-L".
|
||||
if (resolveLinks && _canResolveLinks)
|
||||
{
|
||||
args[2] = "file -L " + files;
|
||||
args[2] = "file -L " + files; //dont quote files to allow shell pattern matching //$NON-NLS-1$
|
||||
}
|
||||
// otherwise, don't use "-L"
|
||||
else
|
||||
{
|
||||
args[2] = "file " + files;
|
||||
args[2] = "file " + files; //dont quote files to allow shell pattern matching //$NON-NLS-1$
|
||||
|
||||
}
|
||||
|
||||
|
@ -746,7 +748,7 @@ public class FileClassifier extends Thread
|
|||
if (line.length() > 0)
|
||||
{
|
||||
line = line.trim();
|
||||
if (line.indexOf("cannot open ") > 0)
|
||||
if (line.indexOf("cannot open ") > 0) //$NON-NLS-1$
|
||||
{
|
||||
|
||||
}
|
||||
|
@ -849,7 +851,7 @@ public class FileClassifier extends Thread
|
|||
// form "link:canonicalPath"
|
||||
if (type.equals(STR_SYMBOLIC_LINK))
|
||||
{
|
||||
if (type.indexOf(":") == -1)
|
||||
if (type.indexOf(":") == -1) //$NON-NLS-1$
|
||||
{
|
||||
textToWrite.append(':');
|
||||
textToWrite.append(canonicalPath);
|
||||
|
@ -911,7 +913,7 @@ public class FileClassifier extends Thread
|
|||
{
|
||||
// we pass true to indicate we want to resolve links this
|
||||
// time
|
||||
classifyChildren(parentFile, "*", true);
|
||||
classifyChildren(parentFile, "*", true); //$NON-NLS-1$
|
||||
}
|
||||
// otherwise, run deferred queries on parents of target files
|
||||
// and try to resolve link
|
||||
|
@ -924,7 +926,7 @@ public class FileClassifier extends Thread
|
|||
|
||||
// we pass true to indicate we want to resolve links
|
||||
// this time
|
||||
StringBuffer newPathBuf = new StringBuffer(aFile.getAbsolutePath());
|
||||
StringBuffer newPathBuf = new StringBuffer(PathUtility.enQuoteUnix(aFile.getAbsolutePath()));
|
||||
newPathBuf.append(File.separatorChar);
|
||||
newPathBuf.append('*');
|
||||
classifyChildren(parentFile, newPathBuf.toString(), true);
|
||||
|
@ -977,7 +979,7 @@ public class FileClassifier extends Thread
|
|||
|
||||
// virtual path is "" to indicate we want the top level entries
|
||||
// in the archive
|
||||
virtualPath = "";
|
||||
virtualPath = ""; //$NON-NLS-1$
|
||||
}
|
||||
// otherwise, if the parent is a virtual folder
|
||||
else
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/********************************************************************************
|
||||
* Copyright (c) 2002, 2006 IBM Corporation. All rights reserved.
|
||||
* Copyright (c) 2002, 2006 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
|
||||
|
@ -11,7 +11,7 @@
|
|||
* Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
|
||||
*
|
||||
* Contributors:
|
||||
* {Name} (company) - description of contribution.
|
||||
* Martin Oberhuber (Wind River) - Fix 154874 - handle files with space or $ in the name
|
||||
********************************************************************************/
|
||||
|
||||
package org.eclipse.rse.dstore.universal.miners.filesystem;
|
||||
|
@ -35,6 +35,7 @@ import org.eclipse.rse.dstore.universal.miners.ICancellableHandler;
|
|||
import org.eclipse.rse.dstore.universal.miners.IUniversalDataStoreConstants;
|
||||
import org.eclipse.rse.dstore.universal.miners.UniversalServerUtilities;
|
||||
import org.eclipse.rse.services.clientserver.IClientServerConstants;
|
||||
import org.eclipse.rse.services.clientserver.PathUtility;
|
||||
import org.eclipse.rse.services.clientserver.SystemFileClassifier;
|
||||
import org.eclipse.rse.services.clientserver.SystemSearchString;
|
||||
import org.eclipse.rse.services.clientserver.archiveutils.AbsoluteVirtualPath;
|
||||
|
@ -74,14 +75,14 @@ public class UniversalFileSystemMiner extends Miner implements
|
|||
private DataElement deUniversalArchiveFileObject;
|
||||
|
||||
|
||||
protected String filterString = "*";
|
||||
protected String filterString = "*"; //$NON-NLS-1$
|
||||
|
||||
protected ArchiveHandlerManager _archiveHandlerManager;
|
||||
|
||||
protected boolean showHidden = false;
|
||||
|
||||
|
||||
public static final String CLASSNAME = "UniversalFileSystemMiner";
|
||||
public static final String CLASSNAME = "UniversalFileSystemMiner"; //$NON-NLS-1$
|
||||
|
||||
protected HashMap _cancellableThreads;
|
||||
|
||||
|
@ -89,11 +90,11 @@ public class UniversalFileSystemMiner extends Miner implements
|
|||
|
||||
public UniversalFileSystemMiner() {
|
||||
_cancellableThreads = new HashMap();
|
||||
_isWindows = System.getProperty("os.name").toLowerCase().startsWith("windows");
|
||||
_isWindows = System.getProperty("os.name").toLowerCase().startsWith("windows"); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
_archiveHandlerManager = ArchiveHandlerManager.getInstance();
|
||||
_archiveHandlerManager.setRegisteredHandler("zip", SystemZipHandler.class);
|
||||
_archiveHandlerManager.setRegisteredHandler("jar", SystemJarHandler.class);
|
||||
_archiveHandlerManager.setRegisteredHandler("tar", SystemTarHandler.class);
|
||||
_archiveHandlerManager.setRegisteredHandler("zip", SystemZipHandler.class); //$NON-NLS-1$
|
||||
_archiveHandlerManager.setRegisteredHandler("jar", SystemJarHandler.class); //$NON-NLS-1$
|
||||
_archiveHandlerManager.setRegisteredHandler("tar", SystemTarHandler.class); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
protected FileClassifier getFileClassifier(DataElement subject)
|
||||
|
@ -113,17 +114,17 @@ public class UniversalFileSystemMiner extends Miner implements
|
|||
DataElement status = getCommandStatus(theElement);
|
||||
DataElement subject = getCommandArgument(theElement, 0);
|
||||
|
||||
UniversalServerUtilities.logInfo(getName(), name + ":" + subject);
|
||||
UniversalServerUtilities.logInfo(getName(), name + ":" + subject); //$NON-NLS-1$
|
||||
|
||||
String queryType = (String) subject.getElementProperty(DE.P_TYPE);
|
||||
boolean caseSensitive = !_isWindows;
|
||||
// TODO: test on WINDOWS!
|
||||
|
||||
if ("C_QUERY_VIEW_ALL".equals(name)) {
|
||||
if ("C_QUERY_VIEW_ALL".equals(name)) { //$NON-NLS-1$
|
||||
if (subject != null)
|
||||
{
|
||||
DataElement attributes = getCommandArgument(theElement, 1);
|
||||
if (attributes != null && attributes.getType().equals("attributes"))
|
||||
if (attributes != null && attributes.getType().equals("attributes")) //$NON-NLS-1$
|
||||
{
|
||||
return handleQueryAll(subject, attributes, status, queryType,
|
||||
caseSensitive);
|
||||
|
@ -136,12 +137,12 @@ public class UniversalFileSystemMiner extends Miner implements
|
|||
}
|
||||
else
|
||||
UniversalServerUtilities.logError(CLASSNAME,
|
||||
"C_QUERY_VIEW_ALL - subject is null", null);
|
||||
} else if ("C_QUERY_VIEW_FILES".equals(name)) {
|
||||
"C_QUERY_VIEW_ALL - subject is null", null); //$NON-NLS-1$
|
||||
} else if ("C_QUERY_VIEW_FILES".equals(name)) { //$NON-NLS-1$
|
||||
if (subject != null)
|
||||
{
|
||||
DataElement attributes = getCommandArgument(theElement, 1);
|
||||
if (attributes != null && attributes.getType().equals("attributes"))
|
||||
if (attributes != null && attributes.getType().equals("attributes")) //$NON-NLS-1$
|
||||
{
|
||||
return handleQueryFiles(subject, attributes, status, queryType,
|
||||
caseSensitive);
|
||||
|
@ -154,12 +155,12 @@ public class UniversalFileSystemMiner extends Miner implements
|
|||
}
|
||||
else
|
||||
UniversalServerUtilities.logError(CLASSNAME,
|
||||
"C_QUERY_VIEW_FILES - subject is null", null);
|
||||
} else if ("C_QUERY_VIEW_FOLDERS".equals(name)) {
|
||||
"C_QUERY_VIEW_FILES - subject is null", null); //$NON-NLS-1$
|
||||
} else if ("C_QUERY_VIEW_FOLDERS".equals(name)) { //$NON-NLS-1$
|
||||
if (subject != null)
|
||||
{
|
||||
DataElement attributes = getCommandArgument(theElement, 1);
|
||||
if (attributes != null && attributes.getType().equals("attributes"))
|
||||
if (attributes != null && attributes.getType().equals("attributes")) //$NON-NLS-1$
|
||||
{
|
||||
return handleQueryFolders(subject, attributes, status, queryType,
|
||||
caseSensitive);
|
||||
|
@ -172,134 +173,134 @@ public class UniversalFileSystemMiner extends Miner implements
|
|||
}
|
||||
else
|
||||
UniversalServerUtilities.logError(CLASSNAME,
|
||||
"C_QUERY_VIEW_FOLDERS - subject is null", null);
|
||||
} else if ("C_QUERY_ROOTS".equals(name)) {
|
||||
"C_QUERY_VIEW_FOLDERS - subject is null", null); //$NON-NLS-1$
|
||||
} else if ("C_QUERY_ROOTS".equals(name)) { //$NON-NLS-1$
|
||||
if (subject != null)
|
||||
return handleQueryRoots(subject, status);
|
||||
else
|
||||
UniversalServerUtilities.logError(CLASSNAME,
|
||||
"C_QUERY_ROOTS - subject is null", null);
|
||||
} else if ("C_SEARCH".equals(name)) {
|
||||
"C_QUERY_ROOTS - subject is null", null); //$NON-NLS-1$
|
||||
} else if ("C_SEARCH".equals(name)) { //$NON-NLS-1$
|
||||
if (subject != null)
|
||||
return handleSearch(theElement, status, queryType,
|
||||
caseSensitive);
|
||||
else
|
||||
UniversalServerUtilities.logError(CLASSNAME,
|
||||
"C_SEARCH - subject is null", null);
|
||||
} else if ("C_CANCEL".equals(name)) {
|
||||
"C_SEARCH - subject is null", null); //$NON-NLS-1$
|
||||
} else if ("C_CANCEL".equals(name)) { //$NON-NLS-1$
|
||||
if (subject != null) {
|
||||
// String commandToCancel = subject.getName();
|
||||
subject.getName();
|
||||
return handleCancel(subject, status);
|
||||
} else
|
||||
UniversalServerUtilities.logError(CLASSNAME,
|
||||
"C_CANCEL - subject is null", null);
|
||||
} else if ("C_RENAME".equals(name)) {
|
||||
"C_CANCEL - subject is null", null); //$NON-NLS-1$
|
||||
} else if ("C_RENAME".equals(name)) { //$NON-NLS-1$
|
||||
if (subject != null)
|
||||
return handleRename(subject, status);
|
||||
else
|
||||
UniversalServerUtilities.logError(CLASSNAME,
|
||||
"C_RENAME - subject is null", null);
|
||||
} else if ("C_DELETE".equals(name)) {
|
||||
"C_RENAME - subject is null", null); //$NON-NLS-1$
|
||||
} else if ("C_DELETE".equals(name)) { //$NON-NLS-1$
|
||||
if (subject != null)
|
||||
return handleDelete(subject, status, true);
|
||||
else
|
||||
UniversalServerUtilities.logError(CLASSNAME,
|
||||
"C_DELETE - subject is null", null);
|
||||
} else if ("C_DELETE_BATCH".equals(name)) {
|
||||
"C_DELETE - subject is null", null); //$NON-NLS-1$
|
||||
} else if ("C_DELETE_BATCH".equals(name)) { //$NON-NLS-1$
|
||||
if (subject != null)
|
||||
return handleDeleteBatch(theElement, status);
|
||||
else
|
||||
UniversalServerUtilities.logError(CLASSNAME,
|
||||
"C_DELETE_BATCH - subject is null", null);
|
||||
} else if ("C_COPY".equals(name)) {
|
||||
"C_DELETE_BATCH - subject is null", null); //$NON-NLS-1$
|
||||
} else if ("C_COPY".equals(name)) { //$NON-NLS-1$
|
||||
if (subject != null)
|
||||
return handleCopy(subject, getCommandArgument(theElement, 1),
|
||||
getCommandArgument(theElement, 2), status);
|
||||
else
|
||||
UniversalServerUtilities.logError(CLASSNAME,
|
||||
"C_COPY - subject is null", null);
|
||||
} else if ("C_COPY_BATCH".equals(name)) {
|
||||
"C_COPY - subject is null", null); //$NON-NLS-1$
|
||||
} else if ("C_COPY_BATCH".equals(name)) { //$NON-NLS-1$
|
||||
if (subject != null)
|
||||
return handleCopyBatch(subject, theElement, status);
|
||||
else
|
||||
UniversalServerUtilities.logError(CLASSNAME,
|
||||
"C_COPY_BATCH - subject is null", null);
|
||||
} else if ("C_CREATE_FILE".equals(name)) {
|
||||
"C_COPY_BATCH - subject is null", null); //$NON-NLS-1$
|
||||
} else if ("C_CREATE_FILE".equals(name)) { //$NON-NLS-1$
|
||||
if (subject != null)
|
||||
return handleCreateFile(subject, status, queryType);
|
||||
else
|
||||
UniversalServerUtilities.logError(CLASSNAME,
|
||||
"C_CREATE_FILE - subject is null", null);
|
||||
} else if ("C_CREATE_FOLDER".equals(name)) {
|
||||
"C_CREATE_FILE - subject is null", null); //$NON-NLS-1$
|
||||
} else if ("C_CREATE_FOLDER".equals(name)) { //$NON-NLS-1$
|
||||
if (subject != null)
|
||||
return handleCreateFolder(subject, status, queryType);
|
||||
else
|
||||
UniversalServerUtilities.logError(CLASSNAME,
|
||||
"C_CREATE_FOLDERS - subject is null", null);
|
||||
} else if ("C_SET_READONLY".equals(name)) {
|
||||
"C_CREATE_FOLDERS - subject is null", null); //$NON-NLS-1$
|
||||
} else if ("C_SET_READONLY".equals(name)) { //$NON-NLS-1$
|
||||
if (subject != null)
|
||||
return handleSetReadOnly(subject, status);
|
||||
else
|
||||
UniversalServerUtilities.logError(CLASSNAME,
|
||||
"C_SET_READONLY - subject is null", null);
|
||||
} else if ("C_SET_LASTMODIFIED".equals(name)) {
|
||||
"C_SET_READONLY - subject is null", null); //$NON-NLS-1$
|
||||
} else if ("C_SET_LASTMODIFIED".equals(name)) { //$NON-NLS-1$
|
||||
if (subject != null)
|
||||
return handleSetLastModified(subject, status);
|
||||
else
|
||||
UniversalServerUtilities.logError(CLASSNAME,
|
||||
"C_SET_LASTMODIFIED - subject is null", null);
|
||||
} else if ("C_QUERY_BASIC_PROPERTY".equals(name)) {
|
||||
"C_SET_LASTMODIFIED - subject is null", null); //$NON-NLS-1$
|
||||
} else if ("C_QUERY_BASIC_PROPERTY".equals(name)) { //$NON-NLS-1$
|
||||
if (subject != null)
|
||||
return handleQueryBasicProperty(subject, status);
|
||||
else
|
||||
UniversalServerUtilities.logError(CLASSNAME,
|
||||
"C_QUERY_BASIC_PROPERTY - subject is null", null);
|
||||
} else if ("C_QUERY_CAN_WRITE_PROPERTY".equals(name)) {
|
||||
"C_QUERY_BASIC_PROPERTY - subject is null", null); //$NON-NLS-1$
|
||||
} else if ("C_QUERY_CAN_WRITE_PROPERTY".equals(name)) { //$NON-NLS-1$
|
||||
if (subject != null)
|
||||
return handleQuerycanWriteProperty(subject, status);
|
||||
else
|
||||
UniversalServerUtilities.logError(CLASSNAME,
|
||||
"C_QUERY_CAN_WRITE_PROPERTY - subject is null", null);
|
||||
} else if ("C_QUERY_ADVANCE_PROPERTY".equals(name)) {
|
||||
"C_QUERY_CAN_WRITE_PROPERTY - subject is null", null); //$NON-NLS-1$
|
||||
} else if ("C_QUERY_ADVANCE_PROPERTY".equals(name)) { //$NON-NLS-1$
|
||||
if (subject != null)
|
||||
return handleQueryAdvanceProperty(subject, status);
|
||||
else
|
||||
UniversalServerUtilities.logError(CLASSNAME,
|
||||
"C_QUERY_ADVANCE_PROPERTY - subject is null", null);
|
||||
} else if ("C_QUERY_FILE_CLASSIFICATIONS".equals(name)) {
|
||||
"C_QUERY_ADVANCE_PROPERTY - subject is null", null); //$NON-NLS-1$
|
||||
} else if ("C_QUERY_FILE_CLASSIFICATIONS".equals(name)) { //$NON-NLS-1$
|
||||
if (subject != null)
|
||||
return handleQueryFileClassification(subject, status);
|
||||
else
|
||||
UniversalServerUtilities.logError(CLASSNAME,
|
||||
"C_QUERY_FILE_CLASSIFICATION - subject is null", null);
|
||||
} else if ("C_QUERY_FILE_CLASSIFICATION".equals(name)) {
|
||||
"C_QUERY_FILE_CLASSIFICATION - subject is null", null); //$NON-NLS-1$
|
||||
} else if ("C_QUERY_FILE_CLASSIFICATION".equals(name)) { //$NON-NLS-1$
|
||||
if (subject != null)
|
||||
return handleQueryFileClassification(subject, status);
|
||||
else
|
||||
UniversalServerUtilities
|
||||
.logError(
|
||||
CLASSNAME,
|
||||
"C_QUERY_FOLDER_CLASSIFICATION - subject is null",
|
||||
"C_QUERY_FOLDER_CLASSIFICATION - subject is null", //$NON-NLS-1$
|
||||
null);
|
||||
} else if ("C_QUERY_EXISTS".equals(name)) {
|
||||
} else if ("C_QUERY_EXISTS".equals(name)) { //$NON-NLS-1$
|
||||
if (subject != null)
|
||||
return handleQueryExists(subject, status, queryType);
|
||||
else
|
||||
UniversalServerUtilities.logError(CLASSNAME,
|
||||
"C_QUERY_EXISTS - subject is null", null);
|
||||
} else if ("C_QUERY_GET_REMOTE_OBJECT".equals(name)) {
|
||||
"C_QUERY_EXISTS - subject is null", null); //$NON-NLS-1$
|
||||
} else if ("C_QUERY_GET_REMOTE_OBJECT".equals(name)) { //$NON-NLS-1$
|
||||
if (subject != null)
|
||||
return handleQueryGetRemoteObject(subject, status, queryType);
|
||||
else
|
||||
UniversalServerUtilities.logError(CLASSNAME,
|
||||
"C_QUERY_GET_REMOTE_OBJECT- subject is null", null);
|
||||
} else if ("C_GET_OSTYPE".equals(name)) {
|
||||
"C_QUERY_GET_REMOTE_OBJECT- subject is null", null); //$NON-NLS-1$
|
||||
} else if ("C_GET_OSTYPE".equals(name)) { //$NON-NLS-1$
|
||||
if (subject != null)
|
||||
return handleGetOSType(subject, status);
|
||||
else
|
||||
UniversalServerUtilities.logError(CLASSNAME,
|
||||
"C_GET_OSTYPE - subject is null", null);
|
||||
"C_GET_OSTYPE - subject is null", null); //$NON-NLS-1$
|
||||
} else if (C_DOWNLOAD_FILE.equals(name)) {
|
||||
if (subject != null)
|
||||
{
|
||||
|
@ -307,35 +308,35 @@ public class UniversalFileSystemMiner extends Miner implements
|
|||
}
|
||||
else
|
||||
UniversalServerUtilities.logError(CLASSNAME, C_DOWNLOAD_FILE
|
||||
+ " - subject is null", null);
|
||||
+ " - subject is null", null); //$NON-NLS-1$
|
||||
} else if (C_SYSTEM_ENCODING.equals(name)) {
|
||||
if (subject != null)
|
||||
return handleQueryEncoding(subject, status);
|
||||
else
|
||||
UniversalServerUtilities.logError(CLASSNAME, C_SYSTEM_ENCODING
|
||||
+ " - subject is null", null);
|
||||
+ " - subject is null", null); //$NON-NLS-1$
|
||||
} else if (C_QUERY_UNUSED_PORT.equals(name)) {
|
||||
if (subject != null)
|
||||
return handleQueryUnusedPort(subject, status);
|
||||
else
|
||||
UniversalServerUtilities.logError(CLASSNAME, C_QUERY_UNUSED_PORT
|
||||
+ " - subject is null", null);
|
||||
} else if ("C_QUERY_CLASSNAME".equals(name)) {
|
||||
+ " - subject is null", null); //$NON-NLS-1$
|
||||
} else if ("C_QUERY_CLASSNAME".equals(name)) { //$NON-NLS-1$
|
||||
if (subject != null)
|
||||
return handleQueryClassName(subject, status);
|
||||
else
|
||||
UniversalServerUtilities.logError(CLASSNAME,
|
||||
"C_QUERY_CLASSNAME- subject is null", null);
|
||||
"C_QUERY_CLASSNAME- subject is null", null); //$NON-NLS-1$
|
||||
} else if (C_QUERY_QUALIFIED_CLASSNAME.equals(name)) {
|
||||
if (subject != null)
|
||||
return handleQueryQualifiedClassName(subject, status);
|
||||
else
|
||||
UniversalServerUtilities.logError(CLASSNAME,
|
||||
C_QUERY_QUALIFIED_CLASSNAME + " - subject is null",
|
||||
C_QUERY_QUALIFIED_CLASSNAME + " - subject is null", //$NON-NLS-1$
|
||||
null);
|
||||
} else {
|
||||
UniversalServerUtilities.logError(CLASSNAME,
|
||||
"Invalid query to handlecommand", null);
|
||||
"Invalid query to handlecommand", null); //$NON-NLS-1$
|
||||
}
|
||||
return statusDone(status);
|
||||
}
|
||||
|
@ -387,7 +388,7 @@ public class UniversalFileSystemMiner extends Miner implements
|
|||
srcFiles[i] = child.getExtractedFile();
|
||||
}
|
||||
}
|
||||
String virtualContainer = "";
|
||||
String virtualContainer = ""; //$NON-NLS-1$
|
||||
|
||||
if (targetType.equals(UNIVERSAL_VIRTUAL_FOLDER_DESCRIPTOR))
|
||||
{
|
||||
|
@ -407,11 +408,8 @@ public class UniversalFileSystemMiner extends Miner implements
|
|||
else // target is a regular folder
|
||||
{
|
||||
boolean folderCopy = false;
|
||||
String source = "";
|
||||
String tgt = tgtFolder.getAbsolutePath();
|
||||
StringBuffer tgtBuf = new StringBuffer(tgt);
|
||||
handleSpecialChars(tgtBuf);
|
||||
tgt = "\"" + tgtBuf.toString() + "\"";
|
||||
String source = ""; //$NON-NLS-1$
|
||||
String tgt = enQuote(tgtFolder.getAbsolutePath());
|
||||
|
||||
int numOfNonVirtualSources = 0;
|
||||
for (int i = 0; i < numOfSources; i++)
|
||||
|
@ -452,9 +450,7 @@ public class UniversalFileSystemMiner extends Miner implements
|
|||
String src = srcFile.getAbsolutePath();
|
||||
|
||||
// handle special characters in source and target strings
|
||||
StringBuffer srcBuf = new StringBuffer(src);
|
||||
handleSpecialChars(srcBuf);
|
||||
src = "\"" + srcBuf.toString() + "\"";
|
||||
src = enQuote(src);
|
||||
|
||||
if (numOfNonVirtualSources == 0)
|
||||
{
|
||||
|
@ -462,7 +458,7 @@ public class UniversalFileSystemMiner extends Miner implements
|
|||
}
|
||||
else
|
||||
{
|
||||
source = source + " " + src;
|
||||
source = source + " " + src; //$NON-NLS-1$
|
||||
}
|
||||
numOfNonVirtualSources++;
|
||||
}
|
||||
|
@ -482,19 +478,20 @@ public class UniversalFileSystemMiner extends Miner implements
|
|||
if (_isWindows) {
|
||||
|
||||
if (folderCopy) {
|
||||
command = "xcopy " + source + " " + tgt
|
||||
+ " /S /E /K /O /Q /H /I";
|
||||
command = "xcopy " + source //$NON-NLS-1$
|
||||
+ " " + tgt //$NON-NLS-1$
|
||||
+ " /S /E /K /O /Q /H /I"; //$NON-NLS-1$
|
||||
}
|
||||
else {
|
||||
command = "copy " + source + " " + tgt;
|
||||
command = "copy " + source + " " + tgt; //$NON-NLS-1$ //$NON-NLS-2$
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (folderCopy) {
|
||||
command = "cp -r " + source + " " + tgt;
|
||||
command = "cp -r " + source + " " + tgt; //$NON-NLS-1$ //$NON-NLS-2$
|
||||
}
|
||||
else {
|
||||
command = "cp " + source + " " + tgt;
|
||||
command = "cp " + source + " " + tgt; //$NON-NLS-1$ //$NON-NLS-2$
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -506,15 +503,15 @@ public class UniversalFileSystemMiner extends Miner implements
|
|||
|
||||
if (_isWindows)
|
||||
{
|
||||
String theShell = "cmd /C ";
|
||||
String theShell = "cmd /C "; //$NON-NLS-1$
|
||||
p = runtime.exec(theShell + command);
|
||||
}
|
||||
else
|
||||
{
|
||||
String theShell = "sh";
|
||||
String theShell = "sh"; //$NON-NLS-1$
|
||||
String args[] = new String[3];
|
||||
args[0] = theShell;
|
||||
args[1] = "-c";
|
||||
args[1] = "-c"; //$NON-NLS-1$
|
||||
args[2] = command;
|
||||
|
||||
p = runtime.exec(args);
|
||||
|
@ -566,7 +563,7 @@ public class UniversalFileSystemMiner extends Miner implements
|
|||
// omit new line if there is one at the end because datastore does not
|
||||
// handle new line in the attributes
|
||||
// TODO: what to do if newline occurs in the middle of the string?
|
||||
String newLine = System.getProperty("line.separator");
|
||||
String newLine = System.getProperty("line.separator"); //$NON-NLS-1$
|
||||
|
||||
if (newLine != null && err.endsWith(newLine)) {
|
||||
err = err.substring(0, err.length() - newLine.length());
|
||||
|
@ -598,7 +595,7 @@ public class UniversalFileSystemMiner extends Miner implements
|
|||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
UniversalServerUtilities.logError(CLASSNAME, "Exception is handleCopy", e);
|
||||
UniversalServerUtilities.logError(CLASSNAME, "Exception is handleCopy", e); //$NON-NLS-1$
|
||||
status.setAttribute(DE.A_SOURCE, FAILED);
|
||||
status.setAttribute(DE.A_VALUE, e.getMessage());
|
||||
}
|
||||
|
@ -616,14 +613,14 @@ public class UniversalFileSystemMiner extends Miner implements
|
|||
if (!(list[i].delete())) {
|
||||
status.setAttribute(DE.A_SOURCE, FAILED);
|
||||
UniversalServerUtilities.logWarning(CLASSNAME,
|
||||
"Deletion of dir failed");
|
||||
"Deletion of dir failed"); //$NON-NLS-1$
|
||||
}
|
||||
} else {
|
||||
deleteDir(list[i], status);
|
||||
if (!(list[i].delete())) {
|
||||
status.setAttribute(DE.A_SOURCE, FAILED);
|
||||
UniversalServerUtilities.logWarning(CLASSNAME,
|
||||
"Deletion of dir failed");
|
||||
"Deletion of dir failed"); //$NON-NLS-1$
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -631,7 +628,7 @@ public class UniversalFileSystemMiner extends Miner implements
|
|||
status.setAttribute(DE.A_SOURCE, FAILED_WITH_EXCEPTION);
|
||||
status.setAttribute(DE.A_VALUE, e.getLocalizedMessage());
|
||||
UniversalServerUtilities.logError(CLASSNAME,
|
||||
"Deletion of dir failed", e);
|
||||
"Deletion of dir failed", e); //$NON-NLS-1$
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -655,7 +652,7 @@ public class UniversalFileSystemMiner extends Miner implements
|
|||
}
|
||||
// otherwise log error, and return as done
|
||||
else {
|
||||
UniversalServerUtilities.logError(CLASSNAME, "Invalid query type to handleSearch", null);
|
||||
UniversalServerUtilities.logError(CLASSNAME, "Invalid query type to handleSearch", null); //$NON-NLS-1$
|
||||
return statusDone(status);
|
||||
}
|
||||
|
||||
|
@ -748,7 +745,7 @@ public class UniversalFileSystemMiner extends Miner implements
|
|||
else
|
||||
{
|
||||
UniversalServerUtilities.logError(CLASSNAME,
|
||||
"Invalid query type to handleQueryAll", null);
|
||||
"Invalid query type to handleQueryAll", null); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
if (fileobj != null)
|
||||
|
@ -774,9 +771,9 @@ public class UniversalFileSystemMiner extends Miner implements
|
|||
boolean filterFolders = (inclusion == INCLUDE_ALL) || (inclusion == INCLUDE_FOLDERS_ONLY);
|
||||
|
||||
UniversalFileSystemFilter filefilter = new UniversalFileSystemFilter(filter,filterFiles, filterFolders, caseSensitive);
|
||||
String theOS = System.getProperty("os.name");
|
||||
String theOS = System.getProperty("os.name"); //$NON-NLS-1$
|
||||
File[] list = null;
|
||||
if (theOS.equals("z/OS"))
|
||||
if (theOS.equals("z/OS")) //$NON-NLS-1$
|
||||
{
|
||||
// filters not supported with z/OS jvm
|
||||
File[] tempList = fileobj.listFiles();
|
||||
|
@ -801,7 +798,7 @@ public class UniversalFileSystemMiner extends Miner implements
|
|||
{
|
||||
createDataElement(_dataStore, subject, list, queryType, filter,inclusion);
|
||||
String folderProperties = setProperties(fileobj);
|
||||
if (subject.getSource() == null || subject.getSource().equals(""))
|
||||
if (subject.getSource() == null || subject.getSource().equals("")) //$NON-NLS-1$
|
||||
subject.setAttribute(DE.A_SOURCE, folderProperties);
|
||||
|
||||
FileClassifier clsfy = getFileClassifier(subject);
|
||||
|
@ -969,7 +966,7 @@ private DataElement createDataElementFromLSString(DataElement subject,
|
|||
+ File.separatorChar + subject.getName());
|
||||
else
|
||||
UniversalServerUtilities.logError(CLASSNAME,
|
||||
"Invalid query type to handleQueryFiles", null);
|
||||
"Invalid query type to handleQueryFiles", null); //$NON-NLS-1$
|
||||
|
||||
|
||||
internalQueryAll(subject, fileobj, queryType, filter, caseSensitive, INCLUDE_FILES_ONLY);
|
||||
|
@ -1010,7 +1007,7 @@ private DataElement createDataElementFromLSString(DataElement subject,
|
|||
+ File.separatorChar + subject.getName());
|
||||
else
|
||||
UniversalServerUtilities.logError(CLASSNAME,
|
||||
"Invalid query type to handleQueryFolders", null);
|
||||
"Invalid query type to handleQueryFolders", null); //$NON-NLS-1$
|
||||
|
||||
internalQueryAll(subject, fileobj, queryType, filter, caseSensitive, INCLUDE_FOLDERS_ONLY);
|
||||
|
||||
|
@ -1026,11 +1023,11 @@ private DataElement createDataElementFromLSString(DataElement subject,
|
|||
new File(subject.getName());
|
||||
DataElement deObj = null;
|
||||
|
||||
if (System.getProperty("os.name").toLowerCase().startsWith("windows")) {
|
||||
String[] ALLDRIVES = { "c:\\", "d:\\", "e:\\", "f:\\", "g:\\",
|
||||
"h:\\", "i:\\", "j:\\", "k:\\", "l:\\", "m:\\", "n:\\",
|
||||
"o:\\", "p:\\", "q:\\", "r:\\", "s:\\", "t:\\", "u:\\",
|
||||
"v:\\", "w:\\", "x:\\", "y:\\", "z:\\" };
|
||||
if (System.getProperty("os.name").toLowerCase().startsWith("windows")) { //$NON-NLS-1$ //$NON-NLS-2$
|
||||
String[] ALLDRIVES = { "c:\\", "d:\\", "e:\\", "f:\\", "g:\\", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
|
||||
"h:\\", "i:\\", "j:\\", "k:\\", "l:\\", "m:\\", "n:\\", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$
|
||||
"o:\\", "p:\\", "q:\\", "r:\\", "s:\\", "t:\\", "u:\\", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$
|
||||
"v:\\", "w:\\", "x:\\", "y:\\", "z:\\" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
|
||||
for (int idx = 0; idx < ALLDRIVES.length; idx++) {
|
||||
File drive = new File(ALLDRIVES[idx]);
|
||||
if (drive.exists()) {
|
||||
|
@ -1039,7 +1036,7 @@ private DataElement createDataElementFromLSString(DataElement subject,
|
|||
deObj = _dataStore.createObject(subject,
|
||||
UNIVERSAL_FOLDER_DESCRIPTOR, path);
|
||||
deObj.setAttribute(DE.A_SOURCE, setProperties(drive));
|
||||
deObj.setAttribute(DE.A_NAME, "");
|
||||
deObj.setAttribute(DE.A_NAME, ""); //$NON-NLS-1$
|
||||
deObj.setAttribute(DE.A_VALUE, path);
|
||||
} catch (IOException e) {
|
||||
return statusDone(status);
|
||||
|
@ -1053,7 +1050,7 @@ private DataElement createDataElementFromLSString(DataElement subject,
|
|||
deObj = _dataStore.createObject(subject,
|
||||
UNIVERSAL_FOLDER_DESCRIPTOR, list[i].getAbsolutePath());
|
||||
deObj.setAttribute(DE.A_SOURCE, setProperties(list[i]));
|
||||
deObj.setAttribute(DE.A_NAME, "");
|
||||
deObj.setAttribute(DE.A_NAME, ""); //$NON-NLS-1$
|
||||
deObj.setAttribute(DE.A_VALUE, list[i].getAbsolutePath());
|
||||
}
|
||||
}
|
||||
|
@ -1075,21 +1072,21 @@ private DataElement createDataElementFromLSString(DataElement subject,
|
|||
+ File.separatorChar + subject.getName());
|
||||
DataElement deObj = null;
|
||||
if (!deleteObj.exists()) {
|
||||
status.setAttribute(DE.A_SOURCE, FAILED_WITH_DOES_NOT_EXIST + "|" + deleteObj.getAbsolutePath());
|
||||
status.setAttribute(DE.A_SOURCE, FAILED_WITH_DOES_NOT_EXIST + "|" + deleteObj.getAbsolutePath()); //$NON-NLS-1$
|
||||
UniversalServerUtilities.logError(CLASSNAME,
|
||||
"The object to delete does not exist", null);
|
||||
"The object to delete does not exist", null); //$NON-NLS-1$
|
||||
} else {
|
||||
try {
|
||||
if (deleteObj.isFile()) {
|
||||
if (deleteObj.delete() == false) {
|
||||
status.setAttribute(DE.A_SOURCE, FAILED + "|" + deleteObj.getAbsolutePath());
|
||||
status.setAttribute(DE.A_SOURCE, FAILED + "|" + deleteObj.getAbsolutePath()); //$NON-NLS-1$
|
||||
} else {
|
||||
// delete was successful and delete the object from the
|
||||
// datastore
|
||||
deObj = _dataStore.find(subject, DE.A_NAME, subject
|
||||
.getName(), 1);
|
||||
_dataStore.deleteObject(subject, deObj);
|
||||
status.setAttribute(DE.A_SOURCE, SUCCESS + "|" + deleteObj.getAbsolutePath());
|
||||
status.setAttribute(DE.A_SOURCE, SUCCESS + "|" + deleteObj.getAbsolutePath()); //$NON-NLS-1$
|
||||
}
|
||||
_dataStore.refresh(subject);
|
||||
} else if (deleteObj.isDirectory()) { // it is directory and
|
||||
|
@ -1098,9 +1095,9 @@ private DataElement createDataElementFromLSString(DataElement subject,
|
|||
// children
|
||||
deleteDir(deleteObj, status);
|
||||
if (deleteObj.delete() == false) {
|
||||
status.setAttribute(DE.A_SOURCE, FAILED + "|" + deleteObj.getAbsolutePath());
|
||||
status.setAttribute(DE.A_SOURCE, FAILED + "|" + deleteObj.getAbsolutePath()); //$NON-NLS-1$
|
||||
UniversalServerUtilities.logError(CLASSNAME,
|
||||
"Deletion of dir fialed", null);
|
||||
"Deletion of dir fialed", null); //$NON-NLS-1$
|
||||
} else {
|
||||
_dataStore.deleteObjects(subject);
|
||||
DataElement parent = subject.getParent();
|
||||
|
@ -1115,7 +1112,7 @@ private DataElement createDataElementFromLSString(DataElement subject,
|
|||
null);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
status.setAttribute(DE.A_SOURCE, FAILED_WITH_EXCEPTION + "|" + deleteObj.getAbsolutePath());
|
||||
status.setAttribute(DE.A_SOURCE, FAILED_WITH_EXCEPTION + "|" + deleteObj.getAbsolutePath()); //$NON-NLS-1$
|
||||
status.setAttribute(DE.A_VALUE, e.getLocalizedMessage());
|
||||
UniversalServerUtilities.logError(CLASSNAME,
|
||||
"Delete of the object failed", e);
|
||||
|
@ -1127,7 +1124,7 @@ private DataElement createDataElementFromLSString(DataElement subject,
|
|||
|
||||
private DataElement handleDeleteBatch(DataElement theElement, DataElement status)
|
||||
{
|
||||
DataElement substatus = _dataStore.createObject(null, "status", "substatus");
|
||||
DataElement substatus = _dataStore.createObject(null, "status", "substatus"); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
int numOfSources = theElement.getNestedSize() - 2;
|
||||
for (int i = 0; i < numOfSources; i++)
|
||||
{
|
||||
|
@ -1482,10 +1479,10 @@ private DataElement createDataElementFromLSString(DataElement subject,
|
|||
VirtualChild child = _archiveHandlerManager
|
||||
.getVirtualObject(subject.getName());
|
||||
if (child.exists()) {
|
||||
status.setAttribute(DE.A_SOURCE, "true");
|
||||
status.setAttribute(DE.A_SOURCE, "true"); //$NON-NLS-1$
|
||||
return statusDone(status);
|
||||
} else {
|
||||
status.setAttribute(DE.A_SOURCE, "false");
|
||||
status.setAttribute(DE.A_SOURCE, "false"); //$NON-NLS-1$
|
||||
return statusDone(status);
|
||||
}
|
||||
} else {
|
||||
|
@ -1504,21 +1501,21 @@ private DataElement createDataElementFromLSString(DataElement subject,
|
|||
.getRegisteredHandler(new File(vpath
|
||||
.getContainingArchiveString()));
|
||||
if (handler == null) {
|
||||
status.setAttribute(DE.A_SOURCE, "false");
|
||||
status.setAttribute(DE.A_SOURCE, "false"); //$NON-NLS-1$
|
||||
return statusDone(status);
|
||||
}
|
||||
VirtualChild child = handler.getVirtualFile(vpath.getVirtualPart());
|
||||
if (child.exists()) {
|
||||
status.setAttribute(DE.A_SOURCE, "true");
|
||||
status.setAttribute(DE.A_SOURCE, "true"); //$NON-NLS-1$
|
||||
return statusDone(status);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (fileobj.exists())
|
||||
status.setAttribute(DE.A_SOURCE, "true");
|
||||
status.setAttribute(DE.A_SOURCE, "true"); //$NON-NLS-1$
|
||||
else
|
||||
status.setAttribute(DE.A_SOURCE, "false");
|
||||
status.setAttribute(DE.A_SOURCE, "false"); //$NON-NLS-1$
|
||||
return statusDone(status);
|
||||
}
|
||||
|
||||
|
@ -3099,55 +3096,28 @@ private DataElement createDataElementFromLSString(DataElement subject,
|
|||
tgt = tgtFolder.getAbsolutePath();
|
||||
}
|
||||
|
||||
// handle special characters in source and target strings
|
||||
StringBuffer srcBuf = new StringBuffer(src);
|
||||
StringBuffer tgtBuf = new StringBuffer(tgt);
|
||||
handleSpecialChars(srcBuf);
|
||||
handleSpecialChars(tgtBuf);
|
||||
|
||||
src = "\"" + srcBuf.toString() + "\"";
|
||||
tgt = "\"" + tgtBuf.toString() + "\"";
|
||||
|
||||
doCopyCommand(src, tgt, folderCopy, status);
|
||||
doCopyCommand(enQuote(src), enQuote(tgt), folderCopy, status);
|
||||
}
|
||||
|
||||
return statusDone(status);
|
||||
}
|
||||
|
||||
protected void handleSpecialChars(StringBuffer buf)
|
||||
{
|
||||
for (int i = 0; i < buf.length(); i++)
|
||||
{
|
||||
char c = buf.charAt(i);
|
||||
|
||||
boolean isSpecialChar = isSpecialChar(c);
|
||||
|
||||
if (isSpecialChar)
|
||||
{
|
||||
buf.insert(i, "\\");
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the given character is a special character in the shell. A special character is
|
||||
* '$', '`', '"' and '\'.
|
||||
* @param c the character to check.
|
||||
* @return <code>true</code> if the character is a special character, <code>false</code> otherwise.
|
||||
* Quote a file name such that it is valid in a shell
|
||||
* @param s file name to quote
|
||||
* @return quoted file name
|
||||
*/
|
||||
protected boolean isSpecialChar(char c) {
|
||||
|
||||
if ((c == '$') || (c == '`') || (c == '"') || (c == '\\')) {
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
protected String enQuote(String s)
|
||||
{
|
||||
if(_isWindows) {
|
||||
return '"' + s + '"';
|
||||
} else {
|
||||
return PathUtility.enQuoteUnix(s);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public String getVersion()
|
||||
{
|
||||
return "7.0.0";
|
||||
return "7.0.0"; //$NON-NLS-1$
|
||||
}
|
||||
}
|
|
@ -24,7 +24,6 @@ import java.text.MessageFormat;
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Vector;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.core.runtime.NullProgressMonitor;
|
||||
|
@ -43,6 +42,7 @@ import org.eclipse.rse.services.Mutex;
|
|||
import org.eclipse.rse.services.clientserver.FileTypeMatcher;
|
||||
import org.eclipse.rse.services.clientserver.IMatcher;
|
||||
import org.eclipse.rse.services.clientserver.NamePatternMatcher;
|
||||
import org.eclipse.rse.services.clientserver.PathUtility;
|
||||
import org.eclipse.rse.services.clientserver.messages.SystemMessageException;
|
||||
import org.eclipse.rse.services.files.AbstractFileService;
|
||||
import org.eclipse.rse.services.files.IFileService;
|
||||
|
@ -583,7 +583,7 @@ public class SftpFileService extends AbstractFileService implements IFileService
|
|||
if(e.id==ChannelSftp.SSH_FX_FAILURE) {
|
||||
//Bug 153649: Recursive directory delete
|
||||
//throw new RemoteFolderNotEmptyException();
|
||||
String fullPathQuoted = enQuote(fullPath);
|
||||
String fullPathQuoted = PathUtility.enQuoteUnix(fullPath);
|
||||
int rv = runCommand(monitor, "rm -rf "+fullPathQuoted); //$NON-NLS-1$
|
||||
ok = (rv==0);
|
||||
} else {
|
||||
|
@ -694,55 +694,6 @@ public class SftpFileService extends AbstractFileService implements IFileService
|
|||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Quotes a string such that it can be used in a remote UNIX shell.
|
||||
* On Windows, special characters likes quotes and dollar sign. and
|
||||
* - most importantly - the backslash will not be quoted correctly.
|
||||
*
|
||||
* Newline is only quoted correctly in tcsh. But since this is mainly
|
||||
* intended for file names, it should work OK in almost every case.
|
||||
*
|
||||
* @param s String to be quoted
|
||||
* @return quoted string, or original if no quoting was necessary.
|
||||
*/
|
||||
public static String enQuote(String s) {
|
||||
if(fValidShellPattern.matcher(s).matches()) {
|
||||
return s;
|
||||
} else {
|
||||
StringBuffer buf = new StringBuffer(s.length()+16);
|
||||
buf.append('"');
|
||||
for(int i=0; i<s.length(); i++) {
|
||||
char c=s.charAt(i);
|
||||
switch(c) {
|
||||
case '$':
|
||||
//Need to treat specially to work in both bash and tcsh:
|
||||
//close the quote, insert quoted $, reopen the quote
|
||||
buf.append('"');
|
||||
buf.append('\\');
|
||||
buf.append('$');
|
||||
buf.append('"');
|
||||
break;
|
||||
case '"':
|
||||
case '\\':
|
||||
case '\'':
|
||||
case '`':
|
||||
case '\n':
|
||||
//just quote it. The newline will work in tcsh only -
|
||||
//bash replaces it by the empty string. But newlines
|
||||
//in filenames are an academic issue, hopefully.
|
||||
buf.append('\\');
|
||||
buf.append(c);
|
||||
break;
|
||||
default:
|
||||
buf.append(c);
|
||||
}
|
||||
}
|
||||
buf.append('"');
|
||||
return buf.toString();
|
||||
}
|
||||
}
|
||||
private static Pattern fValidShellPattern = Pattern.compile("[a-zA-Z0-9._/]*"); //$NON-NLS-1$
|
||||
|
||||
public boolean move(IProgressMonitor monitor, String srcParent, String srcName, String tgtParent, String tgtName) throws SystemMessageException
|
||||
{
|
||||
// move is not supported by sftp directly. Use the ssh shell instead.
|
||||
|
@ -750,8 +701,8 @@ public class SftpFileService extends AbstractFileService implements IFileService
|
|||
// TODO Interpret some error messages like "command not found" (use ren instead of mv on windows)
|
||||
// TODO mimic by copy if the remote does not support copying between file systems?
|
||||
Activator.trace("SftpFileService.move "+srcName); //$NON-NLS-1$
|
||||
String fullPathOld = enQuote(srcParent + '/' + srcName);
|
||||
String fullPathNew = enQuote(tgtParent + '/' + tgtName);
|
||||
String fullPathOld = PathUtility.enQuoteUnix(srcParent + '/' + srcName);
|
||||
String fullPathNew = PathUtility.enQuoteUnix(tgtParent + '/' + tgtName);
|
||||
int rv = runCommand(monitor, "mv "+fullPathOld+' '+fullPathNew); //$NON-NLS-1$
|
||||
return (rv==0);
|
||||
}
|
||||
|
@ -761,8 +712,8 @@ public class SftpFileService extends AbstractFileService implements IFileService
|
|||
// TODO check if newer versions of sftp support copy directly
|
||||
// TODO Interpret some error messages like "command not found" (use (x)copy instead of cp on windows)
|
||||
Activator.trace("SftpFileService.copy "+srcName); //$NON-NLS-1$
|
||||
String fullPathOld = enQuote(srcParent + '/' + srcName);
|
||||
String fullPathNew = enQuote(tgtParent + '/' + tgtName);
|
||||
String fullPathOld = PathUtility.enQuoteUnix(srcParent + '/' + srcName);
|
||||
String fullPathNew = PathUtility.enQuoteUnix(tgtParent + '/' + tgtName);
|
||||
int rv = runCommand(monitor, "cp -Rp "+fullPathOld+' '+fullPathNew); //$NON-NLS-1$
|
||||
return (rv==0);
|
||||
}
|
||||
|
|
|
@ -29,6 +29,7 @@ import com.jcraft.jsch.Channel;
|
|||
import com.jcraft.jsch.ChannelShell;
|
||||
import com.jcraft.jsch.Session;
|
||||
|
||||
import org.eclipse.rse.services.clientserver.PathUtility;
|
||||
import org.eclipse.rse.services.shells.AbstractHostShell;
|
||||
import org.eclipse.rse.services.shells.IHostShell;
|
||||
import org.eclipse.rse.services.shells.IHostShellOutputReader;
|
||||
|
@ -93,7 +94,7 @@ public class SshHostShell extends AbstractHostShell implements IHostShell {
|
|||
&& !initialWorkingDirectory.equals(".") //$NON-NLS-1$
|
||||
&& !initialWorkingDirectory.equals("Command Shell") //$NON-NLS-1$ //FIXME workaround for bug 153047
|
||||
) {
|
||||
writeToShell("cd "+initialWorkingDirectory); //$NON-NLS-1$
|
||||
writeToShell("cd "+PathUtility.enQuoteUnix(initialWorkingDirectory)); //$NON-NLS-1$
|
||||
} else if (SHELL_INVOCATION.equals(commandToRun)) {
|
||||
writeToShell(getPromptCommand());
|
||||
} else if(commandToRun!=null && commandToRun.length()>0) {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/********************************************************************************
|
||||
* Copyright (c) 2006 IBM Corporation and Wind River Systems, Inc. All rights reserved.
|
||||
* Copyright (c) 2006 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
|
||||
|
@ -14,6 +14,7 @@
|
|||
* Martin Oberhuber (Wind River) - Fix 161844 - regex matching backslashes
|
||||
* Martin Oberhuber (Wind River) - Fix 162781 - normalize without replaceAll()
|
||||
* Martin Oberhuber (Wind River) - Use pre-compiled regex Pattern
|
||||
* Martin Oberhuber (Wind River) - Fix 154874 - handle files with space or $ in the name
|
||||
********************************************************************************/
|
||||
|
||||
package org.eclipse.rse.services.clientserver;
|
||||
|
@ -150,4 +151,56 @@ public class PathUtility
|
|||
return "/"; //$NON-NLS-1$
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Quotes a string such that it can be used in a remote UNIX shell.
|
||||
*
|
||||
* This has been tested with sh, bash and tcsh shells.
|
||||
* On Windows, special characters likes quotes and dollar sign. and
|
||||
* - most importantly - the backslash will not be quoted correctly.
|
||||
*
|
||||
* Newline is only quoted correctly in tcsh. But since this is mainly
|
||||
* intended for file names, it should work OK in almost every case.
|
||||
*
|
||||
* @param s String to be quoted
|
||||
* @return quoted string, or original if no quoting was necessary.
|
||||
*/
|
||||
public static String enQuoteUnix(String s) {
|
||||
if(fValidShellPattern.matcher(s).matches()) {
|
||||
return s;
|
||||
} else {
|
||||
StringBuffer buf = new StringBuffer(s.length()+16);
|
||||
buf.append('"');
|
||||
for(int i=0; i<s.length(); i++) {
|
||||
char c=s.charAt(i);
|
||||
switch(c) {
|
||||
case '$':
|
||||
//Need to treat specially to work in both bash and tcsh:
|
||||
//close the quote, insert quoted $, reopen the quote
|
||||
buf.append('"');
|
||||
buf.append('\\');
|
||||
buf.append('$');
|
||||
buf.append('"');
|
||||
break;
|
||||
case '"':
|
||||
case '\\':
|
||||
case '\'':
|
||||
case '`':
|
||||
case '\n':
|
||||
//just quote it. The newline will work in tcsh only -
|
||||
//bash replaces it by the empty string. But newlines
|
||||
//in filenames are an academic issue, hopefully.
|
||||
buf.append('\\');
|
||||
buf.append(c);
|
||||
break;
|
||||
default:
|
||||
buf.append(c);
|
||||
}
|
||||
}
|
||||
buf.append('"');
|
||||
return buf.toString();
|
||||
}
|
||||
}
|
||||
private static Pattern fValidShellPattern = Pattern.compile("[a-zA-Z0-9._/]*"); //$NON-NLS-1$
|
||||
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
/********************************************************************************
|
||||
* Copyright (c) 2006 IBM Corporation. All rights reserved.
|
||||
* Copyright (c) 2006 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
|
||||
|
@ -11,7 +11,7 @@
|
|||
* Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
|
||||
*
|
||||
* Contributors:
|
||||
* {Name} (company) - description of contribution.
|
||||
* Martin Oberhuber (Wind River) - Fix 154874 - handle files with space or $ in the name
|
||||
********************************************************************************/
|
||||
|
||||
package org.eclipse.rse.services.clientserver;
|
||||
|
@ -151,7 +151,7 @@ public class SystemFileClassifier {
|
|||
String args[] = new String[3];
|
||||
args[0] = "sh"; //$NON-NLS-1$
|
||||
args[1] = "-c"; //$NON-NLS-1$
|
||||
args[2] = "file \"" + absolutePath + "\""; //$NON-NLS-1$ //$NON-NLS-2$
|
||||
args[2] = "file " + PathUtility.enQuoteUnix(absolutePath); //$NON-NLS-1$
|
||||
|
||||
BufferedReader poutReader = null;
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/********************************************************************************
|
||||
* Copyright (c) 2002, 2006 IBM Corporation. All rights reserved.
|
||||
* Copyright (c) 2002, 2006 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
|
||||
|
@ -11,7 +11,7 @@
|
|||
* Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
|
||||
*
|
||||
* Contributors:
|
||||
* {Name} (company) - description of contribution.
|
||||
* Martin Oberhuber (Wind River) - Fix 154874 - handle files with space or $ in the name
|
||||
********************************************************************************/
|
||||
|
||||
package org.eclipse.rse.shells.ui;
|
||||
|
@ -25,6 +25,7 @@ import org.eclipse.rse.core.model.ISystemRegistry;
|
|||
import org.eclipse.rse.core.subsystems.ISubSystem;
|
||||
import org.eclipse.rse.internal.subsystems.shells.subsystems.RemoteCmdSubSystem;
|
||||
import org.eclipse.rse.internal.subsystems.shells.subsystems.RemoteCommandShell;
|
||||
import org.eclipse.rse.services.clientserver.PathUtility;
|
||||
import org.eclipse.rse.shells.ui.view.SystemCommandsUI;
|
||||
import org.eclipse.rse.shells.ui.view.SystemCommandsViewPart;
|
||||
import org.eclipse.rse.subsystems.files.core.model.RemoteFileUtility;
|
||||
|
@ -139,19 +140,14 @@ public class RemoteCommandHelpers
|
|||
IRemoteFile pwd = ((RemoteCommandShell)defaultShell).getWorkingDirectory();
|
||||
if (pwd == null || !pwd.getAbsolutePath().equals(path))
|
||||
{
|
||||
if (path.indexOf(' ') > 0)
|
||||
{
|
||||
path = "\"" + path + "\""; //$NON-NLS-1$ //$NON-NLS-2$
|
||||
}
|
||||
|
||||
String cdCmd = "cd " + path; //$NON-NLS-1$
|
||||
String cdCmd = "cd " + PathUtility.enQuoteUnix(path); //$NON-NLS-1$
|
||||
if (!fileSSF.isUnixStyle())
|
||||
{
|
||||
if (path.endsWith(":")) //$NON-NLS-1$
|
||||
{
|
||||
path += "\\"; //$NON-NLS-1$
|
||||
}
|
||||
cdCmd = "cd /d " + path; //$NON-NLS-1$
|
||||
cdCmd = "cd /d \"" + path + '\"'; //$NON-NLS-1$
|
||||
}
|
||||
|
||||
cmdSubSystem.sendCommandToShell(cdCmd, defaultShell);
|
||||
|
@ -162,7 +158,7 @@ public class RemoteCommandHelpers
|
|||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
SystemBasePlugin.logError("Run Remote Command failed", e);
|
||||
SystemBasePlugin.logError("Run Remote Command failed", e); //$NON-NLS-1$
|
||||
SystemMessageDialog.displayExceptionMessage(shell, e);
|
||||
ok = false;
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/********************************************************************************
|
||||
* Copyright (c) 2002, 2006 IBM Corporation. All rights reserved.
|
||||
* Copyright (c) 2002, 2006 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
|
||||
|
@ -11,7 +11,7 @@
|
|||
* Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
|
||||
*
|
||||
* Contributors:
|
||||
* {Name} (company) - description of contribution.
|
||||
* Martin Oberhuber (Wind River) - Fix 154874 - handle files with space or $ in the name
|
||||
********************************************************************************/
|
||||
|
||||
package org.eclipse.rse.shells.ui.actions;
|
||||
|
@ -25,6 +25,7 @@ import org.eclipse.jface.window.Window;
|
|||
import org.eclipse.rse.core.filters.ISystemFilterReference;
|
||||
import org.eclipse.rse.core.model.IHost;
|
||||
import org.eclipse.rse.core.subsystems.ISubSystem;
|
||||
import org.eclipse.rse.services.clientserver.PathUtility;
|
||||
import org.eclipse.rse.services.clientserver.messages.SystemMessage;
|
||||
import org.eclipse.rse.shells.ui.RemoteCommandHelpers;
|
||||
import org.eclipse.rse.shells.ui.ShellResources;
|
||||
|
@ -418,11 +419,11 @@ public class SystemCommandAction extends SystemBaseAction
|
|||
showInView(defaultShell);
|
||||
}
|
||||
|
||||
String cdCmd = "cd " + path; //$NON-NLS-1$
|
||||
String cdCmd = "cd " + PathUtility.enQuoteUnix(path); //$NON-NLS-1$
|
||||
if ((cmdSubSystem.getHost().getSystemType().equals("Local") && System.getProperty("os.name").toLowerCase().startsWith("win")) //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
|
||||
|| cmdSubSystem.getHost().getSystemType().equals("Windows")) //$NON-NLS-1$
|
||||
{
|
||||
cdCmd = "cd /d " + path; //$NON-NLS-1$
|
||||
cdCmd = "cd /d \"" + path + '\"'; //$NON-NLS-1$
|
||||
}
|
||||
cmdSubSystem.sendCommandToShell(cdCmd, defaultShell);
|
||||
cmdSubSystem.sendCommandToShell(cmd, defaultShell);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/********************************************************************************
|
||||
* Copyright (c) 2002, 2006 IBM Corporation. All rights reserved.
|
||||
* Copyright (c) 2002, 2006 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
|
||||
|
@ -11,7 +11,7 @@
|
|||
* Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
|
||||
*
|
||||
* Contributors:
|
||||
* {Name} (company) - description of contribution.
|
||||
* Martin Oberhuber (Wind River) - Fix 154874 - handle files with space or $ in the name
|
||||
********************************************************************************/
|
||||
|
||||
package org.eclipse.rse.shells.ui.view;
|
||||
|
@ -30,6 +30,7 @@ import org.eclipse.jface.viewers.TableLayout;
|
|||
import org.eclipse.rse.core.subsystems.ISubSystem;
|
||||
import org.eclipse.rse.internal.subsystems.shells.subsystems.RemoteOutput;
|
||||
import org.eclipse.rse.model.ISystemRegistryUI;
|
||||
import org.eclipse.rse.services.clientserver.PathUtility;
|
||||
import org.eclipse.rse.services.clientserver.messages.SystemMessage;
|
||||
import org.eclipse.rse.shells.ui.ShellResources;
|
||||
import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFile;
|
||||
|
@ -187,7 +188,7 @@ FocusListener
|
|||
_tabFolderPage.setFont(font);
|
||||
// dummy title so that sizings work
|
||||
// fix for 138311
|
||||
String dummyTitle = ShellResources.RESID_SHELLS_COMMAND_SHELL_LABEL;
|
||||
// String dummyTitle = ShellResources.RESID_SHELLS_COMMAND_SHELL_LABEL;
|
||||
|
||||
// _tabFolderPage.setText(dummyTitle);
|
||||
GridLayout gridLayout = new GridLayout();
|
||||
|
@ -281,7 +282,7 @@ FocusListener
|
|||
});
|
||||
|
||||
|
||||
SystemWidgetHelpers.setHelp(_viewer.getControl(), RSEUIPlugin.HELPPREFIX + "ucmd0000");
|
||||
SystemWidgetHelpers.setHelp(_viewer.getControl(), RSEUIPlugin.HELPPREFIX + "ucmd0000"); //$NON-NLS-1$
|
||||
|
||||
TableLayout layout = new TableLayout();
|
||||
table.setLayout(layout);
|
||||
|
@ -298,7 +299,7 @@ FocusListener
|
|||
Label label = new Label(_inputContainer, SWT.NONE);
|
||||
label.setText(ShellResources.RESID_COMMANDSVIEW_COMMAND_LABEL);
|
||||
|
||||
_inputEntry = new SystemCommandEditor(_viewPart.getViewSite(), _inputContainer, SWT.SINGLE | SWT.BORDER, 50, _entryViewerConfiguration, "", SystemResources.ACTION_CONTENT_ASSIST);
|
||||
_inputEntry = new SystemCommandEditor(_viewPart.getViewSite(), _inputContainer, SWT.SINGLE | SWT.BORDER, 50, _entryViewerConfiguration, "", SystemResources.ACTION_CONTENT_ASSIST); //$NON-NLS-1$
|
||||
_inputEntry.getTextWidget().setToolTipText(ShellResources.RESID_COMMANDSVIEW_COMMAND_TOOLTIP);
|
||||
|
||||
|
||||
|
@ -368,12 +369,12 @@ FocusListener
|
|||
String path = folder.getAbsolutePath();
|
||||
ISubSystem cmdSubSystem = adapter.getSubSystem(element);
|
||||
|
||||
String cdCmd = "cd " + "\"" + path + "\"";
|
||||
if (cmdSubSystem.getHost().getSystemType().equals("Local")
|
||||
&& System.getProperty("os.name").toLowerCase().startsWith("win")
|
||||
|| cmdSubSystem.getHost().getSystemType().equals("Windows"))
|
||||
String cdCmd = "cd " + PathUtility.enQuoteUnix(path); //$NON-NLS-1$
|
||||
if (cmdSubSystem.getHost().getSystemType().equals("Local") //$NON-NLS-1$
|
||||
&& System.getProperty("os.name").toLowerCase().startsWith("win") //$NON-NLS-1$ //$NON-NLS-2$
|
||||
|| cmdSubSystem.getHost().getSystemType().equals("Windows")) //$NON-NLS-1$
|
||||
{
|
||||
cdCmd = "cd /d " + path;
|
||||
cdCmd = "cd /d \"" + path + '\"'; //$NON-NLS-1$
|
||||
}
|
||||
sendInput(cdCmd);
|
||||
}
|
||||
|
@ -382,17 +383,17 @@ FocusListener
|
|||
else if (element instanceof RemoteOutput)
|
||||
{
|
||||
RemoteOutput out = (RemoteOutput)element;
|
||||
if (out.getType().equals("directory"))
|
||||
if (out.getType().equals("directory")) //$NON-NLS-1$
|
||||
{
|
||||
String path = out.getAbsolutePath();
|
||||
ISubSystem cmdSubSystem = adapter.getSubSystem(element);
|
||||
|
||||
String cdCmd = "cd " + "\"" + path + "\"";
|
||||
if (cmdSubSystem.getHost().getSystemType().equals("Local")
|
||||
&& System.getProperty("os.name").toLowerCase().startsWith("win")
|
||||
|| cmdSubSystem.getHost().getSystemType().equals("Windows"))
|
||||
String cdCmd = "cd " + PathUtility.enQuoteUnix(path); //$NON-NLS-1$
|
||||
if (cmdSubSystem.getHost().getSystemType().equals("Local") //$NON-NLS-1$
|
||||
&& System.getProperty("os.name").toLowerCase().startsWith("win") //$NON-NLS-1$ //$NON-NLS-2$
|
||||
|| cmdSubSystem.getHost().getSystemType().equals("Windows")) //$NON-NLS-1$
|
||||
{
|
||||
cdCmd = "cd /d " + path;
|
||||
cdCmd = "cd /d \"" + path + '\"'; //$NON-NLS-1$
|
||||
}
|
||||
sendInput(cdCmd);
|
||||
}
|
||||
|
@ -450,7 +451,7 @@ FocusListener
|
|||
}
|
||||
}
|
||||
|
||||
_inputEntry.getTextWidget().setText("");
|
||||
_inputEntry.getTextWidget().setText(""); //$NON-NLS-1$
|
||||
_inputEntry.getTextWidget().setFocus();
|
||||
}
|
||||
|
||||
|
@ -463,7 +464,7 @@ FocusListener
|
|||
IRemoteCmdSubSystem commandSubSystem = remoteCommand.getCommandSubSystem();
|
||||
try
|
||||
{
|
||||
commandSubSystem.sendCommandToShell("#break", remoteCommand);
|
||||
commandSubSystem.sendCommandToShell("#break", remoteCommand); //$NON-NLS-1$
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
@ -637,7 +638,7 @@ FocusListener
|
|||
if (_commandHistoryOffset >= getCommandHistory().length)
|
||||
{
|
||||
_commandHistoryOffset = getCommandHistory().length;
|
||||
_inputEntry.getTextWidget().setText("");
|
||||
_inputEntry.getTextWidget().setText(""); //$NON-NLS-1$
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue