+++ /dev/null
-// Copyright 2017 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build windows
-
-package main
-
-import (
- "context"
- "log"
- "os"
- "syscall"
- "unsafe"
-)
-
-const (
- envSeparator = ";"
- homeKey = "USERPROFILE"
- lineEnding = "/r/n"
- pathVar = "$env:Path"
-)
-
-var installPath = `c:\go`
-
-func isWindowsXP() bool {
- v, err := syscall.GetVersion()
- if err != nil {
- log.Fatalf("GetVersion failed: %v", err)
- }
- major := byte(v)
- return major < 6
-}
-
-func whichGo(ctx context.Context) (string, error) {
- return findGo(ctx, "where")
-}
-
-// currentShell reports the current shell.
-// It might be "powershell.exe", "cmd.exe" or any of the *nix shells.
-//
-// Returns empty string if the shell is unknown.
-func currentShell() string {
- shell := os.Getenv("SHELL")
- if shell != "" {
- return shell
- }
-
- pid := os.Getppid()
- pe, err := getProcessEntry(pid)
- if err != nil {
- verbosef("getting shell from process entry failed: %v", err)
- return ""
- }
-
- return syscall.UTF16ToString(pe.ExeFile[:])
-}
-
-func getProcessEntry(pid int) (*syscall.ProcessEntry32, error) {
- // From https://go.googlesource.com/go/+/go1.8.3/src/syscall/syscall_windows.go#941
- snapshot, err := syscall.CreateToolhelp32Snapshot(syscall.TH32CS_SNAPPROCESS, 0)
- if err != nil {
- return nil, err
- }
- defer syscall.CloseHandle(snapshot)
-
- var procEntry syscall.ProcessEntry32
- procEntry.Size = uint32(unsafe.Sizeof(procEntry))
- if err = syscall.Process32First(snapshot, &procEntry); err != nil {
- return nil, err
- }
-
- for {
- if procEntry.ProcessID == uint32(pid) {
- return &procEntry, nil
- }
-
- if err := syscall.Process32Next(snapshot, &procEntry); err != nil {
- return nil, err
- }
- }
-}
-
-func persistEnvChangesForSession() error {
- return nil
-}