| // 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. |
| |
| package os |
| |
| import "syscall" |
| |
| var executablePath string // set by sysauxv in ../runtime/os3_solaris.go |
| |
| var initCwd, initCwdErr = Getwd() |
| |
| func executable() (string, error) { |
| path := executablePath |
| if len(path) == 0 { |
| path, err := syscall.Getexecname() |
| if err != nil { |
| return path, err |
| } |
| } |
| if len(path) > 0 && path[0] != '/' { |
| if initCwdErr != nil { |
| return path, initCwdErr |
| } |
| if len(path) > 2 && path[0:2] == "./" { |
| // skip "./" |
| path = path[2:] |
| } |
| return initCwd + "/" + path, nil |
| } |
| return path, nil |
| } |