/usr/share/gocode/src/github.com/ErikDubbelboer/gspt/gspt.go is in golang-github-erikdubbelboer-gspt-dev 0.0~git20161002.0.6ce3e9d-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | package gspt
/*
#include "setproctitle.h"
*/
import "C"
import (
"os"
"unsafe"
"strings"
)
const (
// These values must match the return values for spt_init1() used in C.
HaveNone = 0
HaveNative = 1
HaveReplacement = 2
)
var (
HaveSetProcTitle int
)
func init() {
HaveSetProcTitle = int(C.spt_init1());
if HaveSetProcTitle == HaveReplacement {
newArgs := make([]string, len(os.Args))
for i, s := range(os.Args) {
// Use cgo to force go to make copies of the strings.
cs := C.CString(s)
newArgs[i] = C.GoString(cs)
C.free(unsafe.Pointer(cs))
}
os.Args = newArgs
env := os.Environ()
for _, kv := range(env) {
skv := strings.SplitN(kv, "=", 2)
os.Setenv(skv[0], skv[1])
}
argc := C.int(len(os.Args))
arg0 := C.CString(os.Args[0])
defer C.free(unsafe.Pointer(arg0))
C.spt_init2(argc, arg0)
// Restore the original title.
SetProcTitle(os.Args[0])
}
}
func SetProcTitle(title string) {
cs := C.CString(title)
defer C.free(unsafe.Pointer(cs))
C.spt_setproctitle(cs)
}
|