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