Commit 99526219 authored by Denis Krjuchkov's avatar Denis Krjuchkov

UpdateIO.cxx: use file system API, log in UTF-8

parent d818b618
...@@ -36,12 +36,15 @@ stat_directory(const Directory *directory, struct stat *st) ...@@ -36,12 +36,15 @@ stat_directory(const Directory *directory, struct stat *st)
if (path_fs.IsNull()) if (path_fs.IsNull())
return -1; return -1;
int ret = stat(path_fs.c_str(), st); if (!StatFile(path_fs, *st)) {
if (ret < 0) int error = errno;
const std::string path_utf8 = path_fs.ToUTF8();
g_warning("Failed to stat %s: %s", g_warning("Failed to stat %s: %s",
path_fs.c_str(), g_strerror(errno)); path_utf8.c_str(), g_strerror(error));
return -1;
}
return ret; return 0;
} }
int int
...@@ -52,12 +55,15 @@ stat_directory_child(const Directory *parent, const char *name, ...@@ -52,12 +55,15 @@ stat_directory_child(const Directory *parent, const char *name,
if (path_fs.IsNull()) if (path_fs.IsNull())
return -1; return -1;
int ret = stat(path_fs.c_str(), st); if (!StatFile(path_fs, *st)) {
if (ret < 0) int error = errno;
const std::string path_utf8 = path_fs.ToUTF8();
g_warning("Failed to stat %s: %s", g_warning("Failed to stat %s: %s",
path_fs.c_str(), g_strerror(errno)); path_utf8.c_str(), g_strerror(error));
return -1;
}
return ret; return 0;
} }
bool bool
...@@ -82,8 +88,7 @@ directory_child_is_regular(const Directory *directory, ...@@ -82,8 +88,7 @@ directory_child_is_regular(const Directory *directory,
if (path_fs.IsNull()) if (path_fs.IsNull())
return false; return false;
struct stat st; return FileExists(path_fs);
return stat(path_fs.c_str(), &st) == 0 && S_ISREG(st.st_mode);
} }
bool bool
...@@ -91,7 +96,7 @@ directory_child_access(const Directory *directory, ...@@ -91,7 +96,7 @@ directory_child_access(const Directory *directory,
const char *name, int mode) const char *name, int mode)
{ {
#ifdef WIN32 #ifdef WIN32
/* access() is useless on WIN32 */ /* CheckAccess() is useless on WIN32 */
(void)directory; (void)directory;
(void)name; (void)name;
(void)mode; (void)mode;
...@@ -103,6 +108,6 @@ directory_child_access(const Directory *directory, ...@@ -103,6 +108,6 @@ directory_child_access(const Directory *directory,
problem */ problem */
return true; return true;
return access(path.c_str(), mode) == 0 || errno != EACCES; return CheckAccess(path, mode) || errno != EACCES;
#endif #endif
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment