| 1677 | } |
| 1678 | |
| 1679 | static bool posix_socket_identity_from_stat(const struct stat *status, |
| 1680 | posix_socket_identity_t *identity_out) { |
| 1681 | if (!status || !identity_out || !S_ISSOCK(status->st_mode)) { |
| 1682 | return false; |
| 1683 | } |
| 1684 | uint64_t device = (uint64_t)status->st_dev; |
| 1685 | uint64_t inode = (uint64_t)status->st_ino; |
| 1686 | int64_t ctime_seconds = 0; |
| 1687 | uint32_t ctime_nanoseconds = 0; |
| 1688 | if ((dev_t)device != status->st_dev || (ino_t)inode != status->st_ino || |
| 1689 | !posix_stat_ctime(status, &ctime_seconds, &ctime_nanoseconds)) { |
| 1690 | return false; |
| 1691 | } |
| 1692 | identity_out->device = status->st_dev; |
| 1693 | identity_out->inode = status->st_ino; |
| 1694 | identity_out->ctime_seconds = ctime_seconds; |
| 1695 | identity_out->ctime_nanoseconds = ctime_nanoseconds; |
| 1696 | return true; |
| 1697 | } |
| 1698 | |
| 1699 | static bool posix_socket_identity_equal(const posix_socket_identity_t *left, |
| 1700 | const posix_socket_identity_t *right) { |
no test coverage detected