On Wed, Sep 27, 2017 at 8:35 PM, Cedric BAIL <cedric.b...@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 <ced...@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

Reply via email to