Skip to content

Commit 6d5473b

Browse files
committed
Remove incomplete string.unpack function
Updates #79
1 parent 938ba2f commit 6d5473b

File tree

1 file changed

+0
-64
lines changed

1 file changed

+0
-64
lines changed

internal/lua/stringlib.go

Lines changed: 0 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -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-
11501086
const isBigEndianNative = runtime.GOARCH == "armbe" ||
11511087
runtime.GOARCH == "arm64be" ||
11521088
runtime.GOARCH == "m68k" ||

0 commit comments

Comments
 (0)