Unify variables for Windows and non-Windows in fish_cache_path ()
authorLuca Bacci <luca.bacci982@gmail.com>
Thu, 29 Dec 2022 17:18:35 +0000 (18:18 +0100)
committerØyvind "pippin" Kolås <pippin@gimp.org>
Tue, 3 Jan 2023 10:33:37 +0000 (10:33 +0000)
babl/babl-cache.c

index 9e5ff969a3a2825f485f83c9da553c06ea93c807..26e7f9c7ae2f6e1b0f99d3c880a8b951166a5954 100644 (file)
@@ -96,33 +96,45 @@ mk_ancestry (const char *path)
 static char *
 fish_cache_path (void)
 {
+  char *path = NULL;
+  char buf[4096];
   BablStat stat_buf;
-  static char path[4096];
 
-  strncpy (path, FALLBACK_CACHE_PATH, 4096);
-  path[sizeof (path) - 1] = '\0';
 #ifndef _WIN32
+
+  strncpy (buf, FALLBACK_CACHE_PATH, 4096);
+  buf[sizeof (buf) - 1] = '\0';
+
   if (getenv ("XDG_CACHE_HOME"))
-    snprintf (path, sizeof (path), "%s/babl/babl-fishes", getenv("XDG_CACHE_HOME"));
+    snprintf (buf, sizeof (buf), "%s/babl/babl-fishes", getenv("XDG_CACHE_HOME"));
   else if (getenv ("HOME"))
-    snprintf (path, sizeof (path), "%s/.cache/babl/babl-fishes", getenv("HOME"));
+    snprintf (buf, sizeof (buf), "%s/.cache/babl/babl-fishes", getenv("HOME"));
+
+  path = babl_strdup (buf);
+
 #else
-{
+
   char win32path[4096];
+
   if (SHGetFolderPathA (NULL, CSIDL_LOCAL_APPDATA, NULL, SHGFP_TYPE_CURRENT, win32path) == S_OK)
-    snprintf (path, sizeof (path), "%s\\%s\\babl-fishes.txt", win32path, BABL_LIBRARY);
+    snprintf (buf, sizeof (buf), "%s\\%s\\babl-fishes.txt", win32path, BABL_LIBRARY);
   else if (getenv ("TEMP"))
-    snprintf (path, sizeof (path), "%s\\babl-fishes.txt", getenv("TEMP"));
-}
+    snprintf (buf, sizeof (buf), "%s\\babl-fishes.txt", getenv("TEMP"));
+
+  path = babl_strdup (buf);
+
 #endif
 
-  if (_babl_stat (path, &stat_buf)==0 && S_ISREG(stat_buf.st_mode))
-    return babl_strdup (path);
+  if (!path)
+    return babl_strdup (FALLBACK_CACHE_PATH);
+
+  if (_babl_stat (path, &stat_buf) == 0 && S_ISREG(stat_buf.st_mode))
+    return path;
 
   if (mk_ancestry (path) != 0)
     return babl_strdup (FALLBACK_CACHE_PATH);
 
-  return babl_strdup (path);
+  return path;
 }
 
 static char *