package stdlib

import (
	
	
	
	
	
)

var errRestricted = errors.New("restricted")

// osExit invokes panic instead of exit.
func osExit( int) { panic("os.Exit(" + strconv.Itoa() + ")") }

// osFindProcess returns os.FindProcess, except for self process.
func osFindProcess( int) (*os.Process, error) {
	if  == os.Getpid() {
		return nil, errRestricted
	}
	return os.FindProcess()
}

// The following functions call Panic instead of Fatal to avoid exit.
func logFatal( ...interface{})            { log.Panic(...) }
func logFatalf( string,  ...interface{}) { log.Panicf(, ...) }
func logFatalln( ...interface{})          { log.Panicln(...) }

type logLogger struct {
	l *log.Logger
}

// logNew Returns a wrapped logger.
func logNew( io.Writer,  string,  int) *logLogger {
	return &logLogger{log.New(, , )}
}

// The following methods call Panic instead of Fatal to avoid exit.
func ( *logLogger) ( ...interface{})            { .l.Panic(...) }
func ( *logLogger) ( string,  ...interface{}) { .l.Panicf(, ...) }
func ( *logLogger) ( ...interface{})          { .l.Panicln(...) }

// The following methods just forward to wrapped logger.
func ( *logLogger) () int                        { return .l.Flags() }
func ( *logLogger) ( int,  string) error      { return .l.Output(, ) }
func ( *logLogger) ( ...interface{})            { .l.Panic(...) }
func ( *logLogger) ( string,  ...interface{}) { .l.Panicf(, ...) }
func ( *logLogger) ( ...interface{})          { .l.Panicln(...) }
func ( *logLogger) () string                    { return .l.Prefix() }
func ( *logLogger) ( ...interface{})            { .l.Print(...) }
func ( *logLogger) ( string,  ...interface{}) { .l.Printf(, ...) }
func ( *logLogger) ( ...interface{})          { .l.Println(...) }
func ( *logLogger) ( int)                 { .l.SetFlags() }
func ( *logLogger) ( io.Writer)             { .l.SetOutput() }
func ( *logLogger) () io.Writer                 { return .l.Writer() }