From c8b3a085c576d79032ad7cb7b220afdcaf77e157 Mon Sep 17 00:00:00 2001 From: Xuan Chen Date: Tue, 14 Aug 2007 05:02:57 +0000 Subject: [PATCH] [199132] fix: [Archives-TAR][Local-Windows] Can't open files in tar archives --- .../clientserver/archiveutils/SystemTarHandler.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/rse/plugins/org.eclipse.rse.services/clientserver/org/eclipse/rse/services/clientserver/archiveutils/SystemTarHandler.java b/rse/plugins/org.eclipse.rse.services/clientserver/org/eclipse/rse/services/clientserver/archiveutils/SystemTarHandler.java index 21ef04734f0..6339f3f99b7 100644 --- a/rse/plugins/org.eclipse.rse.services/clientserver/org/eclipse/rse/services/clientserver/archiveutils/SystemTarHandler.java +++ b/rse/plugins/org.eclipse.rse.services/clientserver/org/eclipse/rse/services/clientserver/archiveutils/SystemTarHandler.java @@ -14,6 +14,7 @@ * Contributors: * {Name} (company) - description of contribution. * Xuan Chen (IBM) - [194293] [Local][Archives] Saving file second time in an Archive Errors + * Xuan Chen (IBM) - [199132] [Archives-TAR][Local-Windows] Can't open files in tar archives *******************************************************************************/ package org.eclipse.rse.services.clientserver.archiveutils; @@ -870,6 +871,14 @@ public class SystemTarHandler implements ISystemArchiveHandler { destination.setLastModified(entry.getModificationTime()); return false; // TODO: return true or false? } + //Need to make sure destination file exists. + if (!destination.exists()) + { + File parentFile = destination.getParentFile(); + if (!parentFile.exists()) + parentFile.mkdirs(); + destination.createNewFile(); + } outStream = new FileOutputStream(destination); @@ -2248,8 +2257,7 @@ public class SystemTarHandler implements ISystemArchiveHandler { } public boolean add(File file, String virtualPath, String name, String sourceEncoding, String targetEncoding, ISystemFileTypes typeRegistery) { - // TODO Auto-generated method stub - return false; + return add(file, virtualPath, name); } public boolean replace(String fullVirtualName, InputStream stream, String name, String sourceEncoding, String targetEncoding, boolean isText) {