in fs/httpfs/httpfs_v2.cpp [215:233]
int fstat(struct stat* buf) override {
m_etimeout = false;
if (!m_stat_gettime || photon::now - m_stat_gettime >= m_stat_timeout ||
!m_authorized) {
auto ret = refresh_stat();
if (ret < 0) return ret;
}
if (m_etimeout) return -1;
if (!m_authorized) {
errno = EACCES;
return -1;
}
if (m_exists && buf) {
memcpy(buf, &m_stat, sizeof(struct stat));
} else if (!m_exists) {
errno = ENOENT;
}
return m_exists ? 0 : -1;
}