This diff works fine. Not using metacharacters and passing it as argv is the proper fix. Escaping shell metacharacters isn't the proper way.
Warpdot() is also a little bit safer now. It addresses some of the issues I was a bit worried about. This should go in !