If ecore_file_monitor_del is called inside the file monitor callback function,
eina_list found from monitor_hash would be freed. (You can check this inside
eina_hash_list_remove.)
Then, EINA_LIST_FOREACH makes one more for loop with invalid eina_list pointer.
EINA_LIST_FOREACH_SAFE can prevent from this problem.
Summary:
Some parameter's name are different in annotations and statements,
so it occurs doxygen warning.
To fix it, rename that parameters.
Test Plan: API Doxygen Revision
Reviewers: raster, cedric, jpeg, myoungwoon, Jaehyun_Cho
Reviewed By: cedric
Differential Revision: https://phab.enlightenment.org/D5313
Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
Covers: Ecore_Drm, Ecore_Evas, Ecore_File, Ecore_IMF, and
Ecore_IMF_Evas API reference doxygen.
Summary: I had fixed some typos and wrong expressions, such
as capital letters, singular Etc. in Ecore_Drm, Ecore_Evas,
Ecore_File, Ecore_IMF, and Ecore_IMF_Evas API reference doxygen.
Test Plan: Doxygen Revision
Reviewers: stefan, cedric, raster, jpeg, Jaehyun_Cho
Subscribers: conr2d
Differential Revision: https://phab.enlightenment.org/D4680
Summary:
If the file with a new path was created and 'rename' wants to replace the old path to the new path. 'rename' will return:
Windows 7: -1 (errno=EEXIST) (EEXIST == 17)
Ubuntu: 0
**EEXIST**
**Ubuntu**: The link named by new is a directory that is not an empty directory. (https://linux.die.net/man/3/rename)
**Windows 7**: Files exist. An attempt has been made to create a file that already exists. For example, the _O_CREAT and _O_EXCL flags are specified in an _open call, but the named file already exists.(https://msdn.microsoft.com/en-us/library/5814770t.aspx)
Test Plan:
**Sample code to rename in Linux and Windows if the file with the new name already exists:**
int main()
{
const char *_old = "old";
const char *_new = "new";
int fd1 = open(_old, O_CREAT);
close(fd1);
int fd2 = open(_new, O_CREAT);
close(fd2);
printf("rename:\t%s -> %s\n", _old, _new);
int r = rename(_old, _new);
if (r == 0)
{
printf("GOOD\n");
}
else
{
printf("CODE ERROR:\n" );
printf(" -rename...: %d\n", r );
printf(" -errno....: %d\n", errno);
}
return 0;
}
Reviewers: raster, vtorri, jpeg, NikaWhite, reutskiy.v.v, an.kroitor, cedric
Reviewed By: cedric
Subscribers: artem.popov, cedric, jpeg
Tags: #efl, #windows
Differential Revision: https://phab.enlightenment.org/D4561
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Greatly reduce code complexity while providing better support, at
least according to @netstar efl_net_dialer_http works better than
traditional ecore_con_url on BSD.
Summary: There is wrong comparing while using strcmp function. Should be inverted.
Reviewers: cedric, raster, NikaWhite
Reviewed By: NikaWhite
Subscribers: cedric, NikaWhite, jpeg
Differential Revision: https://phab.enlightenment.org/D4291
lots of long paths for monitoring file paths for icons etc. are in
memory for efreetd. this reduces that memory by sharing them much more.
@optimization
On Windows, both backslash and slash can be used as file path
separators. Therefore, it is fixed to consider backslash as a file path
separator as well on Windows.
@fix
On windows, stat() returns -1 if a path is finished with a \ or /,
so replace all stat() calls with a function which removes the trailing
slash or backslash on Windows
At this stage the code duplicate many code path for avoiding potential
borkage on Unix system. During 1.17 release cycle, it would be nice to
refactor this piece.
@fix
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
this should hugely improve the speed of file monitor event processing;
in my test case, 800,000+ monitors were present and the application was
entirely unable to process them
valgrind was most unhappy with ecore_file_app_exe_get(). like:
==8331== Invalid write of size 1
==8331== at 0x68DE90A: ecore_file_app_exe_get (ecore_file.c:994)
==8331== Address 0x1348e58f is 0 bytes after a block of size 31 alloc'd
==8331== at 0x4C28C20: malloc (vg_replace_malloc.c:296)
==8331== Invalid write of size 1
==8331== at 0x68DE948: ecore_file_app_exe_get (ecore_file.c:1000)
==8331== Address 0x1348e599 is 10 bytes after a block of size 31 alloc'd
==8331== at 0x4C28C20: malloc (vg_replace_malloc.c:296)
etc. etc. - so i rewrote it cleanly using strbuf to save code and
effort. cleaner now and ACTUALLY works correctly... and no valgrind
complaints.
@fix
Summary:
Added condition that if given path does not exist it returns NULL
@fix
Signed-off-by: kabeer khan <kabeer.khan@samsung.com>
Reviewers: englebass, devilhorns
Reviewed By: devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1640
Summary:
Existing doc specifies that ecore_file_monitor_add returns NULL if path is not file.
Removed this line as it works if path is either file or directory.
Signed-off-by: kabeer khan <kabeer.khan@samsung.com>
Reviewers: devilhorns, englebass
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1635