mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-28 05:00:20 +00:00
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:
parent
0958592ee6
commit
21ee440e5f
4 changed files with 1 additions and 107 deletions
|
@ -29,14 +29,6 @@
|
|||
|
||||
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 {
|
||||
const char *keyword;
|
||||
void (*fn)(char *, struct membuffer *, void *);
|
||||
|
@ -46,23 +38,6 @@ struct keyword_action {
|
|||
extern degrees_t parse_degrees(char *buf, char **end);
|
||||
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)
|
||||
{
|
||||
int len = b->len;
|
||||
|
@ -1217,18 +1192,6 @@ static void finish_active_dive(void)
|
|||
struct dive *dive = active_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;
|
||||
record_dive(dive);
|
||||
}
|
||||
|
@ -1590,26 +1553,6 @@ static int parse_settings_entry(git_repository *repo, const git_tree_entry *entr
|
|||
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)
|
||||
{
|
||||
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)
|
||||
fprintf(stderr, "git load handling file %s\n", name);
|
||||
switch (*name) {
|
||||
/* Picture file? They are saved as time offsets in the dive */
|
||||
case '-': case '+':
|
||||
if (dive)
|
||||
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"))
|
||||
return parse_settings_entry(repo, entry);
|
||||
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);
|
||||
return GIT_WALK_SKIP;
|
||||
|
|
|
@ -1293,15 +1293,6 @@ extern "C" const char *local_file_path(struct picture *picture)
|
|||
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()
|
||||
{
|
||||
return QString(system_default_directory()).append("/picturedata/");
|
||||
|
@ -1312,25 +1303,6 @@ extern "C" char *picturedir_string()
|
|||
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)
|
||||
{
|
||||
uint o2 = (get_o2(&gas) + 5) / 10, he = (get_he(&gas) + 5) / 10;
|
||||
|
|
|
@ -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);
|
||||
char *hashstring(const char *filename);
|
||||
void register_hash(const char *filename, const char *hash);
|
||||
bool picture_exists(struct picture *picture);
|
||||
char *move_away(const char *path);
|
||||
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);
|
||||
char *cloud_url();
|
||||
char *hashfile_name_string();
|
||||
|
|
|
@ -611,7 +611,6 @@ static int save_one_picture(git_repository *repo, struct dir *dir, struct pictur
|
|||
char sign = '+';
|
||||
char *hash;
|
||||
unsigned h;
|
||||
int error;
|
||||
|
||||
show_utf8(&buf, "filename ", pic->filename, "\n");
|
||||
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 */
|
||||
h = offset / 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));
|
||||
#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)
|
||||
|
|
Loading…
Reference in a new issue