From: <ga...@us...> - 2012-08-10 07:20:31
|
Revision: 5922 http://jnode.svn.sourceforge.net/jnode/?rev=5922&view=rev Author: galatnm Date: 2012-08-10 07:20:25 +0000 (Fri, 10 Aug 2012) Log Message: ----------- Add HFS+ file info and BSD info fields Extract out some more dates Modified Paths: -------------- trunk/fs/src/fs/org/jnode/fs/hfsplus/FileInfo.java trunk/fs/src/fs/org/jnode/fs/hfsplus/HfsPlusBSDInfo.java trunk/fs/src/fs/org/jnode/fs/hfsplus/catalog/CatalogFile.java trunk/fs/src/fs/org/jnode/fs/hfsplus/catalog/CatalogFolder.java Modified: trunk/fs/src/fs/org/jnode/fs/hfsplus/FileInfo.java =================================================================== --- trunk/fs/src/fs/org/jnode/fs/hfsplus/FileInfo.java 2012-08-10 07:18:21 UTC (rev 5921) +++ trunk/fs/src/fs/org/jnode/fs/hfsplus/FileInfo.java 2012-08-10 07:20:25 UTC (rev 5922) @@ -17,9 +17,31 @@ * along with this library; If not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ - + package org.jnode.fs.hfsplus; +import org.jnode.util.BigEndian; + public class FileInfo { + private int fileType; + private int fileCreator; + private int finderFlags; + public FileInfo(byte[] data, int offset) { + fileType = BigEndian.getInt32(data, offset); + fileCreator = BigEndian.getInt32(data, offset + 4); + finderFlags = BigEndian.getInt16(data, offset + 8); + } + + public int getFileType() { + return fileType; + } + + public int getFileCreator() { + return fileCreator; + } + + public int getFinderFlags() { + return finderFlags; + } } Modified: trunk/fs/src/fs/org/jnode/fs/hfsplus/HfsPlusBSDInfo.java =================================================================== --- trunk/fs/src/fs/org/jnode/fs/hfsplus/HfsPlusBSDInfo.java 2012-08-10 07:18:21 UTC (rev 5921) +++ trunk/fs/src/fs/org/jnode/fs/hfsplus/HfsPlusBSDInfo.java 2012-08-10 07:20:25 UTC (rev 5922) @@ -20,6 +20,46 @@ package org.jnode.fs.hfsplus; +import org.jnode.util.BigEndian; + public class HfsPlusBSDInfo { + private int ownerID; + private int groupID; + private int adminFlags; + private int ownerFlags; + private int fileMode; + private int special; + public HfsPlusBSDInfo(byte[] data, int offset) { + ownerID = BigEndian.getInt32(data, offset); + groupID = BigEndian.getInt32(data, offset + 4); + adminFlags = data[offset + 8]; + ownerFlags = data[offset + 9]; + fileMode = BigEndian.getInt16(data, offset + 10); + special = BigEndian.getInt32(data, offset + 12); + } + + public int getOwnerID() { + return ownerID; + } + + public int getGroupID() { + return groupID; + } + + public int getAdminFlags() { + return adminFlags; + } + + public int getOwnerFlags() { + return ownerFlags; + } + + public int getFileMode() { + return fileMode; + } + + public int getSpecial() { + return special; + } } Modified: trunk/fs/src/fs/org/jnode/fs/hfsplus/catalog/CatalogFile.java =================================================================== --- trunk/fs/src/fs/org/jnode/fs/hfsplus/catalog/CatalogFile.java 2012-08-10 07:18:21 UTC (rev 5921) +++ trunk/fs/src/fs/org/jnode/fs/hfsplus/catalog/CatalogFile.java 2012-08-10 07:20:25 UTC (rev 5922) @@ -82,6 +82,10 @@ createDate = BigEndian.getInt32(data, 12); contentModDate = BigEndian.getInt32(data, 16); attrModDate = BigEndian.getInt32(data, 20); + accessDate = BigEndian.getInt32(data, 24); + backupDate = BigEndian.getInt32(data, 28); + permissions = new HfsPlusBSDInfo(data, 32); + userInfo = new FileInfo(data, 48); datas = new HfsPlusForkData(data, 88); resources = new HfsPlusForkData(data, 168); } @@ -145,8 +149,8 @@ return HfsUtils.getDate(contentModDate & 0xffffffffL, false) * 1000L; } - public int getAttrModDate() { - return attrModDate; + public long getAttrModDate() { + return HfsUtils.getDate(attrModDate & 0xffffffffL, false) * 1000L; } public HfsPlusForkData getDatas() { @@ -157,12 +161,12 @@ return resources; } - public int getAccessDate() { - return accessDate; + public long getAccessDate() { + return HfsUtils.getDate(accessDate & 0xffffffffL, false) * 1000L; } - public int getBackupDate() { - return backupDate; + public long getBackupDate() { + return HfsUtils.getDate(backupDate & 0xffffffffL, false) * 1000L; } public HfsPlusBSDInfo getPermissions() { Modified: trunk/fs/src/fs/org/jnode/fs/hfsplus/catalog/CatalogFolder.java =================================================================== --- trunk/fs/src/fs/org/jnode/fs/hfsplus/catalog/CatalogFolder.java 2012-08-10 07:18:21 UTC (rev 5921) +++ trunk/fs/src/fs/org/jnode/fs/hfsplus/catalog/CatalogFolder.java 2012-08-10 07:20:25 UTC (rev 5922) @@ -20,6 +20,7 @@ package org.jnode.fs.hfsplus.catalog; +import org.jnode.fs.hfsplus.HfsPlusBSDInfo; import org.jnode.fs.hfsplus.HfsUtils; import org.jnode.util.BigEndian; @@ -36,6 +37,9 @@ private int createDate; private int contentModDate; private int attrModDate; + private int accessDate; + private int backupDate; + private HfsPlusBSDInfo permissions; /** * @@ -50,6 +54,9 @@ createDate = BigEndian.getInt32(data, 12); contentModDate = BigEndian.getInt32(data, 16); attrModDate = BigEndian.getInt32(data, 20); + accessDate = BigEndian.getInt32(data, 24); + backupDate = BigEndian.getInt32(data, 28); + permissions = new HfsPlusBSDInfo(data, 32); } /** @@ -120,10 +127,22 @@ return HfsUtils.getDate(contentModDate & 0xffffffffL, false) * 1000L; } - public int getAttrModDate() { - return attrModDate; + public long getAttrModDate() { + return HfsUtils.getDate(attrModDate & 0xffffffffL, false) * 1000L; } + public long getAccessDate() { + return HfsUtils.getDate(accessDate & 0xffffffffL, false) * 1000L; + } + + public long getBackupDate() { + return HfsUtils.getDate(backupDate & 0xffffffffL, false) * 1000L; + } + + public HfsPlusBSDInfo getPermissions() { + return permissions; + } + public void setRecordType(int recordType) { this.recordType = recordType; } @@ -144,8 +163,8 @@ this.contentModDate = (int) HfsUtils.getDate(contentModDate / 1000L, true); } - public void setAttrModDate(int attrModDate) { - this.attrModDate = attrModDate; + public void setAttrModDate(long attrModDate) { + this.attrModDate = (int) HfsUtils.getDate(attrModDate / 1000L, true); } public void incrementValence(){ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |