aboutsummaryrefslogtreecommitdiff
path: root/tvloader/parser2v1/parse_file.go
diff options
context:
space:
mode:
Diffstat (limited to 'tvloader/parser2v1/parse_file.go')
-rw-r--r--tvloader/parser2v1/parse_file.go18
1 files changed, 16 insertions, 2 deletions
diff --git a/tvloader/parser2v1/parse_file.go b/tvloader/parser2v1/parse_file.go
index 449b4ae..efe31d9 100644
--- a/tvloader/parser2v1/parse_file.go
+++ b/tvloader/parser2v1/parse_file.go
@@ -19,7 +19,6 @@ func (parser *tvParser2_1) parsePairFromFile2_1(tag string, value string) error
// tag for creating new file section
case "FileName":
parser.file = &spdx.File2_1{}
- parser.pkg.Files = append(parser.pkg.Files, parser.file)
parser.file.FileName = value
// tag for creating new package section and going back to parsing Package
case "PackageName":
@@ -36,7 +35,22 @@ func (parser *tvParser2_1) parsePairFromFile2_1(tag string, value string) error
return parser.parsePairFromOtherLicense2_1(tag, value)
// tags for file data
case "SPDXID":
- parser.file.FileSPDXIdentifier = value
+ eID, err := extractElementID(value)
+ if err != nil {
+ return err
+ }
+ parser.file.FileSPDXIdentifier = eID
+ if parser.pkg == nil {
+ if parser.doc.UnpackagedFiles == nil {
+ parser.doc.UnpackagedFiles = map[spdx.ElementID]*spdx.File2_1{}
+ }
+ parser.doc.UnpackagedFiles[eID] = parser.file
+ } else {
+ if parser.pkg.Files == nil {
+ parser.pkg.Files = map[spdx.ElementID]*spdx.File2_1{}
+ }
+ parser.pkg.Files[eID] = parser.file
+ }
case "FileType":
parser.file.FileType = append(parser.file.FileType, value)
case "FileChecksum":