@@ -52,7 +52,6 @@ func OpenString(ctx context.Context, l *State) (int, error) {
5252 "rep" : stringRepeat ,
5353 "reverse" : stringReverse ,
5454 "sub" : stringSub ,
55- "unpack" : stringUnpack ,
5655 "upper" : stringUpper ,
5756 })
5857
@@ -1084,69 +1083,6 @@ func packInteger(b []byte, x uint64, bigEndian bool) {
10841083 }
10851084}
10861085
1087- func stringUnpack (ctx context.Context , l * State ) (int , error ) {
1088- format , err := CheckString (l , 1 )
1089- if err != nil {
1090- return 0 , err
1091- }
1092- data , err := CheckString (l , 2 )
1093- if err != nil {
1094- return 0 , err
1095- }
1096- sctx := l .StringContext (2 )
1097- posArg := int64 (1 )
1098- if ! l .IsNoneOrNil (3 ) {
1099- posArg , err = CheckInteger (l , 3 )
1100- if err != nil {
1101- return 0 , err
1102- }
1103- }
1104- pos , posInBounds := stringIndexArg (posArg , len (data ))
1105- if ! posInBounds {
1106- return 0 , NewArgError (l , 3 , "initial position out of string" )
1107- }
1108-
1109- p := newPackParser (format )
1110- resultCount := 0
1111- for {
1112- opt , size , pad , _ , err := p .next (pos )
1113- if err == io .EOF {
1114- break
1115- }
1116- if err != nil {
1117- return 0 , NewArgError (l , 1 , err .Error ())
1118- }
1119- if pad + size > len (data )- pos {
1120- return 0 , NewArgError (l , 2 , "data string too short" )
1121- }
1122- if ! l .CheckStack (2 ) {
1123- return 0 , fmt .Errorf ("%sstack overflow (too many results)" , Where (l , 1 ))
1124- }
1125-
1126- pos += pad
1127- resultCount ++
1128- // TODO(now)
1129- switch opt {
1130- case 'c' :
1131- l .PushStringContext (data [pos :pos + size ], sctx )
1132- pos += size
1133- case 'z' :
1134- n := strings .IndexByte (data [pos :], 0 )
1135- if n == - 1 {
1136- return 0 , NewArgError (l , 2 , "unfinished string for format 'z'" )
1137- }
1138- l .PushStringContext (data [pos :pos + n ], sctx )
1139- pos += n + 1
1140- default :
1141- // Padding.
1142- pos += size
1143- }
1144- }
1145-
1146- l .PushInteger (int64 (pos ) + 1 )
1147- return resultCount + 1 , nil
1148- }
1149-
11501086const isBigEndianNative = runtime .GOARCH == "armbe" ||
11511087 runtime .GOARCH == "arm64be" ||
11521088 runtime .GOARCH == "m68k" ||
0 commit comments