mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-14 20:45:22 +02:00
[199548] Avoid touching files on setReadOnly() if unnecessary
This commit is contained in:
parent
e6c60f0c72
commit
28eefd9eff
4 changed files with 20 additions and 13 deletions
|
@ -21,6 +21,7 @@
|
||||||
* Kevin Doyle (IBM) - [196211] DStore Move tries rename if that fails copy/delete
|
* Kevin Doyle (IBM) - [196211] DStore Move tries rename if that fails copy/delete
|
||||||
* Xuan Chen (IBM) - [198046] [dstore] Cannot copy a folder into an archive file
|
* Xuan Chen (IBM) - [198046] [dstore] Cannot copy a folder into an archive file
|
||||||
* Xuan Chen (IBM) - [191367] with supertransfer on, Drag & Drop Folder from DStore to DStore doesn't work
|
* Xuan Chen (IBM) - [191367] with supertransfer on, Drag & Drop Folder from DStore to DStore doesn't work
|
||||||
|
* Martin Oberhuber (Wind River) - [199548] Avoid touching files on setReadOnly() if unnecessary
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
package org.eclipse.rse.dstore.universal.miners;
|
package org.eclipse.rse.dstore.universal.miners;
|
||||||
|
@ -1230,17 +1231,13 @@ public class UniversalFileSystemMiner extends Miner {
|
||||||
else {
|
else {
|
||||||
try {
|
try {
|
||||||
String str = subject.getAttribute(DE.A_SOURCE);
|
String str = subject.getAttribute(DE.A_SOURCE);
|
||||||
boolean readOnly = false;
|
boolean readOnly = "true".equals(str); //$NON-NLS-1$
|
||||||
if (str.equals("true")) //$NON-NLS-1$
|
|
||||||
{
|
|
||||||
readOnly = true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
readOnly = false;
|
|
||||||
}
|
|
||||||
boolean done = false;
|
boolean done = false;
|
||||||
if (readOnly)
|
if (readOnly != filename.canWrite())
|
||||||
|
{
|
||||||
|
done = true;
|
||||||
|
}
|
||||||
|
else if (readOnly)
|
||||||
{
|
{
|
||||||
done = filename.setReadOnly();
|
done = filename.setReadOnly();
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
* David McKnight (IBM) - [192705] Exception needs to be thrown when rename fails
|
* David McKnight (IBM) - [192705] Exception needs to be thrown when rename fails
|
||||||
* Kevin Doyle (IBM) - [196211] Move a folder to a directory that contains a folder by that name errors
|
* Kevin Doyle (IBM) - [196211] Move a folder to a directory that contains a folder by that name errors
|
||||||
* Martin Oberhuber (Wind River) - [199394] Allow real files/folders containing String #virtual#
|
* Martin Oberhuber (Wind River) - [199394] Allow real files/folders containing String #virtual#
|
||||||
|
* Martin Oberhuber (Wind River) - [199548] Avoid touching files on setReadOnly() if unnecessary
|
||||||
********************************************************************************/
|
********************************************************************************/
|
||||||
|
|
||||||
package org.eclipse.rse.internal.services.local.files;
|
package org.eclipse.rse.internal.services.local.files;
|
||||||
|
@ -1358,6 +1359,12 @@ public class LocalFileService extends AbstractFileService implements IFileServic
|
||||||
boolean readOnly, IProgressMonitor monitor) throws SystemMessageException
|
boolean readOnly, IProgressMonitor monitor) throws SystemMessageException
|
||||||
{
|
{
|
||||||
File file = new File(parent, name);
|
File file = new File(parent, name);
|
||||||
|
if (!file.exists()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (readOnly != file.canWrite()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
if (readOnly)
|
if (readOnly)
|
||||||
{
|
{
|
||||||
return file.setReadOnly();
|
return file.setReadOnly();
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
* Kushal Munir (IBM) - for API bug
|
* Kushal Munir (IBM) - for API bug
|
||||||
* Martin Oberhuber (Wind River) - [186128] Move IProgressMonitor last in all API
|
* Martin Oberhuber (Wind River) - [186128] Move IProgressMonitor last in all API
|
||||||
* Martin Oberhuber (Wind River) - [192724] Fixed logic to filter folders if FILE_TYPE_FOLDERS
|
* Martin Oberhuber (Wind River) - [192724] Fixed logic to filter folders if FILE_TYPE_FOLDERS
|
||||||
|
* Martin Oberhuber (Wind River) - [199548] Avoid touching files on setReadOnly() if unnecessary
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
package org.eclipse.rse.internal.services.ssh.files;
|
package org.eclipse.rse.internal.services.ssh.files;
|
||||||
|
@ -866,9 +867,9 @@ public class SftpFileService extends AbstractFileService implements IFileService
|
||||||
int permOld = attr.getPermissions();
|
int permOld = attr.getPermissions();
|
||||||
int permNew = permOld;
|
int permNew = permOld;
|
||||||
if (readOnly) {
|
if (readOnly) {
|
||||||
permNew &= ~128;
|
permNew &= ~(128 | 16 | 2); //ugo-w
|
||||||
} else {
|
} else {
|
||||||
permNew |= 128;
|
permNew |= 128; //u+w
|
||||||
}
|
}
|
||||||
if (permNew != permOld) {
|
if (permNew != permOld) {
|
||||||
//getChannel("SftpFileService.setReadOnly").chmod(permNew, path); //$NON-NLS-1$
|
//getChannel("SftpFileService.setReadOnly").chmod(permNew, path); //$NON-NLS-1$
|
||||||
|
@ -877,6 +878,7 @@ public class SftpFileService extends AbstractFileService implements IFileService
|
||||||
ok=true;
|
ok=true;
|
||||||
Activator.trace("SftpFileService.setReadOnly ok"); //$NON-NLS-1$
|
Activator.trace("SftpFileService.setReadOnly ok"); //$NON-NLS-1$
|
||||||
} else {
|
} else {
|
||||||
|
ok=true;
|
||||||
Activator.trace("SftpFileService.setReadOnly nothing-to-do"); //$NON-NLS-1$
|
Activator.trace("SftpFileService.setReadOnly nothing-to-do"); //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* Martin Oberhuber (Wind River) - [186128] Move IProgressMonitor last in all API
|
* Martin Oberhuber (Wind River) - [186128] Move IProgressMonitor last in all API
|
||||||
* Martin Oberhuber (Wind River) - [183824] Forward SystemMessageException from IRemoteFileSubsystem
|
* Martin Oberhuber (Wind River) - [183824] Forward SystemMessageException from IRemoteFileSubsystem
|
||||||
|
* Martin Oberhuber (Wind River) - [199548] Avoid touching files on setReadOnly() if unnecessary
|
||||||
********************************************************************************/
|
********************************************************************************/
|
||||||
|
|
||||||
package org.eclipse.rse.services.files;
|
package org.eclipse.rse.services.files;
|
||||||
|
@ -288,7 +289,7 @@ public interface IFileService extends IService
|
||||||
* @param name the name of the file to set
|
* @param name the name of the file to set
|
||||||
* @param readOnly indicates whether to make the file readonly or read-write
|
* @param readOnly indicates whether to make the file readonly or read-write
|
||||||
* @param monitor the progress monitor
|
* @param monitor the progress monitor
|
||||||
* @return true if the readonly permission was changed successfully
|
* @return true if the readonly permission was changed successfully, or the permission already was as desired
|
||||||
*/
|
*/
|
||||||
public boolean setReadOnly(String parent, String name, boolean readOnly, IProgressMonitor monitor) throws SystemMessageException;
|
public boolean setReadOnly(String parent, String name, boolean readOnly, IProgressMonitor monitor) throws SystemMessageException;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue