diff --git a/src/bin/edi_main.c b/src/bin/edi_main.c index 816c5d7..cb66905 100644 --- a/src/bin/edi_main.c +++ b/src/bin/edi_main.c @@ -988,7 +988,7 @@ _edi_menu_scm_commit_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, return; } - edi_scm_credits(_edi_project_config->user_fullname, _edi_project_config->user_email); + edi_scm_credentials_set(_edi_project_config->user_fullname, _edi_project_config->user_email); edi_scm_screens_commit(_edi_main_win); } @@ -1028,7 +1028,6 @@ _edi_menu_scm_push_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, return; } - edi_scm_credits(_edi_project_config->user_fullname, _edi_project_config->user_email); edi_consolepanel_clear(); edi_consolepanel_show(); edi_scm_push(); diff --git a/src/bin/screens/edi_settings.c b/src/bin/screens/edi_settings.c index 2516ad2..0683331 100644 --- a/src/bin/screens/edi_settings.c +++ b/src/bin/screens/edi_settings.c @@ -504,7 +504,7 @@ _edi_settings_project_create(Evas_Object *parent) evas_object_show(label); entry_remote = elm_entry_add(hbox); - elm_object_text_set(entry_remote, engine->remote_url); + elm_object_text_set(entry_remote, engine->remote_url_get()); elm_object_disabled_set(entry_remote, edi_scm_remote_enabled()); evas_object_size_hint_weight_set(entry_remote, 0.75, 0.0); evas_object_size_hint_align_set(entry_remote, EVAS_HINT_FILL, EVAS_HINT_FILL); diff --git a/src/lib/edi_scm.c b/src/lib/edi_scm.c index 254d5ce..a7bf74f 100644 --- a/src/lib/edi_scm.c +++ b/src/lib/edi_scm.c @@ -205,63 +205,50 @@ _edi_scm_git_remote_add(const char *remote_url) static const char * _edi_scm_git_remote_name_get(void) { - char *fullname; + static char *_remote_name; Edi_Scm_Engine *engine = _edi_scm_global_object; if (!engine) return NULL; - if (!engine->remote_name) - { - fullname = _edi_scm_exec_response("git config --get user.name"); - if (fullname) - { - engine->remote_name = eina_stringshare_add(fullname); - free(fullname); - } - } + if (!_remote_name) + _remote_name = _edi_scm_exec_response("git config --get user.name"); - return engine->remote_name; + return _remote_name; } static const char * _edi_scm_git_remote_email_get(void) { - char *email; + static char *_remote_email; Edi_Scm_Engine *engine = _edi_scm_global_object; if (!engine) return NULL; - if (!engine->remote_email) - { - email = _edi_scm_exec_response("git config --get user.email"); - if (email) - { - engine->remote_email = eina_stringshare_add(email); - free(email); - } - } + if (!_remote_email) + _remote_email = _edi_scm_exec_response("git config --get user.email"); - return engine->remote_email; + return _remote_email; } static const char * _edi_scm_git_remote_url_get(void) { + static char *_remote_url; Edi_Scm_Engine *engine = _edi_scm_global_object; if (!engine) return NULL; - if (!engine->remote_url) - engine->remote_url = eina_stringshare_add(_edi_scm_exec_response("git remote get-url origin")); + if (!_remote_url) + _remote_url = _edi_scm_exec_response("git remote get-url origin"); - return engine->remote_url; + return _remote_url; } static int -_edi_scm_credits(const char *name, const char *email) +_edi_scm_git_credentials_set(const char *name, const char *email) { int code; Eina_Strbuf *command = eina_strbuf_new(); @@ -300,7 +287,7 @@ edi_scm_remote_enabled(void) if (!e) return EINA_FALSE; - return !!e->_remote_url_get(); + return !!e->remote_url_get(); } EAPI Eina_Bool @@ -334,7 +321,6 @@ edi_scm_shutdown() eina_stringshare_del(engine->name); eina_stringshare_del(engine->directory); eina_stringshare_del(engine->path); - eina_stringshare_del(engine->remote_url); free(engine); _edi_scm_global_object = NULL; @@ -428,11 +414,11 @@ edi_scm_stash(void) } EAPI int -edi_scm_credits(const char *user, const char *email) +edi_scm_credentials_set(const char *user, const char *email) { Edi_Scm_Engine *e = edi_scm_engine_get(); - return e->credits(user, email); + return e->credentials_set(user, email); } static void @@ -482,7 +468,6 @@ _edi_scm_git_init() _edi_scm_global_object = engine = calloc(1, sizeof(Edi_Scm_Engine)); engine->name = eina_stringshare_add("git"); engine->directory = eina_stringshare_add(".git"); - engine->credits = _edi_scm_credits; engine->file_add = _edi_scm_git_file_add; engine->file_mod = _edi_scm_git_file_mod; engine->file_del = _edi_scm_git_file_del; @@ -492,11 +477,12 @@ _edi_scm_git_init() engine->pull = _edi_scm_git_pull; engine->push = _edi_scm_git_push; engine->stash = _edi_scm_git_stash; - engine->remote_add = _edi_scm_git_remote_add; - engine->_remote_name_get = _edi_scm_git_remote_name_get; - engine->_remote_email_get = _edi_scm_git_remote_email_get; - engine->_remote_url_get = _edi_scm_git_remote_url_get; + engine->remote_add = _edi_scm_git_remote_add; + engine->remote_name_get = _edi_scm_git_remote_name_get; + engine->remote_email_get = _edi_scm_git_remote_email_get; + engine->remote_url_get = _edi_scm_git_remote_url_get; + engine->credentials_set = _edi_scm_git_credentials_set; return engine; } diff --git a/src/lib/edi_scm.h b/src/lib/edi_scm.h index 64e4a73..71d9931 100644 --- a/src/lib/edi_scm.h +++ b/src/lib/edi_scm.h @@ -13,18 +13,18 @@ extern "C" { typedef int (scm_fn_add)(const char *path); typedef int (scm_fn_mod)(const char *path); typedef int (scm_fn_del)(const char *path); -typedef int (scm_fn_credits)(const char *name, const char *email); typedef int (scm_fn_move)(const char *src, const char *dest); typedef int (scm_fn_commit)(const char *message); -typedef int (scm_fn_remote_add)(const char *remote_url); typedef int (scm_fn_status)(void); typedef int (scm_fn_push)(void); typedef int (scm_fn_pull)(void); typedef int (scm_fn_stash)(void); +typedef int (scm_fn_remote_add)(const char *remote_url); typedef const char * (scm_fn_remote_name)(void); typedef const char * (scm_fn_remote_email)(void); typedef const char * (scm_fn_remote_url)(void); +typedef int (scm_fn_credentials)(const char *name, const char *email); typedef struct _Edi_Scm_Engine { @@ -32,12 +32,6 @@ typedef struct _Edi_Scm_Engine const char *directory; const char *path; - scm_fn_remote_add *remote_add; - const char *remote_url; - const char *remote_name; - const char *remote_email; - - scm_fn_credits *credits; scm_fn_add *file_add; scm_fn_mod *file_mod; scm_fn_del *file_del; @@ -48,9 +42,11 @@ typedef struct _Edi_Scm_Engine scm_fn_pull *pull; scm_fn_stash *stash; - scm_fn_remote_name *_remote_name_get; - scm_fn_remote_email *_remote_email_get; - scm_fn_remote_url *_remote_url_get; + scm_fn_remote_add *remote_add; + scm_fn_remote_name *remote_name_get; + scm_fn_remote_email *remote_email_get; + scm_fn_remote_url *remote_url_get; + scm_fn_credentials *credentials_set; } Edi_Scm_Engine; /** @@ -150,7 +146,7 @@ int edi_scm_move(const char *src, const char *dest); * * @ingroup Scm */ -int edi_scm_credits(const char *user, const char *email); +int edi_scm_credentials_set(const char *user, const char *email); /** * Push to SCM remote repository.