Cleanup: remove code related to picture-storage in git repositories

Saving of pictures to git repositories was disabled. Finally remove
this code and the corresponding load code.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2018-05-23 18:01:39 +02:00 committed by Dirk Hohndel
parent 0958592ee6
commit 21ee440e5f
4 changed files with 1 additions and 107 deletions

View file

@ -29,14 +29,6 @@
const char *saved_git_id = NULL; const char *saved_git_id = NULL;
struct picture_entry_list {
void *data;
int len;
const char *hash;
struct picture_entry_list *next;
};
struct picture_entry_list *pel = NULL;
struct keyword_action { struct keyword_action {
const char *keyword; const char *keyword;
void (*fn)(char *, struct membuffer *, void *); void (*fn)(char *, struct membuffer *, void *);
@ -46,23 +38,6 @@ struct keyword_action {
extern degrees_t parse_degrees(char *buf, char **end); extern degrees_t parse_degrees(char *buf, char **end);
git_blob *git_tree_entry_blob(git_repository *repo, const git_tree_entry *entry); git_blob *git_tree_entry_blob(git_repository *repo, const git_tree_entry *entry);
static void save_picture_from_git(struct picture *picture)
{
struct picture_entry_list *pic_entry = pel;
while (pic_entry) {
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);
}
static char *get_utf8(struct membuffer *b) static char *get_utf8(struct membuffer *b)
{ {
int len = b->len; int len = b->len;
@ -1217,18 +1192,6 @@ static void finish_active_dive(void)
struct dive *dive = active_dive; struct dive *dive = active_dive;
if (dive) { if (dive) {
/* check if we need to save pictures */
FOR_EACH_PICTURE(dive) {
if (!picture_exists(picture))
save_picture_from_git(picture);
}
/* free any memory we allocated to track pictures */
while (pel) {
free(pel->data);
void *lastone = pel;
pel = pel->next;
free(lastone);
}
active_dive = NULL; active_dive = NULL;
record_dive(dive); record_dive(dive);
} }
@ -1590,26 +1553,6 @@ static int parse_settings_entry(git_repository *repo, const git_tree_entry *entr
return 0; return 0;
} }
static int parse_picture_file(git_repository *repo, const git_tree_entry *entry, const char *name)
{
/* remember the picture data so we can handle it when all dive data has been loaded
* the name of the git file is PIC-<hash> */
git_blob *blob = git_tree_entry_blob(repo, entry);
if (blob) {
const void*rawdata = git_blob_rawcontent(blob);
int len = git_blob_rawsize(blob);
struct picture_entry_list *new_pel = malloc(sizeof(struct picture_entry_list));
new_pel->next = pel;
pel = new_pel;
pel->data = malloc(len);
memcpy(pel->data, rawdata, len);
pel->len = len;
pel->hash = strdup(name + 4);
git_blob_free(blob);
}
return 0;
}
static int parse_picture_entry(git_repository *repo, const git_tree_entry *entry, const char *name) static int parse_picture_entry(git_repository *repo, const git_tree_entry *entry, const char *name)
{ {
git_blob *blob; git_blob *blob;
@ -1651,7 +1594,6 @@ static int walk_tree_file(const char *root, const git_tree_entry *entry, git_rep
if (verbose > 1) if (verbose > 1)
fprintf(stderr, "git load handling file %s\n", name); fprintf(stderr, "git load handling file %s\n", name);
switch (*name) { switch (*name) {
/* Picture file? They are saved as time offsets in the dive */
case '-': case '+': case '-': case '+':
if (dive) if (dive)
return parse_picture_entry(repo, entry, name); return parse_picture_entry(repo, entry, name);
@ -1672,10 +1614,6 @@ static int walk_tree_file(const char *root, const git_tree_entry *entry, git_rep
if (!strcmp(name, "00-Subsurface")) if (!strcmp(name, "00-Subsurface"))
return parse_settings_entry(repo, entry); return parse_settings_entry(repo, entry);
break; break;
case 'P':
if (dive && !strncmp(name, "PIC-", 4))
return parse_picture_file(repo, entry, name);
break;
} }
report_error("Unknown file %s%s (%p %p)", root, name, dive, trip); report_error("Unknown file %s%s (%p %p)", root, name, dive, trip);
return GIT_WALK_SKIP; return GIT_WALK_SKIP;

View file

@ -1293,15 +1293,6 @@ extern "C" const char *local_file_path(struct picture *picture)
return copy_qstring(localFilePath(picture->filename)); return copy_qstring(localFilePath(picture->filename));
} }
extern "C" bool picture_exists(struct picture *picture)
{
QString localPath = localFilePath(picture->filename);
if (localPath.isEmpty())
return false;
QByteArray hash = hashFile(localPath);
return !hash.isEmpty() && getHash(QString(picture->filename)) == hash;
}
const QString picturedir() const QString picturedir()
{ {
return QString(system_default_directory()).append("/picturedata/"); return QString(system_default_directory()).append("/picturedata/");
@ -1312,25 +1303,6 @@ extern "C" char *picturedir_string()
return copy_qstring(picturedir()); return copy_qstring(picturedir());
} }
/* when we get a picture from git storage (local or remote) and can't find the picture
* based on its hash, we create a local copy with the hash as filename and the appropriate
* suffix */
extern "C" void savePictureLocal(struct picture *picture, const char *hash, const char *data, int len)
{
QString dirname = picturedir();
QDir localPictureDir(dirname);
localPictureDir.mkpath(dirname);
QString suffix(picture->filename);
suffix.replace(QRegularExpression(".*\\."), "");
QString filename(dirname + hash + "." + suffix);
QSaveFile out(filename);
if (out.open(QIODevice::WriteOnly)) {
out.write(data, len);
out.commit();
add_hash(filename, QByteArray::fromHex(hash));
}
}
QString get_gas_string(struct gasmix gas) QString get_gas_string(struct gasmix gas)
{ {
uint o2 = (get_o2(&gas) + 5) / 10, he = (get_he(&gas) + 5) / 10; uint o2 = (get_o2(&gas) + 5) / 10, he = (get_he(&gas) + 5) / 10;

View file

@ -69,10 +69,8 @@ char *get_file_name(const char *fileName);
void copy_image_and_overwrite(const char *cfileName, const char *path, const char *cnewName); void copy_image_and_overwrite(const char *cfileName, const char *path, const char *cnewName);
char *hashstring(const char *filename); char *hashstring(const char *filename);
void register_hash(const char *filename, const char *hash); void register_hash(const char *filename, const char *hash);
bool picture_exists(struct picture *picture);
char *move_away(const char *path); char *move_away(const char *path);
const char *local_file_path(struct picture *picture); const char *local_file_path(struct picture *picture);
void savePictureLocal(struct picture *picture, const char *hash, const char *data, int len);
void cache_picture(struct picture *picture); void cache_picture(struct picture *picture);
char *cloud_url(); char *cloud_url();
char *hashfile_name_string(); char *hashfile_name_string();

View file

@ -611,7 +611,6 @@ static int save_one_picture(git_repository *repo, struct dir *dir, struct pictur
char sign = '+'; char sign = '+';
char *hash; char *hash;
unsigned h; unsigned h;
int error;
show_utf8(&buf, "filename ", pic->filename, "\n"); show_utf8(&buf, "filename ", pic->filename, "\n");
show_gps(&buf, pic->latitude, pic->longitude); show_gps(&buf, pic->latitude, pic->longitude);
@ -628,21 +627,8 @@ static int save_one_picture(git_repository *repo, struct dir *dir, struct pictur
/* Use full hh:mm:ss format to make it all sort nicely */ /* Use full hh:mm:ss format to make it all sort nicely */
h = offset / 3600; h = offset / 3600;
offset -= h *3600; offset -= h *3600;
error = blob_insert(repo, dir, &buf, "%c%02u=%02u=%02u", return blob_insert(repo, dir, &buf, "%c%02u=%02u=%02u",
sign, h, FRACTION(offset, 60)); sign, h, FRACTION(offset, 60));
#if 0
/* storing pictures into git was a mistake. This makes for HUGE git repositories */
if (!error) {
/* next store the actual picture; we prefix all picture names
* with "PIC-" to make things easier on the parsing side */
struct membuffer namebuf = { 0 };
const char *localfn = local_file_path(pic);
put_format(&namebuf, "PIC-%s", pic->hash);
error = blob_insert_fromdisk(repo, dir, localfn, mb_cstring(&namebuf));
free((void *)localfn);
}
#endif
return error;
} }
static int save_pictures(git_repository *repo, struct dir *dir, struct dive *dive) static int save_pictures(git_repository *repo, struct dir *dir, struct dive *dive)