mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Cleanup: Remove hash field from picture-structure
The hash field in the picture-structure was in principle non-operational. It was set on loading, but never actually changed. The authoritative hash comes from the filename->hash map. Therefore, make this explicit by removing the hash field from the picture structure. Instead of filling the picture structure on loading, add the hash directly to the filename->hash map. This is done in the register_hash() function, which does not overwrite old entries. I.e. the local hash has priority over the save-file. This policy might be refined in the future. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
e5dcd9fc16
commit
bdc470a80e
8 changed files with 61 additions and 46 deletions
|
@ -50,10 +50,13 @@ static void save_picture_from_git(struct picture *picture)
|
|||
struct picture_entry_list *pic_entry = pel;
|
||||
|
||||
while (pic_entry) {
|
||||
if (same_string(pic_entry->hash, picture->hash)) {
|
||||
savePictureLocal(picture, pic_entry->data, pic_entry->len);
|
||||
char *hash = hashstring(picture->filename);
|
||||
if (same_string(pic_entry->hash, hash)) {
|
||||
savePictureLocal(picture, hash, pic_entry->data, pic_entry->len);
|
||||
free(hash);
|
||||
return;
|
||||
}
|
||||
free(hash);
|
||||
pic_entry = pic_entry->next;
|
||||
}
|
||||
fprintf(stderr, "didn't find picture entry for %s\n", picture->filename);
|
||||
|
@ -971,7 +974,9 @@ static void parse_picture_hash(char *line, struct membuffer *str, void *_pic)
|
|||
{
|
||||
(void) line;
|
||||
struct picture *pic = _pic;
|
||||
pic->hash = get_utf8(str);
|
||||
char *hash = get_utf8(str);
|
||||
register_hash(pic->filename, get_utf8(str));
|
||||
free(hash);
|
||||
}
|
||||
|
||||
/* These need to be sorted! */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue