diff options
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/eiotas_particle.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/lib/eiotas_particle.c b/src/lib/eiotas_particle.c index a72d55f..6d3facc 100644 --- a/src/lib/eiotas_particle.c +++ b/src/lib/eiotas_particle.c @@ -117,6 +117,8 @@ EAPI void eiotas_particle_destinations_add(Eiotas_Particle *particle, const char static Eina_Bool add_destination(Eiotas_Particle *particle, const char *dst, int n) { + int i, c; + char *tmp; Eina_Stringshare *s; if(n==0) { @@ -132,6 +134,20 @@ static Eina_Bool add_destination(Eiotas_Particle *particle, const char *dst, int return EINA_FALSE; } + for(tmp=(char*)dst, c=0, i=0; i<n; i++, tmp++) { + if(*tmp==EIOTAS_ACTION_SEP) { + if(*(tmp-1)==EIOTAS_PATH_SEP) { + ERR("ignore destination with '%c%c' ",EIOTAS_PATH_SEP,EIOTAS_ACTION_SEP); + return EINA_FALSE; + } + c++; + } + } + if(c>1) { + ERR("ignore destination with more then 1 '%c' ",EIOTAS_ACTION_SEP); + return EINA_FALSE; + } + s = eina_stringshare_add_length(dst,n); eina_array_push(particle->dsts,s); DBG("add dst >%s<",s); |