Skip to content

Fix references to Windows drive letter#54

Closed
raneashay wants to merge 3 commits intomicrosoft:mainfrom
raneashay:ashay/fix-windows-drive-refs
Closed

Fix references to Windows drive letter#54
raneashay wants to merge 3 commits intomicrosoft:mainfrom
raneashay:ashay/fix-windows-drive-refs

Conversation

@raneashay
Copy link
Copy Markdown

Prior to this patch, both the build and the tests included several
references to C:/. References in the build assumed that Windows is
installed on C:/, which causes the build to fail when Windows is
installed on a different drive. The references among tests assumed that
the C:/ drive exists, which although mostly correct, is not guaranteed,
making the tests fragile.

This patch fixes the build references to use the SYSTEMROOT
environment variable, which points to the Windows installation path,
instead of hardcoded references to C:/Windows. This patch also updates
tests to not use the presence of C:/ to detect Windows (instead relying
on the output of uname -s) and to not assume that every Windows
installation has a C:/.

Prior to this patch, both the build and the tests included several
references to C:/.  References in the build assumed that Windows is
installed on C:/, which causes the build to fail when Windows is
installed on a different drive.  The references among tests assumed that
the C:/ drive exists, which although mostly correct, is not guaranteed,
making the tests fragile.

This patch fixes the build references to use the `SYSTEMROOT`
environment variable, which points to the Windows installation path,
instead of hardcoded references to C:/Windows.  This patch also updates
tests to not use the presence of C:/ to detect Windows (instead relying
on the output of `uname -s`) and to not assume that every Windows
installation has a C:/.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this C:/ prefix need to be removed as well?

if [[ -z ${CMD+x} ]]; then
CMD="$DRIVEPREFIX/c/windows/system32/cmd.exe"
# Use SYSTEMROOT to find Windows directory regardless of drive letter
systemroot_unix="$($PATHTOOL -u "$SYSTEMROOT")"
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The variable name systemroot_unix seems a bit odd (IMHO) for the Windows case but that's ok

1. Removed reference to c:/ in fixpath.sh
2. Renamed `systemroot_unix` to `systemroot`
@raneashay
Copy link
Copy Markdown
Author

Thanks Saint! Fixed both issues in the most recent commit.

@raneashay
Copy link
Copy Markdown
Author

If SYSTEMROOT doesn't exist, fail early because it's not a trivial fix.

DRIVEPREFIX="${winroot%/c/}"
drive_letter="${SYSTEMROOT%%:*}"
drive_letter_lower="$(echo "$drive_letter" | tr 'A-Z' 'a-z')"
systemroot="$($PATHTOOL -u "$SYSTEMROOT")"
Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use a different variable name so that there's no confusion with the OS-set env var.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use braces when referencing env vars wherever possible.

@raneashay raneashay closed this Mar 31, 2026
@raneashay raneashay deleted the ashay/fix-windows-drive-refs branch March 31, 2026 22:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants