eio_dir_copy() tutorial
To use eio_dir_copy(), you basically need the source and destination files (or directories), and set three callbacks:
- The notification callback, which allows you to know if a file or a directory is copied, and the progress of the copy.
- The end callback, which is called when the copy is finished.
- The error callback, which is called if an error occured. You can then retrieve the error type as an errno error.
- Warning
- It is the user's duty to provide the "right target". It means that copying to '.' will copy the content directly inside '.' and not in a subdirectory.
Here is a simple example:
* #include <Ecore.h>
* #include <Eio.h>
*
* static void
* {
* switch (info->op)
* {
* case EIO_FILE_COPY:
* printf("[%s] %f%%\n", info->dest, info->percent);
* break;
* case EIO_DIR_COPY:
* printf("global [%li/%li] %f%%\n", info->current, info->max, info->percent);
* break;
* }
* }
*
* static void
* _test_done_cb(void *data, Eio_File *handler)
* {
* printf("copy done\n");
* ecore_main_loop_quit();
* }
*
* static void
* {
* fprintf(stderr, "error: [%s]\n", strerror(error));
* ecore_main_loop_quit();
* }
*
* int
* main(int argc, char **argv)
* {
* Eio_File *cp;
*
* if (argc != 3)
* {
* fprintf(stderr, "eio_cp source_file destination_file\n");
* return -1;
* }
*
* ecore_init();
* eio_init();
*
* cp = eio_dir_copy(argv[1], argv[2],
* _test_notify_cb,
* _test_done_cb,
* _test_error_cb,
* NULL);
*
* ecore_main_loop_begin();
*
* eio_shutdown();
* ecore_shutdown();
*
* return 0;
* }
*