diff options
| -rw-r--r-- | identify.go | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/identify.go b/identify.go index c27dd51..173e9ac 100644 --- a/identify.go +++ b/identify.go @@ -3,6 +3,7 @@ package filepb import ( "errors" "fmt" + "log" "os" "strings" @@ -16,19 +17,13 @@ var ErrMarshal error = fmt.Errorf("protobuf parse error") // print the protobuf in human form func IdentifyPB(filename string) (string, string, error) { - data, err := os.ReadFile(filename) - if err != nil { - // log.Info("open config file :", err) - return "", "", err - } - var pb *FakeFile pb = new(FakeFile) - if err := pb.Unmarshal(data); err != nil { + if err := pb.loadFromFilename(filename); err != nil { return "", "", err } // log.Info("Identify protobuf file uuid =", pb.Uuid, "version =", pb.Version) - return pb.Uuid, pb.Version, nil + return pb.Version, pb.Uuid, nil } func (pb *FakeFile) loadFromFilename(fullname string) error { @@ -62,17 +57,25 @@ func loadPB(pb proto.Message, fullname string) error { func loadTEXT(pb proto.Message, fullname string) error { var data []byte var err error + log.Printf("loadTEXT() (%s)\n", fullname) if data, err = loadFile(fullname); err != nil { + log.Printf("loadTEXT() (%s) err (%v)\n", fullname, err) return err } // don't even bother with Marshal() if data == nil { + log.Printf("loadTEXT() (%s) err (%v)\n", fullname, ErrEmpty) return ErrEmpty // file is empty } + unmarshalOpts := prototext.UnmarshalOptions{ + DiscardUnknown: true, + } + // Unmarshal() - if err = prototext.Unmarshal(data, pb); err != nil { + if err = unmarshalOpts.Unmarshal(data, pb); err != nil { + log.Printf("loadTEXT() (%s) err (%v)\n", fullname, err) return ErrMarshal } return nil |
