mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			49 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
// Copyright 2012 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 syscall
 | 
						|
 | 
						|
import "unsafe"
 | 
						|
 | 
						|
func (ts *Timestruc) Unix() (sec int64, nsec int64) {
 | 
						|
	return int64(ts.Sec), int64(ts.Nsec)
 | 
						|
}
 | 
						|
 | 
						|
func (ts *Timestruc) Nano() int64 {
 | 
						|
	return int64(ts.Sec)*1e9 + int64(ts.Nsec)
 | 
						|
}
 | 
						|
 | 
						|
func direntIno(buf []byte) (uint64, bool) {
 | 
						|
	return readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino))
 | 
						|
}
 | 
						|
 | 
						|
func direntReclen(buf []byte) (uint64, bool) {
 | 
						|
	return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))
 | 
						|
}
 | 
						|
 | 
						|
func direntNamlen(buf []byte) (uint64, bool) {
 | 
						|
	reclen, ok := direntReclen(buf)
 | 
						|
	if !ok {
 | 
						|
		return 0, false
 | 
						|
	}
 | 
						|
	return reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true
 | 
						|
}
 | 
						|
 | 
						|
//sysnb getexecname() (execname unsafe.Pointer, err error)
 | 
						|
//getexecname() *byte
 | 
						|
 | 
						|
func Getexecname() (path string, err error) {
 | 
						|
	ptr, err := getexecname()
 | 
						|
	if err != nil {
 | 
						|
		return "", err
 | 
						|
	}
 | 
						|
	bytes := (*[1 << 29]byte)(ptr)[:]
 | 
						|
	for i, b := range bytes {
 | 
						|
		if b == 0 {
 | 
						|
			return string(bytes[:i]), nil
 | 
						|
		}
 | 
						|
	}
 | 
						|
	panic("unreachable")
 | 
						|
}
 |