[prev in list] [next in list] [prev in thread] [next in thread]
List: enlightenment-devel
Subject: Re: [E-devel] [EGIT] [core/efl] master 02/02: eio: convert Efl.Io.Manager.stat() to return Eina_Futu
From: Gustavo Sverzut Barbieri <barbieri () gmail ! com>
Date: 2017-09-28 22:44:57
Message-ID: CANkykrCxXA0jQhim1cW2wURDhuZ1X7FW==U7mV17LEML71gCtA () mail ! gmail ! com
[Download RAW message or body]
On Wed, Sep 27, 2017 at 8:35 PM, Cedric BAIL <cedric.bail@free.fr> wrote:
> cedric pushed a commit to branch master.
>
> http://git.enlightenment.org/core/efl.git/commit/?id=245ea06a6565d0261564652a26a9310420e48740
>
> commit 245ea06a6565d0261564652a26a9310420e48740
> Author: Cedric BAIL <cedric@osg.samsung.com>
> Date: Wed Sep 27 16:32:58 2017 -0700
>
> eio: convert Efl.Io.Manager.stat() to return Eina_Future.
> ---
> src/lib/eio/efl_io_manager.c | 81 +++++++++++++++++++++++++++-------------
> src/lib/eio/efl_io_manager.eo | 2 +-
> src/tests/eio/eio_test_manager.c | 40 ++++++++++++++------
> 3 files changed, 85 insertions(+), 38 deletions(-)
>
> diff --git a/src/lib/eio/efl_io_manager.c b/src/lib/eio/efl_io_manager.c
> index b19f7e3476..59af2d223b 100644
> --- a/src/lib/eio/efl_io_manager.c
> +++ b/src/lib/eio/efl_io_manager.c
> @@ -51,6 +51,11 @@ struct _Job_Closure
> };
>
> /* Helper functions */
> +static void
> +_efl_io_manager_future_cancel(void *data, const Eina_Promise *dead_ptr EINA_UNUSED)
> +{
> + eio_file_cancel(data);
> +}
>
> static void
> _no_future(void *data, const Efl_Event *ev EINA_UNUSED)
> @@ -343,50 +348,80 @@ _efl_io_manager_ls(Eo *obj,
> }
>
> /* Stat function */
> +EINA_VALUE_STRUCT_DESC_DEFINE(_eina_stat_desc,
> + NULL,
> + sizeof (Eina_Stat),
> + EINA_VALUE_STRUCT_MEMBER(EINA_VALUE_TYPE_ULONG, Eina_Stat, dev),
> + EINA_VALUE_STRUCT_MEMBER(EINA_VALUE_TYPE_ULONG, Eina_Stat, ino),
> + EINA_VALUE_STRUCT_MEMBER(EINA_VALUE_TYPE_UINT, Eina_Stat, mode),
> + EINA_VALUE_STRUCT_MEMBER(EINA_VALUE_TYPE_UINT, Eina_Stat, nlink),
> + EINA_VALUE_STRUCT_MEMBER(EINA_VALUE_TYPE_UINT, Eina_Stat, uid),
> + EINA_VALUE_STRUCT_MEMBER(EINA_VALUE_TYPE_UINT, Eina_Stat, gid),
> + EINA_VALUE_STRUCT_MEMBER(EINA_VALUE_TYPE_ULONG, Eina_Stat, rdev),
> + EINA_VALUE_STRUCT_MEMBER(EINA_VALUE_TYPE_ULONG, Eina_Stat, size),
> + EINA_VALUE_STRUCT_MEMBER(EINA_VALUE_TYPE_ULONG, Eina_Stat, blksize),
> + EINA_VALUE_STRUCT_MEMBER(EINA_VALUE_TYPE_ULONG, Eina_Stat, blocks),
> + EINA_VALUE_STRUCT_MEMBER(EINA_VALUE_TYPE_ULONG, Eina_Stat, atime),
> + EINA_VALUE_STRUCT_MEMBER(EINA_VALUE_TYPE_ULONG, Eina_Stat, atimensec),
> + EINA_VALUE_STRUCT_MEMBER(EINA_VALUE_TYPE_ULONG, Eina_Stat, mtime),
> + EINA_VALUE_STRUCT_MEMBER(EINA_VALUE_TYPE_ULONG, Eina_Stat, mtimensec),
> + EINA_VALUE_STRUCT_MEMBER(EINA_VALUE_TYPE_ULONG, Eina_Stat, ctime),
> + EINA_VALUE_STRUCT_MEMBER(EINA_VALUE_TYPE_ULONG, Eina_Stat, ctimensec));
those with time_t (ctime?) should be TYPE_TIMESTAMP, no?
> + cpy = calloc(1, sizeof (Eina_Stat));
> + if (!cpy) goto on_error;
>
> - memcpy(c, stat, sizeof (Eina_Stat));
> - efl_promise_value_set(p, c, free);
> + memcpy(cpy, stat, sizeof (Eina_Stat));
> + value.memory = cpy;
this is not needed... if you pset(), it will copy everything, then no
need to cpy = calloc(), just put it on stack.
> - end:
> - efl_del(p);
> + if (!eina_value_setup(&r, EINA_VALUE_TYPE_STRUCT))
> + goto on_error;
> + if (!eina_value_pset(&r, &value))
> + goto on_error;
here... this will malloc() an internal r.ptr of Eina_Value_Struct...
which internally should malloc() an inner ".memory" and copy
everything.
--
Gustavo Sverzut Barbieri
--------------------------------------
Mobile: +55 (16) 99354-9890
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic