From a5abd3d320821a7d7026b29bcd4a582fce9e687f Mon Sep 17 00:00:00 2001 From: Cedric BAIL Date: Wed, 27 Oct 2010 12:30:12 +0000 Subject: [PATCH] * eio: add eio_file_ls() tutorial. SVN revision: 53915 --- legacy/eio/src/lib/eio_file.c | 84 +++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) diff --git a/legacy/eio/src/lib/eio_file.c b/legacy/eio/src/lib/eio_file.c index 9f80f482f6..0902bc39c8 100644 --- a/legacy/eio/src/lib/eio_file.c +++ b/legacy/eio/src/lib/eio_file.c @@ -18,6 +18,90 @@ * License along with this library; * if not, see . */ + +/** + * @page tutorial_file_ls eio_file_ls() tutorial + * + * To use eio_file_ls(), you just need to define four callbacks: + * + * @li The filter callback, which allow or not a file to be seen + * by the main loop handler. This callback run in a separated thread. + * @li 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 make sense to delay the insertion a little, so you get a chance + * to update the canvas for a bunch of file instead of one by one. + * @li 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. + * @li The error callback, which is called if an error occured or + * if the listing was cancelled during it's run. You can then retrieve + * the error type as an errno error. + * + * Here is a simple example: + * + * @code + * #include + * #include + * + * static Eina_Bool + * _test_filter_cb(void *data, const char *file) + * { + * fprintf(stderr, "ACCEPTING: %s\n", file); + * return EINA_TRUE; + * } + * + * static void + * _test_main_cb(void *data, const char *file) + * { + * fprintf(stderr, "PROCESS: %s\n", file); + * } + * + * static void + * _test_done_cb(void *data) + * { + * printf("ls done\n"); + * ecore_main_loop_quit(); + * } + * + * static void + * _test_error_cb(int error, void *data) + * { + * 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; + * } + * + * @endcode + */ + #include "eio_private.h" #include "Eio.h"