1
0
mirror of https://github.com/SquidDev-CC/CC-Tweaked synced 2025-12-23 14:06:04 +00:00

Handle missing file metadata on zip files

- Return EPOCH if a zip entry's creation/modification/access time is
   missing.
 - If a BasicFileAttributes.*Time method returns null, use 0 as our
   time. This shouldn't happen, but is a good sanity check.

Fixes #371
This commit is contained in:
SquidDev
2020-04-10 14:43:42 +01:00
parent e52d98ad8b
commit 062977336a
3 changed files with 46 additions and 10 deletions

View File

@@ -23,6 +23,7 @@ import java.io.BufferedWriter;
import java.nio.channels.ReadableByteChannel;
import java.nio.channels.WritableByteChannel;
import java.nio.file.attribute.BasicFileAttributes;
import java.nio.file.attribute.FileTime;
import java.util.HashMap;
import java.util.Map;
import java.util.OptionalLong;
@@ -359,8 +360,8 @@ public class FSAPI implements ILuaAPI
{
BasicFileAttributes attributes = m_fileSystem.getAttributes( path );
Map<String, Object> result = new HashMap<>();
result.put( "modification", attributes.lastModifiedTime().toMillis() );
result.put( "created", attributes.creationTime().toMillis() );
result.put( "modification", getFileTime( attributes.lastModifiedTime() ) );
result.put( "created", getFileTime( attributes.creationTime() ) );
result.put( "size", attributes.isDirectory() ? 0 : attributes.size() );
result.put( "isDir", attributes.isDirectory() );
return new Object[] { result };
@@ -375,4 +376,9 @@ public class FSAPI implements ILuaAPI
return null;
}
}
private static long getFileTime( FileTime time )
{
return time == null ? 0 : time.toMillis();
}
}