Mercurial > 510Connectbot
diff src/com/trilead/ssh2/SFTPv3FileAttributes.java @ 0:0ce5cc452d02
initial version
author | Carl Byington <carl@five-ten-sg.com> |
---|---|
date | Thu, 22 May 2014 10:41:19 -0700 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/com/trilead/ssh2/SFTPv3FileAttributes.java Thu May 22 10:41:19 2014 -0700 @@ -0,0 +1,136 @@ + +package com.trilead.ssh2; + +/** + * A <code>SFTPv3FileAttributes</code> object represents detail information + * about a file on the server. Not all fields may/must be present. + * + * @author Christian Plattner, plattner@trilead.com + * @version $Id: SFTPv3FileAttributes.java,v 1.2 2008/04/01 12:38:09 cplattne Exp $ + */ + +public class SFTPv3FileAttributes { + /** + * The SIZE attribute. <code>NULL</code> if not present. + */ + public Long size = null; + + /** + * The UID attribute. <code>NULL</code> if not present. + */ + public Integer uid = null; + + /** + * The GID attribute. <code>NULL</code> if not present. + */ + public Integer gid = null; + + /** + * The POSIX permissions. <code>NULL</code> if not present. + * <p> + * Here is a list: + * <p> + * <pre>Note: these numbers are all OCTAL. + * + * S_IFMT 0170000 bitmask for the file type bitfields + * S_IFSOCK 0140000 socket + * S_IFLNK 0120000 symbolic link + * S_IFREG 0100000 regular file + * S_IFBLK 0060000 block device + * S_IFDIR 0040000 directory + * S_IFCHR 0020000 character device + * S_IFIFO 0010000 fifo + * S_ISUID 0004000 set UID bit + * S_ISGID 0002000 set GID bit + * S_ISVTX 0001000 sticky bit + * + * S_IRWXU 00700 mask for file owner permissions + * S_IRUSR 00400 owner has read permission + * S_IWUSR 00200 owner has write permission + * S_IXUSR 00100 owner has execute permission + * S_IRWXG 00070 mask for group permissions + * S_IRGRP 00040 group has read permission + * S_IWGRP 00020 group has write permission + * S_IXGRP 00010 group has execute permission + * S_IRWXO 00007 mask for permissions for others (not in group) + * S_IROTH 00004 others have read permission + * S_IWOTH 00002 others have write permisson + * S_IXOTH 00001 others have execute permission + * </pre> + */ + public Integer permissions = null; + + /** + * The ATIME attribute. Represented as seconds from Jan 1, 1970 in UTC. + * <code>NULL</code> if not present. + */ + public Long atime = null; + + /** + * The MTIME attribute. Represented as seconds from Jan 1, 1970 in UTC. + * <code>NULL</code> if not present. + */ + public Long mtime = null; + + /** + * Checks if this entry is a directory. + * + * @return Returns true if permissions are available and they indicate + * that this entry represents a directory. + */ + public boolean isDirectory() { + if (permissions == null) + return false; + + return ((permissions.intValue() & 0040000) != 0); + } + + /** + * Checks if this entry is a regular file. + * + * @return Returns true if permissions are available and they indicate + * that this entry represents a regular file. + */ + public boolean isRegularFile() { + if (permissions == null) + return false; + + return ((permissions.intValue() & 0100000) != 0); + } + + /** + * Checks if this entry is a a symlink. + * + * @return Returns true if permissions are available and they indicate + * that this entry represents a symlink. + */ + public boolean isSymlink() { + if (permissions == null) + return false; + + return ((permissions.intValue() & 0120000) != 0); + } + + /** + * Turn the POSIX permissions into a 7 digit octal representation. + * Note: the returned value is first masked with <code>0177777</code>. + * + * @return <code>NULL</code> if permissions are not available. + */ + public String getOctalPermissions() { + if (permissions == null) + return null; + + String res = Integer.toString(permissions.intValue() & 0177777, 8); + StringBuffer sb = new StringBuffer(); + int leadingZeros = 7 - res.length(); + + while (leadingZeros > 0) { + sb.append('0'); + leadingZeros--; + } + + sb.append(res); + return sb.toString(); + } +}