Tizen Native API  3.0
eio_file_ls() tutorial

To use eio_file_ls(), you just need to define four callbacks:

  • The filter callback, which allows a file to be seen (or not) by the main loop handler. This callback runs in a separate thread.
  • The main callback, which receive in the main loop all the file that are allowed by the filter. If you are updating a user interface it makes sense to delay the insertion a little, so you get a chance to update the canvas for a bunch of files instead of one by one.
  • The end callback, which is called in the main loop when the content of the directory has been correctly scanned and all the file notified to the main loop.
  • The error callback, which is called if an error occurred or if the listing was cancelled during its run. You can then retrieve the error type as an errno error.

Here is a simple example:

 #include <Ecore.h>
 #include <Eio.h>

 static Eina_Bool
 _test_filter_cb(void *data, Eio_File *handler, const char *file)
 {
    fprintf(stderr, "ACCEPTING: %s\n", file);
    return EINA_TRUE;
 }

 static void
 _test_main_cb(void *data, Eio_File *handler, const char *file)
 {
    fprintf(stderr, "PROCESS: %s\n", file);
 }

 static void
 _test_done_cb(void *data, Eio_File *handler)
 {
    printf("ls done\n");
    ecore_main_loop_quit();
 }

 static void
 _test_error_cb(void *data, Eio_File *handler, int error)
 {
    fprintf(stderr, "error: [%s]\n", strerror(error));
    ecore_main_loop_quit();
 }

 int
 main(int argc, char **argv)
 {
    Eio_File *cp;

    if (argc != 2)
      {
    fprintf(stderr, "eio_ls directory\n");
    return -1;
      }

    ecore_init();
    eio_init();

    cp = eio_file_ls(argv[1],
                     _test_filter_cb,
                     _test_main_cb,
                     _test_done_cb,
                     _test_error_cb,
                     NULL);

    ecore_main_loop_begin();

    eio_shutdown();
    ecore_shutdown();

    return 0;
 }