mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-30 22:20:21 +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;
|
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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Reference in a new issue