mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-20 23:45:23 +02:00
[337612] Failed to copy the content of a tar file
This commit is contained in:
parent
181abf844f
commit
2098947a7f
1 changed files with 15 additions and 3 deletions
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2006, 2010 IBM Corporation and others.
|
* Copyright (c) 2006, 2011 IBM Corporation and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -49,6 +49,7 @@
|
||||||
* David McKnight (IBM) - [279829] [local] Save conflict dialog keeps popping up on mounted drive
|
* David McKnight (IBM) - [279829] [local] Save conflict dialog keeps popping up on mounted drive
|
||||||
* David McKnight (IBM) - [331247] Local file paste failed on Vista and Windows 7
|
* David McKnight (IBM) - [331247] Local file paste failed on Vista and Windows 7
|
||||||
* Xuan Chen (IBM) - [222544] [testing] FileServiceArchiveTest leaves temporary files and folders behind in TEMP dir
|
* Xuan Chen (IBM) - [222544] [testing] FileServiceArchiveTest leaves temporary files and folders behind in TEMP dir
|
||||||
|
* David McKnight (IBM) - [337612] Failed to copy the content of a tar file
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
package org.eclipse.rse.internal.services.local.files;
|
package org.eclipse.rse.internal.services.local.files;
|
||||||
|
@ -1397,6 +1398,15 @@ public class LocalFileService extends AbstractFileService implements ILocalServi
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean isTempFile(File resource){
|
||||||
|
String workspaceLocation = System.getProperty("osgi.instance.area");
|
||||||
|
if (workspaceLocation != null && workspaceLocation.length() > 0){
|
||||||
|
workspaceLocation = workspaceLocation.substring(6).replace('/', File.separatorChar);
|
||||||
|
}
|
||||||
|
String path = resource.getAbsolutePath();
|
||||||
|
return (path.startsWith(workspaceLocation));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Copy a file or folder to a new target parent folder, but if
|
* Copy a file or folder to a new target parent folder, but if
|
||||||
* copying from an archive, extract the file in the encoding specified
|
* copying from an archive, extract the file in the encoding specified
|
||||||
|
@ -1425,7 +1435,9 @@ public class LocalFileService extends AbstractFileService implements ILocalServi
|
||||||
archiveOperationMonitor = new SystemOperationMonitor();
|
archiveOperationMonitor = new SystemOperationMonitor();
|
||||||
checkArchiveOperationStatusThread = new CheckArchiveOperationStatusThread(archiveOperationMonitor, monitor);
|
checkArchiveOperationStatusThread = new CheckArchiveOperationStatusThread(archiveOperationMonitor, monitor);
|
||||||
}
|
}
|
||||||
if (!(ArchiveHandlerManager.isVirtual(targetFolder.getAbsolutePath())) && !ArchiveHandlerManager.getInstance().isArchive(targetFolder))
|
boolean isTempFile = isTempFile(targetFolder);
|
||||||
|
|
||||||
|
if (!(ArchiveHandlerManager.isVirtual(targetFolder.getAbsolutePath()) && !isTempFile) && !ArchiveHandlerManager.getInstance().isArchive(targetFolder))
|
||||||
{
|
{
|
||||||
// this is an optimization to speed up extractions from large zips. Instead of
|
// this is an optimization to speed up extractions from large zips. Instead of
|
||||||
// extracting to a temp location and then copying the temp files to the target location
|
// extracting to a temp location and then copying the temp files to the target location
|
||||||
|
@ -1511,7 +1523,7 @@ public class LocalFileService extends AbstractFileService implements ILocalServi
|
||||||
handler.extractVirtualDirectory(child.fullName, tempSource, sourceEncoding, isText, archiveOperationMonitor);
|
handler.extractVirtualDirectory(child.fullName, tempSource, sourceEncoding, isText, archiveOperationMonitor);
|
||||||
src = tempSource.getAbsolutePath() + File.separatorChar + child.name;
|
src = tempSource.getAbsolutePath() + File.separatorChar + child.name;
|
||||||
}
|
}
|
||||||
if (ArchiveHandlerManager.isVirtual(targetFolder.getAbsolutePath()) || ArchiveHandlerManager.getInstance().isArchive(targetFolder))
|
if ((ArchiveHandlerManager.isVirtual(targetFolder.getAbsolutePath()) && !isTempFile) || ArchiveHandlerManager.getInstance().isArchive(targetFolder))
|
||||||
{
|
{
|
||||||
File source = new File(src);
|
File source = new File(src);
|
||||||
boolean returnValue = copyToArchive(source, targetFolder, newName, monitor, SystemEncodingUtil.ENCODING_UTF_8, targetEncoding, isText);
|
boolean returnValue = copyToArchive(source, targetFolder, newName, monitor, SystemEncodingUtil.ENCODING_UTF_8, targetEncoding, isText);
|
||||||
|
|
Loading…
Add table
Reference in a new issue