[clang] [clang-format] Fix path expansion inside git-clang-format.bat (PR #114078)

via cfe-commits cfe-commits at lists.llvm.org
Tue Oct 29 09:07:49 PDT 2024


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang-format

Author: Nagy-Egri Máté Ferenc (MathiasMagnus)

<details>
<summary>Changes</summary>

The trampoline script used on Windows (due to the absence of shebang support) doesn't properly expand the path to the Python script, as it leaves out the drive letter.

Functionally equivalent reproducer in action
```
PS C:\Users\mate> gc (gcm git-clang-formatish.bat).Source
@<!-- -->ECHO OFF
echo "%~pn0" %*
PS C:\Users\mate> git-clang-formatish
"\Users\mate\git-clang-formatish"
```

Adding `d` to the variable modifiers [as per the docs](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/for) the drive letter is added. Even in the magical cases when it works.

(I couldn't reproduce, but I suspect it's only tested from some bash/cygwin variant, where the path becomes `/c/Program Files/...`, but the drive letter is needed. Without it, I also observed cases when used via `git clang-format` (without the inital dash) it tries to infer the drive letter based on the current working directory. In that case it fails to find `D:\Program Files\LLVM\bin\clang-format.exe`, which naturally fails, because `Program Files` is on `C:`)

---
Full diff: https://github.com/llvm/llvm-project/pull/114078.diff


1 Files Affected:

- (modified) clang/tools/clang-format/git-clang-format.bat (+1-1) 


``````````diff
diff --git a/clang/tools/clang-format/git-clang-format.bat b/clang/tools/clang-format/git-clang-format.bat
index 19c82d8a04132b..a40276e63c5848 100644
--- a/clang/tools/clang-format/git-clang-format.bat
+++ b/clang/tools/clang-format/git-clang-format.bat
@@ -1 +1 @@
-py -3 "%~pn0" %*
+py -3 "%~dpn0" %*

``````````

</details>


https://github.com/llvm/llvm-project/pull/114078


More information about the cfe-commits mailing list