39 #define major(dev) int(((dev) >> 8) & 0xff)
40 #define minor(dev) int((dev) & 0xff)
41 #define makedev(majNum, minNum) (((unsigned(majNum)) << 8) | (unsigned(minNum)))
55 const bool followLink,
56 const unsigned int maxTime
61 if (!fName || !fName[0])
67 volatile bool locIsValid =
false;
69 timer myTimer(maxTime);
74 locIsValid = (::stat(fName, &status_) == 0);
78 locIsValid = (::stat(fName, &status_) == 0);
82 locIsValid = (::lstat(fName, &status_) == 0);
95 const bool followLink,
96 const unsigned int maxTime
99 fileStat(fName.c_str(), followLink, maxTime)
113 return valid_ ? label(status_.st_size) : 0;
119 return valid_ ? status_.st_mtime : 0;
130 (status_.st_mtime + 1
e-9*status_.st_mtimespec.tv_nsec)
131 #elif defined (_WIN32)
134 (status_.st_mtime + 1
e-9*status_.st_mtim.tv_nsec)
146 major(status_.st_dev) ==
major(other.status_.st_dev)
147 &&
minor(status_.st_dev) ==
minor(other.status_.st_dev)
154 return valid_ && (status_.st_ino == other.status_.st_ino);
160 return valid_ && (status_.st_ino == ino_t(iNode));
172 dev_t st_dev =
makedev(list[1], list[2]);
173 fs.status_.st_dev = st_dev;
175 fs.status_.st_ino = list[3];
176 fs.status_.st_mode = list[4];
177 fs.status_.st_uid = list[5];
178 fs.status_.st_gid = list[6];
180 dev_t st_rdev =
makedev(list[7], list[8]);
181 fs.status_.st_rdev = st_rdev;
183 fs.status_.st_size = list[9];
184 fs.status_.st_atime = list[10];
185 fs.status_.st_mtime = list[11];
186 fs.status_.st_ctime = list[12];
197 list[0] = label(fs.valid_);
198 list[1] = label(
major(fs.status_.st_dev));
199 list[2] = label(
minor(fs.status_.st_dev));
200 list[3] = label(fs.status_.st_ino);
201 list[4] = label(fs.status_.st_mode);
202 list[5] = label(fs.status_.st_uid);
203 list[6] = label(fs.status_.st_gid);
204 list[7] = label(
major(fs.status_.st_rdev));
205 list[8] = label(
minor(fs.status_.st_rdev));
206 list[9] = label(fs.status_.st_size);
207 list[10] = label(fs.status_.st_atime);
208 list[11] = label(fs.status_.st_mtime);
209 list[12] = label(fs.status_.st_ctime);