mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-28 03:15:33 +02:00
Merge "Add property for obtaining character encoding."
This commit is contained in:
commit
76ac23a87f
3 changed files with 33 additions and 8 deletions
|
@ -26,6 +26,7 @@ import org.eclipse.remote.core.exception.RemoteConnectionException;
|
||||||
public interface IRemoteConnection {
|
public interface IRemoteConnection {
|
||||||
/**
|
/**
|
||||||
* The interface that is extend by services provided for this remote connection.
|
* The interface that is extend by services provided for this remote connection.
|
||||||
|
*
|
||||||
* @since 2.0
|
* @since 2.0
|
||||||
*/
|
*/
|
||||||
interface Service {
|
interface Service {
|
||||||
|
@ -44,6 +45,10 @@ public interface IRemoteConnection {
|
||||||
final static String PATH_SEPARATOR_PROPERTY = "path.separator"; //$NON-NLS-1$
|
final static String PATH_SEPARATOR_PROPERTY = "path.separator"; //$NON-NLS-1$
|
||||||
final static String LINE_SEPARATOR_PROPERTY = "line.separator"; //$NON-NLS-1$
|
final static String LINE_SEPARATOR_PROPERTY = "line.separator"; //$NON-NLS-1$
|
||||||
final static String USER_HOME_PROPERTY = "user.home"; //$NON-NLS-1$
|
final static String USER_HOME_PROPERTY = "user.home"; //$NON-NLS-1$
|
||||||
|
/**
|
||||||
|
* @since 2.0
|
||||||
|
*/
|
||||||
|
final static String LOCALE_CHARMAP_PROPERTY = "locale.charmap"; //$NON-NLS-1$
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the connection type of this connection
|
* Get the connection type of this connection
|
||||||
|
@ -63,9 +68,10 @@ public interface IRemoteConnection {
|
||||||
/**
|
/**
|
||||||
* Get the service for this remote connection that implements the given interface.
|
* Get the service for this remote connection that implements the given interface.
|
||||||
*
|
*
|
||||||
* @param service the interface the required service must implements
|
* @param service
|
||||||
|
* the interface the required service must implements
|
||||||
* @return the desired service or null if there is no such service available
|
* @return the desired service or null if there is no such service available
|
||||||
* @throws CoreException
|
* @throws CoreException
|
||||||
* @since 2.0
|
* @since 2.0
|
||||||
*/
|
*/
|
||||||
<T extends Service> T getService(Class<T> service);
|
<T extends Service> T getService(Class<T> service);
|
||||||
|
@ -73,7 +79,8 @@ public interface IRemoteConnection {
|
||||||
/**
|
/**
|
||||||
* Does this connection support the given service.
|
* Does this connection support the given service.
|
||||||
*
|
*
|
||||||
* @param service The service to be tested
|
* @param service
|
||||||
|
* The service to be tested
|
||||||
* @return true if this connection supports the service
|
* @return true if this connection supports the service
|
||||||
* @since 2.0
|
* @since 2.0
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -46,6 +46,8 @@ public class LocalConnectionPropertyService implements IRemoteConnectionProperty
|
||||||
return RemoteCorePlugin.getDefault().getBundle().getBundleContext().getProperty("osgi.os"); //$NON-NLS-1$
|
return RemoteCorePlugin.getDefault().getBundle().getBundleContext().getProperty("osgi.os"); //$NON-NLS-1$
|
||||||
case IRemoteConnection.OS_ARCH_PROPERTY:
|
case IRemoteConnection.OS_ARCH_PROPERTY:
|
||||||
return RemoteCorePlugin.getDefault().getBundle().getBundleContext().getProperty("osgi.arch"); //$NON-NLS-1$
|
return RemoteCorePlugin.getDefault().getBundle().getBundleContext().getProperty("osgi.arch"); //$NON-NLS-1$
|
||||||
|
case IRemoteConnection.LOCALE_CHARMAP_PROPERTY:
|
||||||
|
return System.getProperty("file.encoding"); //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
return System.getProperty(key);
|
return System.getProperty(key);
|
||||||
}
|
}
|
||||||
|
|
|
@ -257,7 +257,7 @@ public class JSchConnection implements IRemoteConnectionControlService, IRemoteC
|
||||||
private boolean isFullySetup; // including sftp channel and environment
|
private boolean isFullySetup; // including sftp channel and environment
|
||||||
|
|
||||||
private static final Map<IRemoteConnection, JSchConnection> connectionMap = new HashMap<>();
|
private static final Map<IRemoteConnection, JSchConnection> connectionMap = new HashMap<>();
|
||||||
|
|
||||||
public JSchConnection(IRemoteConnection connection) {
|
public JSchConnection(IRemoteConnection connection) {
|
||||||
fRemoteConnection = connection;
|
fRemoteConnection = connection;
|
||||||
fJSchService = Activator.getDefault().getService();
|
fJSchService = Activator.getDefault().getService();
|
||||||
|
@ -829,11 +829,17 @@ public class JSchConnection implements IRemoteConnectionControlService, IRemoteC
|
||||||
|
|
||||||
String osVersion;
|
String osVersion;
|
||||||
String osArch;
|
String osArch;
|
||||||
|
String encoding;
|
||||||
|
|
||||||
String osName = executeCommand("uname", subMon.newChild(10)); //$NON-NLS-1$
|
String osName = executeCommand("uname", subMon.newChild(10)); //$NON-NLS-1$
|
||||||
if (osName.equalsIgnoreCase("Linux")) { //$NON-NLS-1$
|
switch (osName.toLowerCase()) {
|
||||||
|
case "linux": //$NON-NLS-1$
|
||||||
osArch = executeCommand("uname -m", subMon.newChild(10)); //$NON-NLS-1$
|
osArch = executeCommand("uname -m", subMon.newChild(10)); //$NON-NLS-1$
|
||||||
osVersion = executeCommand("uname -r", subMon.newChild(10)); //$NON-NLS-1$
|
osVersion = executeCommand("uname -r", subMon.newChild(10)); //$NON-NLS-1$
|
||||||
} else if (osName.equalsIgnoreCase("Darwin")) { //$NON-NLS-1$
|
encoding = executeCommand("locale charmap", subMon.newChild(10)); //$NON-NLS-1$
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "darwin": //$NON-NLS-1$
|
||||||
osName = executeCommand("sw_vers -productName", subMon.newChild(10)); //$NON-NLS-1$
|
osName = executeCommand("sw_vers -productName", subMon.newChild(10)); //$NON-NLS-1$
|
||||||
osVersion = executeCommand("sw_vers -productVersion", subMon.newChild(10)); //$NON-NLS-1$
|
osVersion = executeCommand("sw_vers -productVersion", subMon.newChild(10)); //$NON-NLS-1$
|
||||||
osArch = executeCommand("uname -m", subMon.newChild(10)); //$NON-NLS-1$
|
osArch = executeCommand("uname -m", subMon.newChild(10)); //$NON-NLS-1$
|
||||||
|
@ -843,7 +849,10 @@ public class JSchConnection implements IRemoteConnectionControlService, IRemoteC
|
||||||
osArch = "x86_64"; //$NON-NLS-1$
|
osArch = "x86_64"; //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (osName.equalsIgnoreCase("AIX")) { //$NON-NLS-1$
|
encoding = executeCommand("locale charmap", subMon.newChild(10)); //$NON-NLS-1$
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "aix": //$NON-NLS-1$
|
||||||
osArch = executeCommand("uname -p", subMon.newChild(10)); //$NON-NLS-1$
|
osArch = executeCommand("uname -p", subMon.newChild(10)); //$NON-NLS-1$
|
||||||
osVersion = executeCommand("oslevel", subMon.newChild(10)); //$NON-NLS-1$
|
osVersion = executeCommand("oslevel", subMon.newChild(10)); //$NON-NLS-1$
|
||||||
if (osArch.equalsIgnoreCase("powerpc")) { //$NON-NLS-1$
|
if (osArch.equalsIgnoreCase("powerpc")) { //$NON-NLS-1$
|
||||||
|
@ -855,13 +864,20 @@ public class JSchConnection implements IRemoteConnectionControlService, IRemoteC
|
||||||
osArch += "64"; //$NON-NLS-1$
|
osArch += "64"; //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
encoding = executeCommand("locale charmap", subMon.newChild(10)); //$NON-NLS-1$
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
osVersion = "unknown"; //$NON-NLS-1$
|
osVersion = "unknown"; //$NON-NLS-1$
|
||||||
osArch = "unknown"; //$NON-NLS-1$
|
osArch = "unknown"; //$NON-NLS-1$
|
||||||
|
encoding = "unknown"; //$NON-NLS-1$
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
fProperties.put(IRemoteConnection.OS_NAME_PROPERTY, osName);
|
fProperties.put(IRemoteConnection.OS_NAME_PROPERTY, osName);
|
||||||
fProperties.put(IRemoteConnection.OS_VERSION_PROPERTY, osVersion);
|
fProperties.put(IRemoteConnection.OS_VERSION_PROPERTY, osVersion);
|
||||||
fProperties.put(IRemoteConnection.OS_ARCH_PROPERTY, osArch);
|
fProperties.put(IRemoteConnection.OS_ARCH_PROPERTY, osArch);
|
||||||
|
fProperties.put(IRemoteConnection.LOCALE_CHARMAP_PROPERTY, encoding);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Session newSession(IProgressMonitor monitor) throws RemoteConnectionException {
|
private Session newSession(IProgressMonitor monitor) throws RemoteConnectionException {
|
||||||
|
|
Loading…
Add table
Reference in a new issue