src.elv.sh@v0.21.0-dev.0.20240515223629-06979efb9a2a/pkg/mods/unix/rlim_t_int64.go (about) 1 //go:build freebsd 2 3 package unix 4 5 import ( 6 "math" 7 "math/big" 8 "strconv" 9 ) 10 11 type rlimT = int64 12 13 var rlimTValid = "number between 0 and " + strconv.FormatInt(math.MaxInt64, 10) 14 15 const maxInt = int64(^uint(0) >> 1) 16 17 func convertRlimT(x int64) any { 18 if x <= maxInt { 19 return int(x) 20 } 21 return big.NewInt(int64(x)) 22 23 } 24 25 func parseRlimT(val any) (int64, bool) { 26 switch val := val.(type) { 27 case int: 28 return int64(val), true 29 case *big.Int: 30 if val.IsInt64() { 31 return val.Int64(), true 32 } 33 case string: 34 num, err := strconv.ParseInt(val, 0, 64) 35 if err == nil { 36 return num, true 37 } 38 } 39 return 0, false 40 }