]> git.ipfire.org Git - thirdparty/ccache.git/commitdiff
C++-ify win32getshell
authorJoel Rosdahl <joel@rosdahl.net>
Mon, 13 Jul 2020 17:51:45 +0000 (19:51 +0200)
committerJoel Rosdahl <joel@rosdahl.net>
Mon, 13 Jul 2020 18:01:12 +0000 (20:01 +0200)
src/execute.cpp

index ec1fd2894e02cd2530e08e66189da19b3e0d1519..85d97e6f9a3d1728f11cc4a706d99ff6687e4124 100644 (file)
@@ -110,23 +110,21 @@ win32argvtos(const char* prefix, const char* const* argv, int* length)
 std::string
 win32getshell(const char* path)
 {
-  char* path_env;
+  const char* path_env = getenv("PATH");
   std::string sh;
-  const char* ext = get_extension(path);
-  if (ext && strcasecmp(ext, ".sh") == 0 && (path_env = getenv("PATH"))) {
-    sh = find_executable_in_path("sh.exe", NULL, path_env);
+  std::string ext = std::string(Util::get_extension(path));
+  if (!ext.empty() && strcasecmp(ext.c_str(), ".sh") == 0 && path_env) {
+    sh = find_executable_in_path("sh.exe", nullptr, path_env);
   }
   if (sh.empty() && getenv("CCACHE_DETECT_SHEBANG")) {
     // Detect shebang.
-    FILE* fp = fopen(path, "r");
+    File fp(path, "r");
     if (fp) {
-      char buf[10];
-      fgets(buf, sizeof(buf), fp);
-      buf[9] = 0;
-      if (str_eq(buf, "#!/bin/sh") && (path_env = getenv("PATH"))) {
+      char buf[10] = {0};
+      fgets(buf, sizeof(buf) - 1, fp.get());
+      if (std::string(buf) == "#!/bin/sh" && path_env) {
         sh = find_executable_in_path("sh.exe", NULL, path_env);
       }
-      fclose(fp);
     }
   }