mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 10:52:25 +00:00
common/reexec: move unused method
This commit is contained in:
parent
d4e5310d34
commit
f8d21954d1
3 changed files with 30 additions and 23 deletions
|
|
@ -12,8 +12,6 @@ package reexec
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
|
||||||
"path/filepath"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var registeredInitializers = make(map[string]func())
|
var registeredInitializers = make(map[string]func())
|
||||||
|
|
@ -23,34 +21,15 @@ func Register(name string, initializer func()) {
|
||||||
if _, exists := registeredInitializers[name]; exists {
|
if _, exists := registeredInitializers[name]; exists {
|
||||||
panic(fmt.Sprintf("reexec func already registered under name %q", name))
|
panic(fmt.Sprintf("reexec func already registered under name %q", name))
|
||||||
}
|
}
|
||||||
|
|
||||||
registeredInitializers[name] = initializer
|
registeredInitializers[name] = initializer
|
||||||
}
|
}
|
||||||
|
|
||||||
// Init is called as the first part of the exec process and returns true if an
|
// Init is called as the first part of the exec process and returns true if an
|
||||||
// initialization function was called.
|
// initialization function was called.
|
||||||
func Init() bool {
|
func Init() bool {
|
||||||
initializer, exists := registeredInitializers[os.Args[0]]
|
if initializer, ok := registeredInitializers[os.Args[0]]; ok {
|
||||||
if exists {
|
|
||||||
initializer()
|
initializer()
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
func naiveSelf() string {
|
|
||||||
name := os.Args[0]
|
|
||||||
if filepath.Base(name) == name {
|
|
||||||
if lp, err := exec.LookPath(name); err == nil {
|
|
||||||
return lp
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// handle conversion of relative paths to absolute
|
|
||||||
if absName, err := filepath.Abs(name); err == nil {
|
|
||||||
return absName
|
|
||||||
}
|
|
||||||
// if we couldn't get absolute name, return original
|
|
||||||
// (NOTE: Go only errors on Abs() if os.Getwd fails)
|
|
||||||
return name
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,8 @@
|
||||||
|
// This file originates from Docker/Moby,
|
||||||
|
// https://github.com/moby/moby/blob/master/pkg/reexec/
|
||||||
|
// Licensed under AGPL V2: https://github.com/moby/moby/blob/master/LICENSE
|
||||||
|
// Copyright 2013-2018 Docker, Inc.
|
||||||
|
|
||||||
//go:build linux
|
//go:build linux
|
||||||
|
|
||||||
package reexec
|
package reexec
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,32 @@
|
||||||
|
// This file originates from Docker/Moby,
|
||||||
|
// https://github.com/moby/moby/blob/master/pkg/reexec/
|
||||||
|
// Licensed under AGPL V2: https://github.com/moby/moby/blob/master/LICENSE
|
||||||
|
// Copyright 2013-2018 Docker, Inc.
|
||||||
|
|
||||||
//go:build !linux
|
//go:build !linux
|
||||||
|
|
||||||
package reexec
|
package reexec
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"os/exec"
|
||||||
|
"path/filepath"
|
||||||
|
)
|
||||||
|
|
||||||
// Self returns the path to the current process's binary.
|
// Self returns the path to the current process's binary.
|
||||||
// Uses os.Args[0].
|
// Uses os.Args[0].
|
||||||
func Self() string {
|
func Self() string {
|
||||||
return naiveSelf()
|
name := os.Args[0]
|
||||||
|
if filepath.Base(name) == name {
|
||||||
|
if lp, err := exec.LookPath(name); err == nil {
|
||||||
|
return lp
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// handle conversion of relative paths to absolute
|
||||||
|
if absName, err := filepath.Abs(name); err == nil {
|
||||||
|
return absName
|
||||||
|
}
|
||||||
|
// if we couldn't get absolute name, return original
|
||||||
|
// (NOTE: Go only errors on Abs() if os.Getwd fails)
|
||||||
|
return name
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue