Skip to content

Commit

Permalink
Split out getBinariesUsages() inline functions into proper functions
Browse files Browse the repository at this point in the history
  • Loading branch information
tobischo committed Jun 13, 2022
1 parent cc03783 commit 2872272
Showing 1 changed file with 20 additions and 22 deletions.
42 changes: 20 additions & 22 deletions database.go
Original file line number Diff line number Diff line change
Expand Up @@ -144,9 +144,9 @@ func (db *Database) LockProtectedEntries() error {
// It takes care of adding it to the correct place based on the format version
func (db *Database) AddBinary(binaryContent []byte) *Binary {
if db.Header.IsKdbx4() {
return db.Content.InnerHeader.Binaries.Add(binaryContent, WithKDBXv4Binary)
return db.getBinaries().Add(binaryContent, WithKDBXv4Binary)
}
return db.Content.Meta.Binaries.Add(binaryContent, WithKDBXv31Binary)
return db.getBinaries().Add(binaryContent, WithKDBXv31Binary)
}

// FindBinary returns the binary with the given id if one could be found. It returns nil otherwise
Expand Down Expand Up @@ -193,30 +193,28 @@ func (db *Database) cleanupBinaries() {
*db.getBinaries() = updated
}

func (db *Database) getBinariesUsages() binariesUsages {
result := binariesUsages{}
var addEntriesBinaries func(entries []Entry)
var addGroupBinaries func(parent *Group)

addEntriesBinaries = func(entries []Entry) {
for _, entry := range entries {
for i := range entry.Binaries {
id := entry.Binaries[i].Value.ID
result[id] = append(result[id], &entry.Binaries[i])
}
for _, history := range entry.Histories {
addEntriesBinaries(history.Entries)
}
func addEntriesBinaries(result binariesUsages, entries []Entry) {
for _, entry := range entries {
for i, binary := range entry.Binaries {
id := binary.Value.ID
result[id] = append(result[id], &entry.Binaries[i])
}
for _, history := range entry.Histories {
addEntriesBinaries(result, history.Entries)
}
}
}

addGroupBinaries = func(parent *Group) {
addEntriesBinaries(parent.Entries)
for _, group := range parent.Groups {
addGroupBinaries(&group)
}
func addGroupBinaries(result binariesUsages, parent *Group) {
addEntriesBinaries(result, parent.Entries)
for _, group := range parent.Groups {
addGroupBinaries(result, &group)
}
}

func (db *Database) getBinariesUsages() binariesUsages {
result := binariesUsages{}

addGroupBinaries(&db.Content.Root.Groups[0])
addGroupBinaries(result, &db.Content.Root.Groups[0])
return result
}

0 comments on commit 2872272

Please sign in to comment.