Check if a path exists and is executable. * On Windows, stat() doesn't set S_IXUSR — just check existence. */
| 870 | /* Check if a path exists and is executable. |
| 871 | * On Windows, stat() doesn't set S_IXUSR — just check existence. */ |
| 872 | static bool is_executable(const char *path) { |
| 873 | struct stat st; |
| 874 | #ifdef _WIN32 |
| 875 | return stat(path, &st) == 0; |
| 876 | #else |
| 877 | return stat(path, &st) == 0 && (st.st_mode & S_IXUSR); |
| 878 | #endif |
| 879 | } |
| 880 | |
| 881 | /* Search for an executable named `name` in the PATH environment variable. |
| 882 | * Returns the full path in `out` (max out_sz) if found, else empty string. */ |
no test coverage detected