diff options
author | Carsten Haitzler (Rasterman) <raster@rasterman.com> | 2020-09-29 10:30:45 +0100 |
---|---|---|
committer | Carsten Haitzler (Rasterman) <raster@rasterman.com> | 2020-09-29 10:32:02 +0100 |
commit | 3d351b98c24e617b13f120605dd8d6c9c7892e4e (patch) | |
tree | 2ffa3f56b552dd5df71b2e361b6c8fcdc20b2d05 | |
parent | 85a0af8281ffd8fd28f0e96657da6e0550225ca8 (diff) | |
download | efl-3d351b98c24e617b13f120605dd8d6c9c7892e4e.tar.gz |
efreet - windows - still call stat but skip lstat/readlink
now stat is filled with data on windows
@fix
-rw-r--r-- | src/lib/efreet/efreet_cache.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/lib/efreet/efreet_cache.c b/src/lib/efreet/efreet_cache.c index a8eb425b6a..a801081ce9 100644 --- a/src/lib/efreet/efreet_cache.c +++ b/src/lib/efreet/efreet_cache.c @@ -627,22 +627,24 @@ EAPI Eina_Bool efreet_file_cache_fill(const char *file, Efreet_Cache_Check *check) { struct stat st; - ssize_t size = 0; - char link[PATH_MAX]; memset(check, 0, sizeof(Efreet_Cache_Check)); -#ifndef _WIN32 +#ifdef _WIN32 + if (stat(file, &st) != 0) return EINA_FALSE; +#else + ssize_t size = 0; + if (lstat(file, &st) != 0) return EINA_FALSE; if (S_ISLNK(st.st_mode)) { + char link[PATH_MAX]; + size = readlink(file, link, sizeof(link)); if ((size > 0) && ((size_t)size >= sizeof(link))) return EINA_FALSE; if (stat(file, &st) != 0) return EINA_FALSE; } if (size > 0) sha1((unsigned char *)link, size, check->link_sha1); - else #endif - memset(check->link_sha1, 0, sizeof(check->link_sha1)); check->uid = st.st_uid; check->gid = st.st_gid; check->size = st.st_size; |