fStat
if (!S_ISLNK(fStat.st_mode))
*bufferSize = fStat.st_size;
if (bufferEnd > fStat.st_size)
if (buffer->position < fStat.st_size) {
size_t newLength = fStat.st_size - buffer->position;
cookie, &fStat);
return fSuperVnode.ops->read_stat(SuperVolume(), &fSuperVnode, &fStat);
if (!attribute && !S_ISDIR(fStat.st_mode))
struct stat fStat;
fStat.st_dev = SuperVolume()->id;
fStat.st_ino = fInodeNumber;
fStat.st_mode = mode;
fStat.st_nlink = 1;
fStat.st_uid = 0;
fStat.st_gid = 0;
fStat.st_size = 0;
fStat.st_rdev = 0;
fStat.st_blksize = 1024;
fStat.st_atime = fStat.st_mtime = fStat.st_ctime = fStat.st_crtime
fStat.st_type = attributeType;
if (!S_ISDIR(fStat.st_mode) && !S_ISLNK(fStat.st_mode)) {
fFileCache = file_cache_create(fStat.st_dev, fStat.st_ino, 0);
if (!S_ISDIR(fStat.st_mode))
memcpy(stat, &fStat, sizeof(struct stat));
if (fStat.st_size != stat->st_size) {
fStat.st_size = stat->st_size;
fStat.st_mode = (fStat.st_mode & ~S_IUMSK) | (stat->st_mode & S_IUMSK);
fStat.st_uid = stat->st_uid;
fStat.st_gid = stat->st_gid;
fStat.st_mtime = stat->st_mtime;
fStat.st_crtime = stat->st_crtime;
fStat.st_mtime = time(NULL);
if ((openMode & O_TRUNC) && fStat.st_size != 0) {
fStat.st_size = 0;
if (fStat.st_size != 0) {
fStat.st_size = 0;
if (position >= fStat.st_size) {
size_t bytesLeft = (size_t)MIN(fStat.st_size - position, (off_t)*length);
position = fStat.st_size;
fStat.st_mtime = time(NULL);
if (newEnd > fStat.st_size) {
fStat.st_size = newEnd;
fStat.st_mtime = time(NULL);
if (!S_ISDIR(fStat.st_mode))
return fStat;
if (st.st_dev != fStat.st_dev || st.st_ino != fStat.st_ino) {
fStat = st;
return S_ISDIR(fStat.st_mode);
return S_ISREG(fStat.st_mode);
return S_ISLNK(fStat.st_mode);
fStat(st),
if (st.st_dev != fStat.st_dev || st.st_ino != fStat.st_ino)
ref.device = fStat.st_dev;
ref.node = fStat.st_ino;
return fStat.st_dev;
return fStat.st_ino;
struct stat fStat;
if (st.st_mode != fStat.st_mode
|| st.st_mtime != fStat.st_mtime
|| st.st_size != fStat.st_size) {
struct stat fStat;
const struct stat& Stat() const { return fStat; }
fStat = st;
fStat = st;
const struct fssh_stat &Stat() const { return fStat; }
bool IsFile() const { return FSSH_S_ISREG(fStat.fssh_st_mode); }
bool IsDirectory() const { return FSSH_S_ISDIR(fStat.fssh_st_mode); }
bool IsSymLink() const { return FSSH_S_ISLNK(fStat.fssh_st_mode); }
struct fssh_stat fStat; // To be initialized by implementing classes.