assert(l>0);
ADM_assert(l>0);
void PathSplit(char *str, char **root, char **ext){	char *full;	uint32_t l;		full=PathCanonize(str);		// Search the last .		l=strlen(full);		l--;		assert(l>0);		while( *(full+l)!='.' && l) l--;		if(!l || l==(strlen(full)-1))		{			if(l==(strlen(full)-1))			{				*(full+l)=0;  // remove trailing .			}			*ext=new char[2];			*root=full;			strcpy(*ext,"");			return ;		}		// else we do get an extension		// starting at l+1		uint32_t suff;		suff=strlen(full)-l-1;		*ext=new char[suff+1];		strcpy(*ext,full+l+1);		*(full+l)=0;		*root=full;		return ;}