@@ -64,13 +64,13 @@ var ulimitNameMapping = map[string]int{
6464
6565// ParseUlimit parses and returns a Ulimit from the specified string.
6666func ParseUlimit (val string ) (* Ulimit , error ) {
67- parts := strings .SplitN (val , "=" , 2 )
68- if len ( parts ) != 2 {
67+ name , val , ok := strings .Cut (val , "=" )
68+ if ! ok {
6969 return nil , fmt .Errorf ("invalid ulimit argument: %s" , val )
7070 }
7171
72- if _ , exists := ulimitNameMapping [parts [ 0 ] ]; ! exists {
73- return nil , fmt .Errorf ("invalid ulimit type: %s" , parts [ 0 ] )
72+ if _ , exists := ulimitNameMapping [name ]; ! exists {
73+ return nil , fmt .Errorf ("invalid ulimit type: %s" , name )
7474 }
7575
7676 var (
@@ -79,21 +79,19 @@ func ParseUlimit(val string) (*Ulimit, error) {
7979 temp int64
8080 err error
8181 )
82- switch limitVals := strings .Split ( parts [ 1 ] , ":" ); len ( limitVals ) {
83- case 2 :
84- temp , err = strconv .ParseInt (limitVals [ 1 ] , 10 , 64 )
82+ switch softStr , hardStr , ok := strings .Cut ( val , ":" ); ok {
83+ case true :
84+ temp , err = strconv .ParseInt (hardStr , 10 , 64 )
8585 if err != nil {
8686 return nil , err
8787 }
8888 hard = & temp
8989 fallthrough
90- case 1 :
91- soft , err = strconv .ParseInt (limitVals [ 0 ] , 10 , 64 )
90+ case false :
91+ soft , err = strconv .ParseInt (softStr , 10 , 64 )
9292 if err != nil {
9393 return nil , err
9494 }
95- default :
96- return nil , fmt .Errorf ("too many limit value arguments - %s, can only have up to two, `soft[:hard]`" , parts [1 ])
9795 }
9896
9997 if * hard != - 1 {
@@ -105,7 +103,7 @@ func ParseUlimit(val string) (*Ulimit, error) {
105103 }
106104 }
107105
108- return & Ulimit {Name : parts [ 0 ] , Soft : soft , Hard : * hard }, nil
106+ return & Ulimit {Name : name , Soft : soft , Hard : * hard }, nil
109107}
110108
111109// GetRlimit returns the RLimit corresponding to Ulimit.
0 commit comments