MCPcopy Create free account
hub / github.com/danoon2/Boxedwine / utimesat64

Method utimesat64

source/kernel/kprocess.cpp:2494–2531  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2492}
2493
2494U32 KProcess::utimesat64(FD dirfd, BString path, U32 times, U32 flags) {
2495 BString dir;
2496 U32 result = 0;
2497
2498 if (path.charAt(0) != '/')
2499 result = getCurrentDirectoryFromDirFD(dirfd, dir);
2500
2501 if (result)
2502 return result;
2503 std::shared_ptr<FsNode> node = Fs::getNodeFromLocalPath(dir, path, (flags & 0x100) == 0);
2504 if (!node) {
2505 return -K_ENOENT;
2506 }
2507 U64 lastAccessTime = 0;
2508 U32 lastAccessTimeNano = 0;
2509 U64 lastModifiedTime = 0;
2510 U32 lastModifiedTimeNano = 0;
2511
2512 if (times) {
2513 lastAccessTime = memory->readq(times);
2514 lastAccessTimeNano = memory->readd(times + 8);
2515 lastModifiedTime = memory->readq(times + 12);
2516 lastModifiedTimeNano = memory->readd(times + 20);
2517 }
2518 if (lastAccessTimeNano != K_UTIME_OMIT) {
2519 if (lastAccessTimeNano == K_UTIME_NOW) {
2520 lastAccessTime = time(nullptr);
2521 lastAccessTimeNano = 0;
2522 }
2523 }
2524 if (lastModifiedTimeNano != K_UTIME_OMIT) {
2525 if (lastModifiedTimeNano == K_UTIME_NOW) {
2526 lastModifiedTime = (U32)time(nullptr);
2527 lastModifiedTimeNano = 0;
2528 }
2529 }
2530 return node->setTimes(lastAccessTime, lastAccessTimeNano, lastModifiedTime, lastModifiedTimeNano);
2531}
2532
2533U32 KProcess::timerfd_create(U32 clockid, U32 flags) {
2534 std::shared_ptr<KTimer> o = std::make_shared<KTimer>();

Callers

nothing calls this directly

Calls 4

charAtMethod · 0.80
readqMethod · 0.80
readdMethod · 0.45
setTimesMethod · 0.45

Tested by

no test coverage detected