github.com/traefik/yaegi@v0.15.1/stdlib/unrestricted/unrestricted.go (about)

     1  // Package unrestricted provides the original version of standard library symbols which may cause the interpreter process to exit.
     2  package unrestricted
     3  
     4  import (
     5  	"log"
     6  	"os"
     7  	"os/exec"
     8  	"reflect"
     9  )
    10  
    11  // Symbols stores the map of syscall package symbols.
    12  var Symbols = map[string]map[string]reflect.Value{}
    13  
    14  func init() {
    15  	Symbols["os/os"] = map[string]reflect.Value{
    16  		"Exit":        reflect.ValueOf(os.Exit),
    17  		"FindProcess": reflect.ValueOf(os.FindProcess),
    18  	}
    19  
    20  	Symbols["os/exec/exec"] = map[string]reflect.Value{
    21  		"Command":        reflect.ValueOf(exec.Command),
    22  		"CommandContext": reflect.ValueOf(exec.CommandContext),
    23  		"ErrNotFound":    reflect.ValueOf(&exec.ErrNotFound).Elem(),
    24  		"LookPath":       reflect.ValueOf(exec.LookPath),
    25  		"Cmd":            reflect.ValueOf((*exec.Cmd)(nil)),
    26  		"Error":          reflect.ValueOf((*exec.Error)(nil)),
    27  		"ExitError":      reflect.ValueOf((*exec.ExitError)(nil)),
    28  	}
    29  
    30  	Symbols["log/log"] = map[string]reflect.Value{
    31  		"Fatal":   reflect.ValueOf(log.Fatal),
    32  		"Fatalf":  reflect.ValueOf(log.Fatalf),
    33  		"Fatalln": reflect.ValueOf(log.Fatalln),
    34  		"New":     reflect.ValueOf(log.New),
    35  		"Logger":  reflect.ValueOf((*log.Logger)(nil)),
    36  	}
    37  
    38  	Symbols["github.com/traefik/yaegi/stdlib/unrestricted/unrestricted"] = map[string]reflect.Value{
    39  		"Symbols": reflect.ValueOf(Symbols),
    40  	}
    41  }
    42  
    43  //go:generate ../../internal/cmd/extract/extract -include=^Exec,Exit,ForkExec,Kill,Ptrace,Reboot,Shutdown,StartProcess,Syscall syscall