try to hide exec reporting logic into functions
add more preprocessor guard on exec methods
Restore the call_execvp() function, execvpe() is not available on OSX
(or other BSD style platforms for that matter).