summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--identify.go21
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