From d5dbcdabd14c1ddf01f22b4865487ecce272c055 Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Wed, 8 Nov 2017 09:30:42 +0000 Subject: eo: Rename efl_ref_get to efl_ref_count --- src/bindings/cxx/eo_cxx/eo_ops.hh | 2 +- src/lib/ecore/efl_io_copier.c | 6 +- src/lib/ecore_con/efl_net_dialer_http.c | 2 +- src/lib/ecore_con/efl_net_server_fd.c | 2 +- src/lib/ecore_con/efl_net_server_simple.c | 2 +- src/lib/ecore_con/efl_net_server_ssl.c | 2 +- src/lib/ecore_con/efl_net_server_windows.c | 2 +- src/lib/eio/eio_model.c | 2 +- src/lib/elementary/elm_atspi_bridge.c | 2 +- src/lib/eo/Eo.h | 8 +-- src/lib/eo/eo.c | 4 +- src/lib/evas/canvas/evas_main.c | 12 ++-- src/tests/elementary/elm_test_win.c | 4 +- src/tests/eo/suite/eo_test_general.c | 88 +++++++++++++++--------------- 14 files changed, 69 insertions(+), 69 deletions(-) diff --git a/src/bindings/cxx/eo_cxx/eo_ops.hh b/src/bindings/cxx/eo_cxx/eo_ops.hh index 8d385fd212..1f08d8d738 100644 --- a/src/bindings/cxx/eo_cxx/eo_ops.hh +++ b/src/bindings/cxx/eo_cxx/eo_ops.hh @@ -42,7 +42,7 @@ unref(const Eo *obj) inline int ref_get(const Eo *obj) { - return ::efl_ref_get(obj); + return ::efl_ref_count(obj); } inline Eina_Bool diff --git a/src/lib/ecore/efl_io_copier.c b/src/lib/ecore/efl_io_copier.c index dc4d1e17dd..e9d7d2313b 100644 --- a/src/lib/ecore/efl_io_copier.c +++ b/src/lib/ecore/efl_io_copier.c @@ -42,7 +42,7 @@ static void _efl_io_copier_read(Eo *o, Efl_Io_Copier_Data *pd); DBG("copier={%p %s, refs=%d, closed=%d, done=%d, buf=%zd}", \ o, \ efl_class_name_get(efl_class_get(o)), \ - efl_ref_get(o), \ + efl_ref_count(o), \ efl_io_closer_closed_get(o), \ pd->done, \ pd->buf ? eina_binbuf_length_get(pd->buf): 0); \ @@ -52,7 +52,7 @@ static void _efl_io_copier_read(Eo *o, Efl_Io_Copier_Data *pd); DBG("source={%p %s, refs=%d, can_read=%d, eos=%d, closed=%d}", \ pd->source, \ efl_class_name_get(efl_class_get(pd->source)), \ - efl_ref_get(pd->source), \ + efl_ref_count(pd->source), \ efl_io_reader_can_read_get(pd->source), \ efl_io_reader_eos_get(pd->source), \ efl_isa(pd->source, EFL_IO_CLOSER_MIXIN) ? \ @@ -63,7 +63,7 @@ static void _efl_io_copier_read(Eo *o, Efl_Io_Copier_Data *pd); DBG("destination={%p %s, refs=%d, can_write=%d, closed=%d}", \ pd->destination, \ efl_class_name_get(efl_class_get(pd->destination)), \ - efl_ref_get(pd->destination), \ + efl_ref_count(pd->destination), \ efl_io_writer_can_write_get(pd->destination), \ efl_isa(pd->destination, EFL_IO_CLOSER_MIXIN) ? \ efl_io_closer_closed_get(pd->destination) : 0); \ diff --git a/src/lib/ecore_con/efl_net_dialer_http.c b/src/lib/ecore_con/efl_net_dialer_http.c index cbc3e033e8..d553bad134 100644 --- a/src/lib/ecore_con/efl_net_dialer_http.c +++ b/src/lib/ecore_con/efl_net_dialer_http.c @@ -820,7 +820,7 @@ _efl_net_dialer_http_curl_safe_end(Eo *o, Efl_Net_Dialer_Http_Data *pd, CURL *ea Eina_Future *f; int refs; - refs = efl_ref_get(o); + refs = efl_ref_count(o); if (refs >= 2) { pd->in_curl_callback--; diff --git a/src/lib/ecore_con/efl_net_server_fd.c b/src/lib/ecore_con/efl_net_server_fd.c index c04b6c2186..5fede8d0f7 100644 --- a/src/lib/ecore_con/efl_net_server_fd.c +++ b/src/lib/ecore_con/efl_net_server_fd.c @@ -513,7 +513,7 @@ _efl_net_server_fd_efl_net_server_client_announce(Eo *o, Efl_Net_Server_Fd_Data return EINA_TRUE; } - if (efl_ref_get(client) == 1) /* users must take a reference themselves */ + if (efl_ref_count(client) == 1) /* users must take a reference themselves */ { DBG("client %s was not handled, closing it...", efl_net_socket_address_remote_get(client)); diff --git a/src/lib/ecore_con/efl_net_server_simple.c b/src/lib/ecore_con/efl_net_server_simple.c index 0dba2f6a83..479948b2e0 100644 --- a/src/lib/ecore_con/efl_net_server_simple.c +++ b/src/lib/ecore_con/efl_net_server_simple.c @@ -46,7 +46,7 @@ _efl_net_server_simple_efl_net_server_client_announce(Eo *o, Efl_Net_Server_Simp return EINA_TRUE; } - if (efl_ref_get(client) == 1) /* users must take a reference themselves */ + if (efl_ref_count(client) == 1) /* users must take a reference themselves */ { DBG("client %s was not handled, closing it...", efl_net_socket_address_remote_get(client)); diff --git a/src/lib/ecore_con/efl_net_server_ssl.c b/src/lib/ecore_con/efl_net_server_ssl.c index d9b8953143..0cf56cf8e8 100644 --- a/src/lib/ecore_con/efl_net_server_ssl.c +++ b/src/lib/ecore_con/efl_net_server_ssl.c @@ -49,7 +49,7 @@ _efl_net_server_ssl_efl_net_server_client_announce(Eo *o, Efl_Net_Server_Ssl_Dat return EINA_TRUE; } - if (efl_ref_get(client) == 1) /* users must take a reference themselves */ + if (efl_ref_count(client) == 1) /* users must take a reference themselves */ { DBG("client %s was not handled, closing it...", efl_net_socket_address_remote_get(client)); diff --git a/src/lib/ecore_con/efl_net_server_windows.c b/src/lib/ecore_con/efl_net_server_windows.c index f964d93808..76dd5b0ace 100644 --- a/src/lib/ecore_con/efl_net_server_windows.c +++ b/src/lib/ecore_con/efl_net_server_windows.c @@ -446,7 +446,7 @@ _efl_net_server_windows_efl_net_server_client_announce(Eo *o, Efl_Net_Server_Win return EINA_TRUE; } - if (efl_ref_get(client) == 1) /* users must take a reference themselves */ + if (efl_ref_count(client) == 1) /* users must take a reference themselves */ { DBG("client %s was not handled, closing it...", efl_net_socket_address_remote_get(client)); diff --git a/src/lib/eio/eio_model.c b/src/lib/eio/eio_model.c index 26f7696800..e9b6bfb85a 100644 --- a/src/lib/eio/eio_model.c +++ b/src/lib/eio/eio_model.c @@ -90,7 +90,7 @@ _eio_move_done_cb(void *data, Eio_File *handler EINA_UNUSED) Eio_Model_Data *priv = data; Eina_Array *properties; - EINA_SAFETY_ON_FALSE_RETURN(efl_ref_get(priv->obj)); + EINA_SAFETY_ON_FALSE_RETURN(efl_ref_count(priv->obj)); properties = eina_array_new(20); memset(&evt, 0, sizeof(Efl_Model_Property_Event)); diff --git a/src/lib/elementary/elm_atspi_bridge.c b/src/lib/elementary/elm_atspi_bridge.c index c8681932e5..1cf11a9186 100644 --- a/src/lib/elementary/elm_atspi_bridge.c +++ b/src/lib/elementary/elm_atspi_bridge.c @@ -3145,7 +3145,7 @@ _iter_interfaces_append(Eldbus_Message_Iter *iter, const Eo *obj) static Eina_Bool _cache_item_reference_append_cb(Eo *bridge, Eo *data, Eldbus_Message_Iter *iter_array) { - if (!efl_ref_get(data) || efl_destructed_is(data)) + if (!efl_ref_count(data) || efl_destructed_is(data)) return EINA_TRUE; Eldbus_Message_Iter *iter_struct, *iter_sub_array; diff --git a/src/lib/eo/Eo.h b/src/lib/eo/Eo.h index 002d648b98..7c4942868b 100644 --- a/src/lib/eo/Eo.h +++ b/src/lib/eo/Eo.h @@ -1607,7 +1607,7 @@ EAPI void efl_data_xunref_internal(const Eo *obj, void *data, const Eo *ref_obj) * what you are doing. * * @see efl_unref() - * @see efl_ref_get() + * @see efl_ref_count() */ EAPI Eo *efl_ref(const Eo *obj); @@ -1616,7 +1616,7 @@ EAPI Eo *efl_ref(const Eo *obj); * @param obj the object to work on. * * @see efl_ref() - * @see efl_ref_get() + * @see efl_ref_count() */ EAPI void efl_unref(const Eo *obj); @@ -1628,7 +1628,7 @@ EAPI void efl_unref(const Eo *obj); * @see efl_ref() * @see efl_unref() */ -EAPI int efl_ref_get(const Eo *obj); +EAPI int efl_ref_count(const Eo *obj); /** * @brief Set a deletion interceptor function @@ -2140,7 +2140,7 @@ EAPI Eina_Iterator *eo_objects_iterator_new(void); /* Private for EFL internal use only. Do not use these! */ -EAPI int ___efl_ref2_get(const Eo *obj_id); +EAPI int ___efl_ref2_count(const Eo *obj_id); EAPI void ___efl_ref2_reset(const Eo *obj_id); #endif diff --git a/src/lib/eo/eo.c b/src/lib/eo/eo.c index 2cf9cabe6b..17595e055e 100644 --- a/src/lib/eo/eo.c +++ b/src/lib/eo/eo.c @@ -1904,7 +1904,7 @@ efl_unref(const Eo *obj_id) } EAPI int -efl_ref_get(const Eo *obj_id) +efl_ref_count(const Eo *obj_id) { EO_OBJ_POINTER_RETURN_VAL(obj_id, obj, 0); int ref; @@ -1914,7 +1914,7 @@ efl_ref_get(const Eo *obj_id) } EAPI int -___efl_ref2_get(const Eo *obj_id) +___efl_ref2_count(const Eo *obj_id) { EO_OBJ_POINTER_RETURN_VAL(obj_id, obj, 0); int ref; diff --git a/src/lib/evas/canvas/evas_main.c b/src/lib/evas/canvas/evas_main.c index f6480e41aa..dff563f195 100644 --- a/src/lib/evas/canvas/evas_main.c +++ b/src/lib/evas/canvas/evas_main.c @@ -321,12 +321,12 @@ _evas_canvas_efl_object_destructor(Eo *eo_e, Evas_Public_Data *e) { if (!o->delete_me) { - if ((o->ref > 0) || (efl_ref_get(o->object) > 0)) + if ((o->ref > 0) || (efl_ref_count(o->object) > 0)) { ERR("obj(%s) ref count(%d) is bigger than 0. This " "object couldn't be deleted", efl_debug_name_get(o->object), - efl_ref_get(o->object)); + efl_ref_count(o->object)); continue; } unrefs = eina_list_append(unrefs, o->object); @@ -342,10 +342,10 @@ _evas_canvas_efl_object_destructor(Eo *eo_e, Evas_Public_Data *e) EINA_LIST_FREE(unrefs, eo_obj) { ERR("Killing Zombie Object [%s]. Refs: %i:%i", - efl_debug_name_get(eo_obj), efl_ref_get(eo_obj), ___efl_ref2_get(eo_obj)); + efl_debug_name_get(eo_obj), efl_ref_count(eo_obj), ___efl_ref2_count(eo_obj)); ___efl_ref2_reset(eo_obj); - while (efl_ref_get(eo_obj) > 1) efl_unref(eo_obj); - while (efl_ref_get(eo_obj) < 1) efl_ref(eo_obj); + while (efl_ref_count(eo_obj) > 1) efl_unref(eo_obj); + while (efl_ref_count(eo_obj) < 1) efl_ref(eo_obj); efl_del(eo_obj); if (!detach_zombies) continue; @@ -359,7 +359,7 @@ _evas_canvas_efl_object_destructor(Eo *eo_e, Evas_Public_Data *e) "was deleted but the call to efl_destructor() " "was not propagated to all the parent classes? " "Forcibly removing it. This may leak! Refs: %i:%i", - efl_debug_name_get(eo_obj), efl_ref_get(eo_obj), ___efl_ref2_get(eo_obj)); + efl_debug_name_get(eo_obj), efl_ref_count(eo_obj), ___efl_ref2_count(eo_obj)); lay->objects = (Evas_Object_Protected_Data *) eina_inlist_remove(EINA_INLIST_GET(lay->objects), EINA_INLIST_GET(o)); goto next_zombie; diff --git a/src/tests/elementary/elm_test_win.c b/src/tests/elementary/elm_test_win.c index 7248e19346..7effdefe09 100644 --- a/src/tests/elementary/elm_test_win.c +++ b/src/tests/elementary/elm_test_win.c @@ -161,7 +161,7 @@ START_TEST (elm_win_policy_quit_last_window_hidden) visible = efl_gfx_visible_get(win); ck_assert(fail_flag == EINA_FALSE); - ck_assert(efl_ref_get(win) >= 1); + ck_assert(efl_ref_count(win) >= 1); ck_assert(visible == EINA_FALSE); elm_shutdown(); @@ -188,7 +188,7 @@ START_TEST (elm_win_autohide_and_policy_quit_last_window_hidden) visible = efl_gfx_visible_get(win); ck_assert(fail_flag == EINA_FALSE); - ck_assert(efl_ref_get(win) >= 1); + ck_assert(efl_ref_count(win) >= 1); ck_assert(visible == EINA_FALSE); elm_shutdown(); diff --git a/src/tests/eo/suite/eo_test_general.c b/src/tests/eo/suite/eo_test_general.c index 3c21e71c14..2a26bf8dd1 100644 --- a/src/tests/eo/suite/eo_test_general.c +++ b/src/tests/eo/suite/eo_test_general.c @@ -575,27 +575,27 @@ START_TEST(efl_refs) Eo *obj3 = efl_add(SIMPLE_CLASS, NULL); efl_xref(obj, obj2); - fail_if(efl_ref_get(obj) != 2); + fail_if(efl_ref_count(obj) != 2); efl_xref(obj, obj3); - fail_if(efl_ref_get(obj) != 3); + fail_if(efl_ref_count(obj) != 3); efl_xunref(obj, obj2); - fail_if(efl_ref_get(obj) != 2); + fail_if(efl_ref_count(obj) != 2); efl_xunref(obj, obj3); - fail_if(efl_ref_get(obj) != 1); + fail_if(efl_ref_count(obj) != 1); #ifdef EO_DEBUG efl_xunref(obj, obj3); - fail_if(efl_ref_get(obj) != 1); + fail_if(efl_ref_count(obj) != 1); efl_xref(obj, obj2); - fail_if(efl_ref_get(obj) != 2); + fail_if(efl_ref_count(obj) != 2); efl_xunref(obj, obj3); - fail_if(efl_ref_get(obj) != 2); + fail_if(efl_ref_count(obj) != 2); efl_xunref(obj, obj2); - fail_if(efl_ref_get(obj) != 1); + fail_if(efl_ref_count(obj) != 1); #endif /* Check we don't seg if there's an extra xref. */ @@ -627,9 +627,9 @@ START_TEST(efl_refs) obj2 = efl_add(SIMPLE_CLASS, obj); obj3 = efl_add_ref(SIMPLE_CLASS, obj); - ck_assert_int_eq(efl_ref_get(obj), 1); - ck_assert_int_eq(efl_ref_get(obj2), 1); - ck_assert_int_eq(efl_ref_get(obj3), 2); + ck_assert_int_eq(efl_ref_count(obj), 1); + ck_assert_int_eq(efl_ref_count(obj2), 1); + ck_assert_int_eq(efl_ref_count(obj3), 2); efl_del(obj); efl_del(obj2); @@ -643,18 +643,18 @@ START_TEST(efl_refs) efl_parent_set(obj2, obj3); efl_parent_set(obj3, obj); - ck_assert_int_eq(efl_ref_get(obj2), 2); - ck_assert_int_eq(efl_ref_get(obj3), 2); + ck_assert_int_eq(efl_ref_count(obj2), 2); + ck_assert_int_eq(efl_ref_count(obj3), 2); efl_parent_set(obj2, NULL); efl_parent_set(obj3, NULL); - ck_assert_int_eq(efl_ref_get(obj2), 1); - ck_assert_int_eq(efl_ref_get(obj3), 1); + ck_assert_int_eq(efl_ref_count(obj2), 1); + ck_assert_int_eq(efl_ref_count(obj3), 1); efl_parent_set(obj2, obj); efl_parent_set(obj3, obj); - ck_assert_int_eq(efl_ref_get(obj2), 2); - ck_assert_int_eq(efl_ref_get(obj3), 2); + ck_assert_int_eq(efl_ref_count(obj2), 2); + ck_assert_int_eq(efl_ref_count(obj3), 2); efl_del(obj); efl_del(obj2); @@ -665,23 +665,23 @@ START_TEST(efl_refs) obj2 = efl_add_ref(SIMPLE_CLASS, obj); obj3 = efl_add_ref(SIMPLE_CLASS, NULL); - ck_assert_int_eq(efl_ref_get(obj2), 2); - ck_assert_int_eq(efl_ref_get(obj3), 1); + ck_assert_int_eq(efl_ref_count(obj2), 2); + ck_assert_int_eq(efl_ref_count(obj3), 1); efl_parent_set(obj2, obj3); efl_parent_set(obj3, obj); - ck_assert_int_eq(efl_ref_get(obj2), 2); - ck_assert_int_eq(efl_ref_get(obj3), 2); + ck_assert_int_eq(efl_ref_count(obj2), 2); + ck_assert_int_eq(efl_ref_count(obj3), 2); efl_parent_set(obj2, NULL); efl_parent_set(obj3, NULL); - ck_assert_int_eq(efl_ref_get(obj2), 1); - ck_assert_int_eq(efl_ref_get(obj3), 1); + ck_assert_int_eq(efl_ref_count(obj2), 1); + ck_assert_int_eq(efl_ref_count(obj3), 1); efl_parent_set(obj2, obj); efl_parent_set(obj3, obj); - ck_assert_int_eq(efl_ref_get(obj2), 2); - ck_assert_int_eq(efl_ref_get(obj3), 2); + ck_assert_int_eq(efl_ref_count(obj2), 2); + ck_assert_int_eq(efl_ref_count(obj3), 2); efl_del(obj); efl_del(obj2); @@ -829,10 +829,10 @@ START_TEST(eo_generic_data) fail_if(objtmp); efl_key_ref_set(obj, "test1", obj2); - fail_if(efl_ref_get(obj2) != 2); + fail_if(efl_ref_count(obj2) != 2); efl_key_ref_set(obj, "test2", obj3); - fail_if(efl_ref_get(obj3) != 2); + fail_if(efl_ref_count(obj3) != 2); objtmp = efl_key_ref_get(obj, "test1"); fail_if(obj2 != objtmp); @@ -844,7 +844,7 @@ START_TEST(eo_generic_data) fail_if(obj3 != objtmp); efl_key_ref_set(obj, "test2", NULL); - fail_if(efl_ref_get(obj3) != 1); + fail_if(efl_ref_count(obj3) != 1); objtmp = efl_key_ref_get(obj, "test2"); fail_if(objtmp); @@ -853,7 +853,7 @@ START_TEST(eo_generic_data) fail_if(obj2 != objtmp); efl_key_ref_set(obj, "test1", NULL); - fail_if(efl_ref_get(obj2) != 1); + fail_if(efl_ref_count(obj2) != 1); objtmp = efl_key_ref_get(obj, "test1"); fail_if(objtmp); @@ -884,10 +884,10 @@ START_TEST(eo_generic_data) fail_if(objtmp); efl_key_wref_set(obj, "test1", obj2); - fail_if(efl_ref_get(obj2) != 1); + fail_if(efl_ref_count(obj2) != 1); efl_key_wref_set(obj, "test2", obj3); - fail_if(efl_ref_get(obj3) != 1); + fail_if(efl_ref_count(obj3) != 1); objtmp = efl_key_wref_get(obj, "test1"); fail_if(obj2 != objtmp); @@ -899,7 +899,7 @@ START_TEST(eo_generic_data) fail_if(obj3 != objtmp); efl_key_wref_set(obj, "test2", NULL); - fail_if(efl_ref_get(obj3) != 1); + fail_if(efl_ref_count(obj3) != 1); objtmp = efl_key_wref_get(obj, "test2"); fail_if(objtmp); @@ -908,7 +908,7 @@ START_TEST(eo_generic_data) fail_if(obj2 != objtmp); efl_key_wref_set(obj, "test1", NULL); - fail_if(efl_ref_get(obj2) != 1); + fail_if(efl_ref_count(obj2) != 1); objtmp = efl_key_wref_get(obj, "test1"); fail_if(objtmp); @@ -1003,7 +1003,7 @@ START_TEST(eo_magic_checks) efl_isa((Eo *) buf, SIMPLE_CLASS); efl_isa(obj, (Efl_Class *) buf); - fail_if(0 != efl_ref_get((Eo *) buf)); + fail_if(0 != efl_ref_count((Eo *) buf)); efl_wref_add((Eo *) buf, &wref); parent = efl_parent_get((Eo *) buf); @@ -1322,15 +1322,15 @@ START_TEST(efl_del_intercept) Eo *parent = efl_add(SIMPLE_CLASS, NULL); obj = efl_add(klass, NULL); fail_if(!obj); - ck_assert_int_eq(efl_ref_get(obj), 1); + ck_assert_int_eq(efl_ref_count(obj), 1); efl_parent_set(obj, parent); - ck_assert_int_eq(efl_ref_get(obj), 1); + ck_assert_int_eq(efl_ref_count(obj), 1); efl_del_intercept_set(obj, _del_intercept_reuse); efl_del_intercept_set(obj, NULL); /* This essentially checks it get unsunk */ - ck_assert_int_eq(efl_ref_get(obj), 1); + ck_assert_int_eq(efl_ref_count(obj), 1); efl_parent_set(obj, parent); - ck_assert_int_eq(efl_ref_get(obj), 1); + ck_assert_int_eq(efl_ref_count(obj), 1); efl_del(obj); efl_object_shutdown(); @@ -1738,22 +1738,22 @@ START_TEST(efl_object_auto_unref_test) // Test unref after valid call _auto_unref_del = 0; obj = efl_add(SIMPLE_CLASS, NULL); - fail_if(efl_ref_get(obj) != 1); + fail_if(efl_ref_count(obj) != 1); efl_event_callback_add(obj, EFL_EVENT_DEL, _auto_unref_del_cb, &_auto_unref_del); efl_auto_unref_set(obj, 1); fail_if(_auto_unref_del); - fail_if(efl_ref_get(obj) != 1); + fail_if(efl_ref_count(obj) != 1); efl_name_set(obj, "name"); fail_if(!_auto_unref_del); // Test unref after invalid call _auto_unref_del = 0; obj = efl_add(SIMPLE_CLASS, NULL); - fail_if(efl_ref_get(obj) != 1); + fail_if(efl_ref_count(obj) != 1); efl_event_callback_add(obj, EFL_EVENT_DEL, _auto_unref_del_cb, &_auto_unref_del); efl_auto_unref_set(obj, 1); fail_if(_auto_unref_del); - fail_if(efl_ref_get(obj) != 1); + fail_if(efl_ref_count(obj) != 1); simple_no_implementation(obj); fail_if(!_auto_unref_del); @@ -1761,12 +1761,12 @@ START_TEST(efl_object_auto_unref_test) _auto_unref_del = 0; parent = efl_add(SIMPLE_CLASS, NULL); obj = efl_add(SIMPLE_CLASS, parent); - fail_if(efl_ref_get(obj) != 1); + fail_if(efl_ref_count(obj) != 1); efl_allow_parent_unref_set(obj, 1); efl_event_callback_add(obj, EFL_EVENT_DEL, _auto_unref_del_cb, &_auto_unref_del); efl_auto_unref_set(obj, 1); fail_if(_auto_unref_del); - fail_if(efl_ref_get(obj) != 1); + fail_if(efl_ref_count(obj) != 1); efl_name_set(obj, "name"); fail_if(!_auto_unref_del); efl_del(parent); -- cgit v1.2.3