|
a/src/utils/pathut.cpp |
|
b/src/utils/pathut.cpp |
|
... |
|
... |
706 |
{
|
706 |
{
|
707 |
struct stat st;
|
707 |
struct stat st;
|
708 |
if (stat(path.c_str(), &st) < 0)
|
708 |
if (stat(path.c_str(), &st) < 0)
|
709 |
return -1;
|
709 |
return -1;
|
710 |
return (long long)st.st_size;
|
710 |
return (long long)st.st_size;
|
|
|
711 |
}
|
|
|
712 |
|
|
|
713 |
int path_fileprops(const std::string path, struct stat *stp, bool follow)
|
|
|
714 |
{
|
|
|
715 |
if (!stp)
|
|
|
716 |
return -1;
|
|
|
717 |
memset(stp, 0, sizeof(struct stat));
|
|
|
718 |
struct stat mst;
|
|
|
719 |
int ret = follow ? stat(path.c_str(), &mst) : lstat(path.c_str(), &mst);
|
|
|
720 |
if (ret != 0)
|
|
|
721 |
return ret;
|
|
|
722 |
stp->st_size = mst.st_size;
|
|
|
723 |
stp->st_mode = mst.st_mode;
|
|
|
724 |
stp->st_mtime = mst.st_mtime;
|
|
|
725 |
#ifdef _WIN32
|
|
|
726 |
stp->st_ctime = mst.st_mtime;
|
|
|
727 |
#else
|
|
|
728 |
stp->st_ino = mst.st_ino;
|
|
|
729 |
stp->st_dev = mst.st_dev;
|
|
|
730 |
stp->st_ctime = mst.st_ctime;
|
|
|
731 |
#endif
|
|
|
732 |
return 0;
|
711 |
}
|
733 |
}
|
712 |
|
734 |
|
713 |
bool path_exists(const string& path)
|
735 |
bool path_exists(const string& path)
|
714 |
{
|
736 |
{
|
715 |
return access(path.c_str(), 0) == 0;
|
737 |
return access(path.c_str(), 0) == 0;
|