Commit Graph

97 Commits

Author SHA1 Message Date
Carsten Haitzler a149ff6d79 efl -> fix possible null deref in efreetd ipc
this fixes CID 1308358
2015-06-25 11:32:58 +09:00
Carsten Haitzler 5abfefe99e efl - efreetd service move from dbus session bus to ecore ipc
this fixes warnings about no efreet dbus session bus in non session
environments as brought up on the mailing lists with:

Subject: Re: [E-devel] [EGIT] [core/efl] master 01/01: edje: unset
efreet cache update flag to prevent dbus connections

this moves all of efreetd client and server to ecore ipc, with client
auto-launching efreetd if not found as a service and trying for up to
500ms to connect. efreetd times out on last connection or no
connections after 10sec so it wont hang around forever if not in use.
it seems to work in my testing, so let me know if there is an issue.

@fix
2015-06-24 19:28:17 +09:00
Carsten Haitzler 34bb3bb9a5 efreetd - cache - mark cd as const as it isnt needing a free on return 2015-04-14 13:52:37 +09:00
Chris Michael 4b950b55c0 efreetd: If we fail to allocate space for subdir_cache, then get out
Summary: Fix coverity CID1294212 (potential Null pointer dereference) as
the alloc for subdir_cache Could fail, however if it does we Were
still trying to use it. In the case that it fails, ERR msg and return.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-04-13 20:29:53 -04:00
Carsten Haitzler 701504c7a4 efreed cache - fix coverity warning on rm cleanup on sanity check
sanity check didnt check return value of ecore_file_recursive_rm(). do
that. coverity should be happy now.
2015-04-13 09:47:24 +09:00
Carsten Haitzler e05eb13f70 efreetd - fix loading of extra_icons.dirs and icon.exts to not lose char
efreetd was losing the last char on every line of extra_icon.dirs and
icon.exts thus resulting in gradual degredation of these files as more
and more changes happen to have things like:

.jpeg
.jpe
.jp
.j
.

etc. for extension or dirs like

/home/raster/.e/e/icons
/home/raster/.e/e/icon
/home/raster/.e/e/ico
...
/home/ras
/home/ra
/home/r
...
/ho
/h
/

.. you get the idea. before long the list of extra icon dirs (and
extensions) was massigve and caued all sorts of filesystem rummaging.
this fixes that to no longer degrade these files. this also changes
their names to force new files to be used instead of the broken old
ones.
2015-04-13 09:45:29 +09:00
Carsten Haitzler 6b493430df efreetd - cache generators - dont unlink then rename - fix
if you unlink then rename, there is a gap between the unlink and
rename - no file is there. the point of the rename is to be atomic.
either old file OR new file. nothing in between. this fixes that race.
2015-04-13 09:15:43 +09:00
Carsten Haitzler cd2b3c228d efreetd - startup slowness fix for recursing directories
this fixes major slowness in things like enlightenment login. when
enlightenment starts, efreetd is started. efreetd takes a long time to
start because it is scanning lots of directories recursively. it is
early in code freeze, so i think this can go in as a fix, even though
it is more of an optimization, but as such it has a fairly major speed
impact, so i consider this fixing a core performance problem for
things like logging in. The solution is a cache file containing all
the sub directories in a directory tree. we still have to stat every
directory, but this avoids a lot of stating of all files as well and
avoids any readirs etc. so it is much faster. on an ssd this comes out
to 4 times faster for efreetd to start up. on an hdd it's about 2x
faster to start uncached.

this should bea good fix for startup times - on my systems thats a 1
second speedup on ssd (out of about 8 seconds boot time) and 3 seconds
on hdd (out of about 39 seconds boot). so w save 1 and 3 seconds
respecively in boot + login.

now can we get this to 0 or close? that's a matter of designing
something like a deferred scan + monitor add so we wait until "startup
is done" then set up in the bg for a bit. that might shave another 3
seconds off boot time for hdd's but for ssd's wil barely blip (maybe
save 0.1 sec). so leave that till normal dev mode.

@fix
2015-04-13 09:09:42 +09:00
Carsten Haitzler 44fe8b987e efreetd - improve sanity checking for recursive icon monitoring
i found my efreetd was not just monitoring a small set of dirs but
literally $HOME - recursively. this explains a lot of performance
issues i have seen on spinning hdd's vs ssd's. i never knew if was in
efreetd though... until now. for whatever reason my efret cache caused
efreet to try monitro a list like:

/
/h
/ho
/hom
/home
/home/
/home/r
... etc.

when trying to monitor something like:

/home/raster/.local/share/icons

that means it ended up trying $HOME as wellas a vast range of dirs it
just shouldn't sensibly ever try. i have no idea how my cache ended up
this way, but deleting it and re-populating it fixed it. so this ads
code to detect such insanity (as wellas give actual complaints on deep
recursion so we can see things better later). not a bug fix as such,
but a major improvement to detecting bugs which is what we want for
stability.

I also noticed that one legacy pixmaps dir is not recursively
monitored, but another is - so be consistent and recurs both.

Also apply checks to desktop file monitoring too.
2015-04-12 12:19:41 +09:00
Mike Blumenkrantz 668fcab941 efreetd: temporarily blacklist saving and monitoring root directory
ref T2280
2015-04-09 20:08:17 -04:00
Carsten Haitzler 1551268280 efreetd - cache - fix handling a text index file with 0 length lines
this fixes an efreetd cache crash where files like icon.exts might
have lines with just a newline and no extension/content on the line.

@fix
2015-04-01 20:44:57 +09:00
vivek d7c1987d0f efreet: pass the correct option from the user input.
Summary:
Pass the correct option -f for flush

@fix

Signed-off-by: vivek <vivek.ellur@samsung.com>

Reviewers: devilhorns, englebass

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D1801

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2014-12-25 21:32:55 +01:00
Sebastian Dransfeld 793fd5e847 efreet: Implement fields added by desktop spec 1.1 2014-09-25 08:47:45 +02:00
Sebastian Dransfeld a939cd569c efreet: add check for cache version
If version differs between new and old cache, signal change
2014-09-24 21:28:32 +02:00
Sebastian Dransfeld 54d5653e1b efreet: Store known desktop environments 2014-09-18 10:48:50 +02:00
Carsten Haitzler 0aa4de9f1d efreet - minor formatting and move set prirority to very start 2013-12-28 10:22:23 +09:00
Daniel Juyung Seo 76d8532b54 efl: Unified eina critical manro to CRI.
Being annoyed by different types of eina critical macros - CRI, CRIT,
 CRITICAL -, I concluded to unify them to one. Discussed on IRC and
 finally, CRI was chosen to meet the consistency with other macros -
 ERR, WRN, INF, DBG - in terms of the number of characters.
If there is any missing bits, please let me know.
2013-12-26 12:27:13 +09:00
Sebastian Dransfeld 4413b3a311 efreet: propagate scan error to caller
Current code ignored return from recursive calls, so if cache_add failed
during recursion, the parent call would still succeed.
2013-12-05 12:15:07 +01:00
Carsten Haitzler 931d02378b efreet - fix recusrion checks need to pop as well as push.
stable release - cherry-pick me!

this fixes a lack of popping the efret recursion stack handler. this
wasn't done in 1.8 and is a bug.
2013-12-05 20:04:25 +09:00
Carsten Haitzler f6f28bf75a efreet - protect efreetd from recursing too far to save overhead and mem
an errant path made its way into my efreet cache. this had a
side-effect of causing efreetd to scan my entire $HOME recursively
to monitor everything. while the original cause was $HOME getting in,
we shouldn't have efreetd sit and consume scan all of $HOME when this
is far from a normal situation. the recursive scanning is there ot
handle some minimal levels of subdirs in app directories, but not an
entire filesystem, so this mitigates the effects of errant cache data
by limiting the amount of recursion allows for icon dirs and desktop
dirs to 8 and 3 levels respectively.
2013-12-04 20:25:57 +09:00
Sebastian Dransfeld 70474a4bc5 efreet: Create stack at start of recursion
No need to check for NULL stack, we know where we start our recursive
scan, so create the stack there.

Also fixes CID1132751 and CID1132752
2013-12-04 09:12:31 +01:00
Sebastian Dransfeld 8bc17db6fa efreet: Create stack at start of recursion
No need to check for NULL stack, we know where we start our recursive
scan, so create the stack there.
2013-12-04 09:12:31 +01:00
Carsten Haitzler c69cf48746 recursive monitoring and scanning fix for icons and desktop files
this fixes T580 ... or SHOULD fix it. there is recursion detection
code now and it properly follows symlinks and dirs. it also properly
updates the file monitor tree for both icons and desktops and it only
monitors dirs, not files (as a dir picks up changes to child data).
tested and it seems not to recurse into self-referencing symlinks
(once it detects the loop) and detects changes nicely in all my tests.
2013-11-27 19:50:24 +09:00
Sebastian Dransfeld c483214170 efreet: Check for missing icon cache file
Fixes T196
2013-11-21 12:25:26 +01:00
Sebastian Dransfeld 7eebd55ebe efreet: Fix file opening
- Store result from mkstemp so we don't leak file descriptor
- No need to chmod, as we set correct umask before createing file
- Use fdopen to open file from file descriptor, not from path
2013-10-22 12:54:22 +02:00
Carsten Haitzler ed0e8b8df1 Revert "efreet: Use eina_file_mkstemp"
This reverts commit bd5a5e7fce.

sorry about this... all fine eina mkstemp use and all... but this
*BREAKS EFREET*! ibar icons stop working (vanish). efreet no longer
issues a desktop file update event to e etc. etc. etc. ... so let's
keep code that works for now even if it uses mkstemp and not eina...
:) working is better. :)
2013-10-16 22:56:38 +09:00
Sebastian Dransfeld bd5a5e7fce efreet: Use eina_file_mkstemp 2013-10-16 04:48:20 +02:00
Sebastian Dransfeld e2dabc5d23 efreet: Set umask before creating temporary file
CID 1039615
2013-10-14 13:20:44 +02:00
Sebastian Dransfeld 67a8feeb08 efreet: Set umask before creating temp file
CID 1039616
2013-10-14 13:19:59 +02:00
Sebastian Dransfeld cc89eb2af9 efreet: Check size of buffer and '\0' terminate
CID 1039595
2013-10-14 13:14:59 +02:00
Sebastian Dransfeld f854efd041 efreet: Use mkstemp for tempfile
CID: #1039615
2013-08-07 13:02:53 +02:00
Sebastian Dransfeld 6a7f417cec efreet: Check return value of chmod
CID: #1039716
2013-08-07 13:02:53 +02:00
Cedric Bail 2859d76402 efreet: set process priority on Windows too. 2013-07-12 08:42:08 +09:00
Cedric Bail 83de2e25ca efreet: it should be a #ifdef now... 2013-07-11 18:22:38 +09:00
Cedric Bail b887558afa efreet: use the correct guard. 2013-07-11 18:16:32 +09:00
Stefan Schmidt 531be113be efreet: Guard priority settign and getting functions for WIN32
These functions are not available on a mingw build. Not really needed
either so just ifdef them.
2013-07-09 09:06:21 +01:00
Sebastian Dransfeld 70d491fd68 efreetd: log to file
Since it is started as a service
2013-06-21 10:32:18 +02:00
Sebastian Dransfeld ebcd97cc93 efreet: Create cache dir in efreet_cache_init
efreetd used efreet functions before efreet init which fails.
2013-06-21 10:00:20 +02:00
Sebastian Dransfeld 58fc3a8f32 efreet: Low priority for cache rebuild 2013-06-20 13:53:54 +02:00
Eduardo Lima (Etrunko) d3292a7ae9 Split .gitignore into multiple files
Signed-off-by: Eduardo Lima (Etrunko) <eduardo.lima@intel.com>
2013-06-11 18:18:50 -03:00
Lucas De Marchi 4e3804041f Rename edbus->eldbus
git grep -l edbus2 | while read f; do sed -i 's/edbus2/eldbus/g' "$f"; done
find . -name '*edbus2*' -exec rename edbus2 eldbus {} \;

git grep -l "EDBUS" | while read f; do sed -i 's/EDBUS/ELDBUS/g' "$f"; done
git grep -l "EDBus" | while read f; do sed -i 's/EDBus/Eldbus/g' "$f"; done
git grep -l "edbus (v2)" | while read f; do sed -i 's/edbus (v2)/eldbus/g' "$f"; done
git grep -l "Edbus" | while read f; do sed -i 's/Edbus/Eldbus/g' "$f"; done
git grep -l "edbus" | while read f; do sed -i 's/edbus/eldbus/g' "$f"; done

find . -name '*edbus*' -exec rename edbus eldbus {} \;
find . -name '*EDBus*' -exec rename EDBus Eldbus {} \;
2013-04-23 12:36:29 -03:00
Cedric Bail ebdb49cf0e efreet: avoid symbol collision. 2013-03-16 15:40:33 +09:00
Lucas De Marchi 483a80be8a efl/efreet: move efreet_{icon,desktop}_cache_create under MODULE_ARCH
These binaries are called by efreetd and should be under MODULE_ARCH
dir.

And actually fix the path to efreet_desktop_cache_create that was wrong.



SVN revision: 82489
2013-01-09 22:31:59 +00:00
Gustavo Sverzut Barbieri 5c7967827b efl: easy warning fixes.
SVN revision: 82277
2013-01-05 15:42:26 +00:00
Gustavo Sverzut Barbieri 1eddf87965 efl/efreet: use eina_prefix, kill one TODO item.
SVN revision: 82219
2013-01-04 17:42:23 +00:00
Gustavo Sverzut Barbieri 0a2d116119 efl: eina_alloca.h to simplify alloca() usage.
having to replicate 18 lines per file just to access alloca() is
insane. Let's do that in Eina.h and avoid that crap :-/



SVN revision: 82082
2013-01-03 15:10:34 +00:00
Gustavo Sverzut Barbieri 4bc0210bd3 efl: merge efreet.
seems to be fine, pass distcheck and friends. please report.

changes:
 - documentation hierarchy fixes
 - replaced __UNUSED__ with EINA_UNUSED
 - replaced PKG_DATA_DIR with PACKAGE_DATA_DIR"/efreet"



SVN revision: 81889
2012-12-29 23:04:40 +00:00