This is the core asynchronous input/output operation. More...

Data Structures

struct  _Eio_Progress
 Represents the current progress of the operation. More...
 

Typedefs

typedef enum _Eio_File_Op Eio_File_Op
 Input/Output operations on files.
 
typedef struct _Eio_File Eio_File
 Generic asynchronous I/O reference.
 
typedef struct _Eio_Progress Eio_Progress
 Progress information on a specific operation.
 
typedef Eina_Bool(* Eio_Filter_Cb )(void *data, Eio_File *handler, const char *file)
 
typedef void(* Eio_Main_Cb )(void *data, Eio_File *handler, const char *file)
 
typedef Eina_Bool(* Eio_Filter_Direct_Cb )(void *data, Eio_File *handler, const Eina_File_Direct_Info *info)
 
typedef Eina_Bool(* Eio_Filter_Dir_Cb )(void *data, Eio_File *handler, Eina_File_Direct_Info *info)
 
typedef void(* Eio_Main_Direct_Cb )(void *data, Eio_File *handler, const Eina_File_Direct_Info *info)
 
typedef void(* Eio_Stat_Cb )(void *data, Eio_File *handler, const Eina_Stat *stat)
 
typedef void(* Eio_Progress_Cb )(void *data, Eio_File *handler, const Eio_Progress *info)
 
typedef void(* Eio_Eet_Open_Cb )(void *data, Eio_File *handler, Eet_File *file)
 
typedef void(* Eio_Open_Cb )(void *data, Eio_File *handler, Eina_File *file)
 
typedef Eina_Bool(* Eio_Filter_Map_Cb )(void *data, Eio_File *handler, void *map, size_t length)
 
typedef void(* Eio_Map_Cb )(void *data, Eio_File *handler, void *map, size_t length)
 
typedef void(* Eio_Done_Data_Cb )(void *data, Eio_File *handler, const char *read_data, unsigned int size)
 
typedef void(* Eio_Done_String_Cb )(void *data, Eio_File *handler, const char *xattr_string)
 
typedef void(* Eio_Done_Double_Cb )(void *data, Eio_File *handler, double xattr_double)
 
typedef void(* Eio_Done_Int_Cb )(void *data, Eio_File *handler, int i)
 
typedef void(* Eio_Done_ERead_Cb )(void *data, Eio_File *handler, void *decoded)
 
typedef void(* Eio_Done_Read_Cb )(void *data, Eio_File *handler, void *read_data, unsigned int size)
 
typedef void(* Eio_Done_Cb )(void *data, Eio_File *handler)
 
typedef void(* Eio_Error_Cb )(void *data, Eio_File *handler, int error)
 
typedef void(* Eio_Eet_Error_Cb )(void *data, Eio_File *handler, Eet_Error err)
 

Enumerations

enum  _Eio_File_Op {
  EIO_FILE_COPY,
  EIO_FILE_MOVE,
  EIO_DIR_COPY,
  EIO_DIR_MOVE,
  EIO_UNLINK,
  EIO_FILE_GETPWNAM,
  EIO_FILE_GETGRNAM
}
 Input/Output operations on files. More...
 

Functions

Eio_Fileeio_file_ls (const char *dir, Eio_Filter_Cb filter_cb, Eio_Main_Cb main_cb, Eio_Done_Cb done_cb, Eio_Error_Cb error_cb, const void *data)
 List contents of a directory without locking your app.
 
Eio_Fileeio_file_direct_ls (const char *dir, Eio_Filter_Direct_Cb filter_cb, Eio_Main_Direct_Cb main_cb, Eio_Done_Cb done_cb, Eio_Error_Cb error_cb, const void *data)
 List contents of a directory without locking your app.
 
Eio_Fileeio_file_stat_ls (const char *dir, Eio_Filter_Direct_Cb filter_cb, Eio_Main_Direct_Cb main_cb, Eio_Done_Cb done_cb, Eio_Error_Cb error_cb, const void *data)
 List content of a directory without locking your app.
 
Eio_Fileeio_dir_stat_ls (const char *dir, Eio_Filter_Direct_Cb filter_cb, Eio_Main_Direct_Cb main_cb, Eio_Done_Cb done_cb, Eio_Error_Cb error_cb, const void *data)
 List the content of a directory and all it's sub-content asynchronously.
 
Eio_Fileeio_dir_direct_ls (const char *dir, Eio_Filter_Dir_Cb filter_cb, Eio_Main_Direct_Cb main_cb, Eio_Done_Cb done_cb, Eio_Error_Cb error_cb, const void *data)
 List the content of a directory and all it's sub-content asynchronously.
 
Eio_Fileeio_file_direct_stat (const char *path, Eio_Stat_Cb done_cb, Eio_Error_Cb error_cb, const void *data)
 Stat a file/directory.
 
Eio_Fileeio_file_chmod (const char *path, mode_t mode, Eio_Done_Cb done_cb, Eio_Error_Cb error_cb, const void *data)
 Change right of a path.
 
Eio_Fileeio_file_chown (const char *path, const char *user, const char *group, Eio_Done_Cb done_cb, Eio_Error_Cb error_cb, const void *data)
 Change owner of a path.
 
Eio_Fileeio_file_unlink (const char *path, Eio_Done_Cb done_cb, Eio_Error_Cb error_cb, const void *data)
 Unlink a file/directory.
 
Eio_Fileeio_file_mkdir (const char *path, mode_t mode, Eio_Done_Cb done_cb, Eio_Error_Cb error_cb, const void *data)
 Create a new directory.
 
Eio_Fileeio_file_move (const char *source, const char *dest, Eio_Progress_Cb progress_cb, Eio_Done_Cb done_cb, Eio_Error_Cb error_cb, const void *data)
 Move a file asynchronously.
 
Eio_Fileeio_file_copy (const char *source, const char *dest, Eio_Progress_Cb progress_cb, Eio_Done_Cb done_cb, Eio_Error_Cb error_cb, const void *data)
 Copy a file asynchronously.
 
Eio_Fileeio_dir_move (const char *source, const char *dest, Eio_Filter_Direct_Cb filter_cb, Eio_Progress_Cb progress_cb, Eio_Done_Cb done_cb, Eio_Error_Cb error_cb, const void *data)
 Move a directory and it's content asynchronously.
 
Eio_Fileeio_dir_copy (const char *source, const char *dest, Eio_Filter_Direct_Cb filter_cb, Eio_Progress_Cb progress_cb, Eio_Done_Cb done_cb, Eio_Error_Cb error_cb, const void *data)
 Copy a directory and it's content asynchronously.
 
Eio_Fileeio_dir_unlink (const char *path, Eio_Filter_Direct_Cb filter_cb, Eio_Progress_Cb progress_cb, Eio_Done_Cb done_cb, Eio_Error_Cb error_cb, const void *data)
 Remove a directory and it's content asynchronously.
 

Detailed Description

This is the core asynchronous input/output operation.

All the functions in this group perform input/output operations in a separate thread using the infrastructure provided by Ecore_Thread and Eina, this means that all functions here are non-blocking.

The functions displayed here are used to make basic file operations, like listing the content of a directory, creating a new directory, etc.

Enumeration Type Documentation

Input/Output operations on files.

This enum represents the operations that can be done.

Enumerator:
EIO_FILE_COPY 

I/O operation is about a specific file copy.

EIO_FILE_MOVE 

I/O operation is about a specific file move.

EIO_DIR_COPY 

I/O operation is about a specific directory copy.

EIO_DIR_MOVE 

I/O operation is about a specific directory move.

EIO_UNLINK 

I/O operation is about destroying a path: source will point to base path to be destroyed, and dest will point to to path destroyed by this I/O.

EIO_FILE_GETPWNAM 

I/O operation is trying to get uid from user name.

EIO_FILE_GETGRNAM 

I/O operation is trying to get gid from user name.

Function Documentation

Eio_File* eio_file_ls ( const char *  dir,
Eio_Filter_Cb  filter_cb,
Eio_Main_Cb  main_cb,
Eio_Done_Cb  done_cb,
Eio_Error_Cb  error_cb,
const void *  data 
)

List contents of a directory without locking your app.

Parameters
dirThe directory to list.
filter_cbCallback used to decide if the file will be passed to main_cb
main_cbCallback called for each listed file if it was not filtered.
done_cbCallback called when the ls operation is done.
error_cbCallback called when either the directory could not be opened or the operation has been canceled.
dataUnmodified user data passed to callbacks
Returns
A reference to the I/O operation.

This function is responsible for listing the content of a directory without blocking your application. It's equivalent to the "ls" shell command. Every file will be passed to the filter_cb, so it's your job to decide if you want to pass the file to the main_cb or not. Return EINA_TRUE to pass it to the main_cb or EINA_FALSE to ignore it.

References EINA_SAFETY_ON_NULL_RETURN_VAL, and eina_stringshare_add().

Eio_File* eio_file_direct_ls ( const char *  dir,
Eio_Filter_Direct_Cb  filter_cb,
Eio_Main_Direct_Cb  main_cb,
Eio_Done_Cb  done_cb,
Eio_Error_Cb  error_cb,
const void *  data 
)

List contents of a directory without locking your app.

Parameters
dirThe directory to list.
filter_cbCallback used to decide if the file will be passed to main_cb
main_cbCallback called from the main loop for each accepted file (not filtered).
done_cbCallback called from the main loop after the contents of the directory has been listed.
error_cbCallback called from the main loop when either the directory could not be opened or the operation has been canceled.
dataUnmodified user data passed to callbacks
Returns
A reference to the I/O operation.

eio_file_direct_ls runs eina_file_direct_ls in a separate thread using ecore_thread_feedback_run. This prevents any blocking in your apps. Every file will be passed to the filter_cb, so it's your job to decide if you want to pass the file to the main_cb or not. Return EINA_TRUE to pass it to the main_cb or EINA_FALSE to ignore it.

References EINA_SAFETY_ON_NULL_RETURN_VAL, and eina_stringshare_add().

Eio_File* eio_file_stat_ls ( const char *  dir,
Eio_Filter_Direct_Cb  filter_cb,
Eio_Main_Direct_Cb  main_cb,
Eio_Done_Cb  done_cb,
Eio_Error_Cb  error_cb,
const void *  data 
)

List content of a directory without locking your app.

Parameters
dirThe directory to list.
filter_cbCallback used to decide if the file will be passed to main_cb
main_cbCallback called from the main loop for each accepted file (not filtered).
done_cbCallback called from the main loop after the contents of the directory has been listed.
error_cbCallback called from the main loop when either the directory could not be opened or the operation has been canceled.
dataUnmodified user data passed to callbacks
Returns
A reference to the I/O operation.

Every file will be passed to the filter_cb, so it's your job to decide if you want to pass the file to the main_cb or not. Return EINA_TRUE to pass it to the main_cb or EINA_FALSE to ignore it.

References EINA_SAFETY_ON_NULL_RETURN_VAL, and eina_stringshare_add().

Eio_File* eio_dir_stat_ls ( const char *  dir,
Eio_Filter_Direct_Cb  filter_cb,
Eio_Main_Direct_Cb  main_cb,
Eio_Done_Cb  done_cb,
Eio_Error_Cb  error_cb,
const void *  data 
)

List the content of a directory and all it's sub-content asynchronously.

Parameters
dirThe directory to list.
filter_cbCallback used to decide if the file will be passed to main_cb
main_cbCallback called from the main loop for each accepted file (not filtered).
done_cbCallback called from the main loop after the contents of the directory has been listed.
error_cbCallback called from the main loop when either the directory could not be opened or the operation has been canceled.
dataUnmodified user data passed to callbacks
Returns
A reference to the I/O operation.

eio_dir_stat_ls() runs eina_file_stat_ls() recursively in a separate thread using ecore_thread_feedback_run. This prevents any blocking in your apps. Every file will be passed to the filter_cb, so it's your job to decide if you want to pass the file to the main_cb or not. Return EINA_TRUE to pass it to the main_cb or EINA_FALSE to ignore it.

References EINA_SAFETY_ON_NULL_RETURN_VAL, and eina_stringshare_add().

Eio_File* eio_dir_direct_ls ( const char *  dir,
Eio_Filter_Dir_Cb  filter_cb,
Eio_Main_Direct_Cb  main_cb,
Eio_Done_Cb  done_cb,
Eio_Error_Cb  error_cb,
const void *  data 
)

List the content of a directory and all it's sub-content asynchronously.

Parameters
dirThe directory to list.
filter_cbCallback used to decide if the file will be passed to main_cb
main_cbCallback called from the main loop for each accepted file (not filtered).
done_cbCallback called from the main loop after the contents of the directory has been listed.
error_cbCallback called from the main loop when either the directory could not be opened or the operation has been canceled.
dataUnmodified user data passed to callbacks
Returns
A reference to the I/O operation.

eio_dir_direct_ls() runs eina_file_direct_ls() recursively in a separate thread using ecore_thread_feedback_run. This prevents any blocking in your apps. Every file will be passed to the filter_cb, so it's your job to decide if you want to pass the file to the main_cb or not. Return EINA_TRUE to pass it to the main_cb or EINA_FALSE to ignore it.

References EINA_SAFETY_ON_NULL_RETURN_VAL, and eina_stringshare_add().

Eio_File* eio_file_direct_stat ( const char *  path,
Eio_Stat_Cb  done_cb,
Eio_Error_Cb  error_cb,
const void *  data 
)

Stat a file/directory.

Parameters
pathThe path to stat.
done_cbCallback called from the main loop when stat was successfully called.
error_cbCallback called from the main loop when stat failed or has been canceled.
dataUnmodified user data passed to callbacks
Returns
A reference to the I/O operation.

eio_file_direct_stat calls stat in another thread. This prevents any blocking in your apps.

References eina_stringshare_add().

Referenced by eio_monitor_stringshared_add().

Eio_File* eio_file_chmod ( const char *  path,
mode_t  mode,
Eio_Done_Cb  done_cb,
Eio_Error_Cb  error_cb,
const void *  data 
)

Change right of a path.

Parameters
pathThe directory path to change access right.
modeThe permission to set, follow (mode & ~umask & 0777).
done_cbCallback called when the operation is completed.
error_cbCallback called from if something goes wrong.
dataUnmodified user data passed to callbacks.
Returns
A reference to the I/O operation.

Set a new permission of a path changing it to the mode passed as argument. It's equivalent to the chmod command.

References eina_stringshare_add().

Eio_File* eio_file_chown ( const char *  path,
const char *  user,
const char *  group,
Eio_Done_Cb  done_cb,
Eio_Error_Cb  error_cb,
const void *  data 
)

Change owner of a path.

Parameters
pathThe directory path to change owner.
userThe new user to set (can be NULL).
groupThe new group to set (can be NULL).
done_cbCallback called when the operation is completed.
error_cbCallback called from if something goes wrong.
dataUnmodified user data passed to callbacks
Returns
A reference to the I/O operation.

This function will change the owner of a path, setting it to the user and group passed as argument. It's equivalent to the chown shell command.

References eina_stringshare_add().

Eio_File* eio_file_unlink ( const char *  path,
Eio_Done_Cb  done_cb,
Eio_Error_Cb  error_cb,
const void *  data 
)

Unlink a file/directory.

Parameters
pathThe path to unlink.
done_cbCallback called when the operation is completed.
error_cbCallback called from if something goes wrong.
dataUnmodified user data passed to callbacks.
Returns
A reference to the I/O operation.

This function will erase a file.

References eina_stringshare_add().

Eio_File* eio_file_mkdir ( const char *  path,
mode_t  mode,
Eio_Done_Cb  done_cb,
Eio_Error_Cb  error_cb,
const void *  data 
)

Create a new directory.

Parameters
pathThe directory path to create.
modeThe permission to set, follow (mode & ~umask & 0777).
done_cbCallback called when the operation is completed.
error_cbCallback called from if something goes wrong.
dataUnmodified user data passed to callbacks
Returns
A reference to the I/O operation.

Creates a new directory using the mode provided.

References eina_stringshare_add().

Eio_File* eio_file_move ( const char *  source,
const char *  dest,
Eio_Progress_Cb  progress_cb,
Eio_Done_Cb  done_cb,
Eio_Error_Cb  error_cb,
const void *  data 
)

Move a file asynchronously.

Parameters
sourceShould be the name of the file to move the data from.
destShould be the name of the file to move the data to.
progress_cbCallback called to know the progress of the move.
done_cbCallback called when the move is done.
error_cbCallback called when something goes wrong.
dataUnmodified user data passed to callbacks

This function will copy a file from source to dest. It will try to use splice if possible, if not it will fallback to mmap/write. It will try to preserve access right, but not user/group identification.

References EINA_SAFETY_ON_NULL_RETURN_VAL, eina_stringshare_add(), and EIO_FILE_MOVE.

Eio_File* eio_file_copy ( const char *  source,
const char *  dest,
Eio_Progress_Cb  progress_cb,
Eio_Done_Cb  done_cb,
Eio_Error_Cb  error_cb,
const void *  data 
)

Copy a file asynchronously.

Parameters
sourceShould be the name of the file to copy the data from.
destShould be the name of the file to copy the data to.
progress_cbCallback called to know the progress of the copy.
done_cbCallback called when the copy is done.
error_cbCallback called when something goes wrong.
dataUnmodified user data passed to callbacks

This function will copy a file from source to dest. It will try to use splice if possible, if not it will fallback to mmap/write. It will try to preserve access right, but not user/group identification.

References EINA_SAFETY_ON_NULL_RETURN_VAL, eina_stringshare_add(), and EIO_FILE_COPY.

Eio_File* eio_dir_move ( const char *  source,
const char *  dest,
Eio_Filter_Direct_Cb  filter_cb,
Eio_Progress_Cb  progress_cb,
Eio_Done_Cb  done_cb,
Eio_Error_Cb  error_cb,
const void *  data 
)

Move a directory and it's content asynchronously.

Parameters
sourceShould be the name of the directory to copy the data from.
destShould be the name of the directory to copy the data to.
filter_cbPossible to deny the move of some files/directories.
progress_cbCallback called to know the progress of the copy.
done_cbCallback called when the copy is done.
error_cbCallback called when something goes wrong.
dataUnmodified user data passed to callbacks

This function will move a directory and all it's content from source to dest. It will try first to rename the directory, if not it will try to use splice if possible, if not it will fallback to mmap/write. It will try to preserve access right, but not user/group identity. Every file will be passed to the filter_cb, so it's your job to decide if you want to pass the file to the main_cb or not. Return EINA_TRUE to pass it to the main_cb or EINA_FALSE to ignore it.

Note
if a rename occur, the filter callback will not be called.

References EINA_SAFETY_ON_NULL_RETURN_VAL, eina_stringshare_add(), and EIO_DIR_MOVE.

Eio_File* eio_dir_copy ( const char *  source,
const char *  dest,
Eio_Filter_Direct_Cb  filter_cb,
Eio_Progress_Cb  progress_cb,
Eio_Done_Cb  done_cb,
Eio_Error_Cb  error_cb,
const void *  data 
)

Copy a directory and it's content asynchronously.

Parameters
sourceShould be the name of the directory to copy the data from.
destShould be the name of the directory to copy the data to.
filter_cbPossible to deny the move of some files/directories.
progress_cbCallback called to know the progress of the copy.
done_cbCallback called when the copy is done.
error_cbCallback called when something goes wrong.
dataUnmodified user data passed to callbacks

This function will copy a directory and all it's content from source to dest. It will try to use splice if possible, if not it will fallback to mmap/write. It will try to preserve access right, but not user/group identity. Every file will be passed to the filter_cb, so it's your job to decide if you want to pass the file to the main_cb or not. Return EINA_TRUE to pass it to the main_cb or EINA_FALSE to ignore it.

References EINA_SAFETY_ON_NULL_RETURN_VAL, eina_stringshare_add(), and EIO_DIR_COPY.

Eio_File* eio_dir_unlink ( const char *  path,
Eio_Filter_Direct_Cb  filter_cb,
Eio_Progress_Cb  progress_cb,
Eio_Done_Cb  done_cb,
Eio_Error_Cb  error_cb,
const void *  data 
)

Remove a directory and it's content asynchronously.

Parameters
pathShould be the name of the directory to destroy.
filter_cbPossible to deny the move of some files/directories.
progress_cbCallback called to know the progress of the copy.
done_cbCallback called when the copy is done.
error_cbCallback called when something goes wrong.
dataUnmodified user data passed to callbacks

This function will remove a directory and all it's content. Every file will be passed to the filter_cb, so it's your job to decide if you want to pass the file to the main_cb or not. Return EINA_TRUE to pass it to the main_cb or EINA_FALSE to ignore it.

References EINA_SAFETY_ON_NULL_RETURN_VAL, eina_stringshare_add(), and EIO_UNLINK.