MCPcopy Create free account
hub / github.com/F-Stack/f-stack / freebsd11_cvtstat

Function freebsd11_cvtstat

freebsd/kern/vfs_syscalls.c:2217–2286  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2215 "Error on truncation of device, file or inode number, or link count");
2216
2217int
2218freebsd11_cvtstat(struct stat *st, struct freebsd11_stat *ost)
2219{
2220
2221 ost->st_dev = st->st_dev;
2222 if (ost->st_dev != st->st_dev) {
2223 switch (ino64_trunc_error) {
2224 default:
2225 /*
2226 * Since dev_t is almost raw, don't clamp to the
2227 * maximum for case 2, but ignore the error.
2228 */
2229 break;
2230 case 1:
2231 return (EOVERFLOW);
2232 }
2233 }
2234 ost->st_ino = st->st_ino;
2235 if (ost->st_ino != st->st_ino) {
2236 switch (ino64_trunc_error) {
2237 default:
2238 case 0:
2239 break;
2240 case 1:
2241 return (EOVERFLOW);
2242 case 2:
2243 ost->st_ino = UINT32_MAX;
2244 break;
2245 }
2246 }
2247 ost->st_mode = st->st_mode;
2248 ost->st_nlink = st->st_nlink;
2249 if (ost->st_nlink != st->st_nlink) {
2250 switch (ino64_trunc_error) {
2251 default:
2252 case 0:
2253 break;
2254 case 1:
2255 return (EOVERFLOW);
2256 case 2:
2257 ost->st_nlink = UINT16_MAX;
2258 break;
2259 }
2260 }
2261 ost->st_uid = st->st_uid;
2262 ost->st_gid = st->st_gid;
2263 ost->st_rdev = st->st_rdev;
2264 if (ost->st_rdev != st->st_rdev) {
2265 switch (ino64_trunc_error) {
2266 default:
2267 break;
2268 case 1:
2269 return (EOVERFLOW);
2270 }
2271 }
2272 ost->st_atim = st->st_atim;
2273 ost->st_mtim = st->st_mtim;
2274 ost->st_ctim = st->st_ctim;

Callers 5

freebsd11_fstatFunction · 0.85
freebsd11_statFunction · 0.85
freebsd11_lstatFunction · 0.85
freebsd11_fhstatFunction · 0.85
freebsd11_fstatatFunction · 0.85

Calls 1

bzeroFunction · 0.85

Tested by

no test coverage detected