OSDN Git Service

new repo
[bytom/vapor.git] / vendor / golang.org / x / sys / unix / openbsd_pledge.go
1 // Copyright 2016 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 // +build openbsd
6 // +build 386 amd64 arm
7
8 package unix
9
10 import (
11         "syscall"
12         "unsafe"
13 )
14
15 const (
16         SYS_PLEDGE = 108
17 )
18
19 // Pledge implements the pledge syscall. For more information see pledge(2).
20 func Pledge(promises string, paths []string) error {
21         promisesPtr, err := syscall.BytePtrFromString(promises)
22         if err != nil {
23                 return err
24         }
25         promisesUnsafe, pathsUnsafe := unsafe.Pointer(promisesPtr), unsafe.Pointer(nil)
26         if paths != nil {
27                 var pathsPtr []*byte
28                 if pathsPtr, err = syscall.SlicePtrFromStrings(paths); err != nil {
29                         return err
30                 }
31                 pathsUnsafe = unsafe.Pointer(&pathsPtr[0])
32         }
33         _, _, e := syscall.Syscall(SYS_PLEDGE, uintptr(promisesUnsafe), uintptr(pathsUnsafe), 0)
34         if e != 0 {
35                 return e
36         }
37         return nil
38 }