github.com/NeowayLabs/nash@v0.2.2-0.20200127205349-a227041ffd50/internal/sh/rfork_plan9.go (about)

     1  // +build plan9
     2  
     3  package sh
     4  
     5  import (
     6  	"fmt"
     7  	"syscall"
     8  )
     9  
    10  func (sh *Shell) executeRfork(rfork *RforkNode) error {
    11  	return newError("Sorry. Plan9 rfork not implemented yet.")
    12  }
    13  
    14  // getflags converts to Plan9 flags
    15  func getflags(flags string) (uintptr, error) {
    16  	var (
    17  		pflags uintptr
    18  	)
    19  
    20  	for i := 0; i < len(flags); i++ {
    21  		switch flags[i] {
    22  		case 'n':
    23  			pflags |= syscall.RFNAMEG
    24  		case 'N':
    25  			pflags |= syscall.RFCNAMEG
    26  		case 'e':
    27  			pflags |= syscall.RFENVG
    28  		case 'E':
    29  			pflags |= syscall.RFCENVG
    30  		case 's':
    31  			pflags |= syscall.RFNOTEG
    32  		case 'f':
    33  			pflags |= syscall.RFFDG
    34  		case 'F':
    35  			pflags |= syscall.RFCFDG
    36  		default:
    37  			return 0, fmt.Errorf("Wrong rfork flag: %c", flags[i])
    38  		}
    39  	}
    40  
    41  	if pflags == 0 {
    42  		return 0, fmt.Errorf("Rfork requires some flag")
    43  	}
    44  
    45  	return pflags, nil
    46  }