For now this is a stub for everything but linux, which is a slightly
modified copy of the official implementation.

Should address #1778.
Этот коммит содержится в:
Federico G. Schwindt 2021-08-31 11:45:12 +01:00 коммит произвёл Ron Evans
родитель 97d48e5c02
коммит f0936ffccb
2 изменённых файлов: 34 добавлений и 0 удалений

9
src/os/executable_other.go Обычный файл
Просмотреть файл

@ -0,0 +1,9 @@
// +build !linux
package os
import "errors"
func Executable() (string, error) {
return "", errors.New("Executable not implemented")
}

25
src/os/executable_procfs.go Обычный файл
Просмотреть файл

@ -0,0 +1,25 @@
// The following is copied from Go 1.17 official implementation.
// Copyright 2016 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 linux
package os
func Executable() (string, error) {
path, err := Readlink("/proc/self/exe")
// When the executable has been deleted then Readlink returns a
// path appended with " (deleted)".
return stringsTrimSuffix(path, " (deleted)"), err
}
// stringsTrimSuffix is the same as strings.TrimSuffix.
func stringsTrimSuffix(s, suffix string) string {
if len(s) >= len(suffix) && s[len(s)-len(suffix):] == suffix {
return s[:len(s)-len(suffix)]
}
return s
}