@Override public int getGID() { return stat.gid(); }
@Override public int getMode() { return stat.mode(); }
@Override public int getUID() { return stat.uid(); }
@JRubyMethod(name = "inspect") public IRubyObject inspect() { StringBuilder buf = new StringBuilder("#<"); buf.append(getMetaClass().getRealClass().getName()); buf.append(" "); // FIXME: Obvious issue that not all platforms can display all attributes. Ugly hacks. // Using generic posix library makes pushing inspect behavior into specific system impls // rather painful. try { buf.append("dev=0x").append(Long.toHexString(stat.dev())).append(", "); } catch (Exception e) {} try { buf.append("ino=").append(stat.ino()).append(", "); } catch (Exception e) {} buf.append("mode=0").append(Integer.toOctalString(stat.mode())).append(", "); try { buf.append("nlink=").append(stat.nlink()).append(", "); } catch (Exception e) {} try { buf.append("uid=").append(stat.uid()).append(", "); } catch (Exception e) {} try { buf.append("gid=").append(stat.gid()).append(", "); } catch (Exception e) {} try { buf.append("rdev=0x").append(Long.toHexString(stat.rdev())).append(", "); } catch (Exception e) {} buf.append("size=").append(stat.st_size()).append(", "); try { buf.append("blksize=").append(stat.blockSize()).append(", "); } catch (Exception e) {} try { buf.append("blocks=").append(stat.blocks()).append(", "); } catch (Exception e) {} buf.append("atime=").append(atime()).append(", "); buf.append("mtime=").append(mtime()).append(", "); buf.append("ctime=").append(ctime()); buf.append(">"); return getRuntime().newString(buf.toString()); }
@Override public long getINO() { return stat.ino(); }
@Override public long getAccessTime() { return stat.atime(); }
@Override public long getCreateTime() { return stat.ctime(); }
@Override public long getBlockSize() { return stat.blockSize(); }
@Override public long getDev() { return stat.dev(); }
@Override public long getBlocks() { return stat.blocks(); }
@Override public int getMajor(long dev) { return stat.major(dev); }
@JRubyMethod(name = "ino") public IRubyObject ino() { return getRuntime().newFixnum(stat.ino()); }
@JRubyMethod(name = "atime") public IRubyObject atime() { return getRuntime().newTime(stat.atime() * 1000); }
@JRubyMethod(name = "ctime") public IRubyObject ctime() { return getRuntime().newTime(stat.ctime() * 1000); }
@JRubyMethod(name = "blksize") public RubyFixnum blksize() { return getRuntime().newFixnum(stat.blockSize()); }