File tree 1 file changed +23
-1
lines changed
1 file changed +23
-1
lines changed Original file line number Diff line number Diff line change @@ -4,10 +4,10 @@ package marshal
4
4
import (
5
5
"encoding/binary"
6
6
"errors"
7
+ "fmt"
7
8
"github.com/ncw/gpython/py"
8
9
"io"
9
10
"strconv"
10
- "fmt"
11
11
)
12
12
13
13
const (
@@ -56,6 +56,7 @@ func ReadObject(r io.Reader) (obj py.Object, err error) {
56
56
57
57
//flag := code & FLAG_REF
58
58
Type := code &^ FLAG_REF
59
+ fmt .Printf ("Type = %q\n " , Type )
59
60
60
61
switch Type {
61
62
case TYPE_NULL :
@@ -317,3 +318,24 @@ func ReadObject(r io.Reader) (obj py.Object, err error) {
317
318
318
319
return
319
320
}
321
+
322
+ // The header on a .pyc file
323
+ type PycHeader struct {
324
+ Magic uint32
325
+ Timestamp int32
326
+ Length int32
327
+ }
328
+
329
+ // Reads a pyc file
330
+ func ReadPyc (r io.Reader ) (obj py.Object , err error ) {
331
+ var header PycHeader
332
+ if err = binary .Read (r , binary .LittleEndian , & header ); err != nil {
333
+ return
334
+ }
335
+ // FIXME do something with timestamp & lengt?
336
+ if header .Magic >> 16 != 0x0a0d {
337
+ return nil , errors .New ("Bad magic in .pyc file" )
338
+ }
339
+ fmt .Printf ("header = %v\n " , header )
340
+ return ReadObject (r )
341
+ }
You can’t perform that action at this time.
0 commit comments