From 05a51f7984e62a8eaf02a8b8dc7269325fb26d9b Mon Sep 17 00:00:00 2001 From: Dirk Hohndel Date: Sat, 30 Apr 2016 06:51:26 -0700 Subject: [PATCH] Only create the path to no cloud local storage once This required a small change to the helper function, but this seemed totally worth it. Signed-off-by: Dirk Hohndel --- core/git-access.c | 7 ++++++- mobile-widgets/qmlmanager.cpp | 13 +++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/core/git-access.c b/core/git-access.c index 0e012b082..fe9a27452 100644 --- a/core/git-access.c +++ b/core/git-access.c @@ -928,7 +928,12 @@ struct git_repository *is_git_repository(const char *filename, const char **bran int git_create_local_repo(const char *filename) { git_repository *repo; - int ret = git_repository_init(&repo, filename, false); + char *path = strdup(filename); + char *branch = strchr(path, '['); + if (branch) + *branch = '\0'; + int ret = git_repository_init(&repo, path, false); + free(path); if (ret != 0) (void)report_error("Create local repo failed with error code %d", ret); return ret; diff --git a/mobile-widgets/qmlmanager.cpp b/mobile-widgets/qmlmanager.cpp index 8a09dc212..9b3471a7a 100644 --- a/mobile-widgets/qmlmanager.cpp +++ b/mobile-widgets/qmlmanager.cpp @@ -27,6 +27,8 @@ QMLManager *QMLManager::m_instance = NULL; #define RED_FONT QLatin1Literal("") #define END_FONT QLatin1Literal("") +#define NOCLOUD_LOCALSTORAGE format_string("%s/cloudstorage/localrepo[master]", system_default_directory()) + static void appendTextToLogStandalone(const char *text) { QMLManager *self = QMLManager::instance(); @@ -172,7 +174,7 @@ void QMLManager::openLocalThenRemote(QString url) void QMLManager::mergeLocalRepo() { - char *filename = format_string("%s/cloudstorage/localrepo[master]", system_default_directory()); + char *filename = NOCLOUD_LOCALSTORAGE; parse_file(filename); process_dives(true, false); } @@ -479,6 +481,7 @@ void QMLManager::revertToNoCloudIfNeeded() setCloudUserName(""); setCloudPassword(""); setCredentialStatus(INCOMPLETE); + set_filename(NOCLOUD_LOCALSTORAGE, true); setStartPageText(RED_FONT + tr("Failed to connect to cloud server, reverting to no cloud status") + END_FONT); } setAccessingCloud(-1); @@ -868,12 +871,10 @@ void QMLManager::saveChangesLocal() git_storage_update_progress(true, "saving dives locally"); // reset the timers if (credentialStatus() == NOCLOUD) { if (same_string(existing_filename, "")) { - QString filename(system_default_directory()); - filename += "/cloudstorage/localrepo"; - if (git_create_local_repo(qPrintable(filename))) + char *filename = NOCLOUD_LOCALSTORAGE; + if (git_create_local_repo(filename)) appendTextToLog(get_error_string()); - filename += "[master]"; - set_filename(qPrintable(filename), true); + set_filename(filename, true); GeneralSettingsObjectWrapper s(this); s.setDefaultFilename(filename); s.setDefaultFileBehavior(LOCAL_DEFAULT_FILE);