%%
 
+#include <limits.h>
+
 # define    RED "\033[91m"
 # define  GREEN "\033[92m"
 # define YELLOW "\033[93m"
 # define  RESET "\033[0m"
 
 void root(char * filename) {
-  char * path, * terminator;
-  if (!(path = realpath(filename, NULL))) { return; }
+  char path[PATH_MAX], * terminator;
+  if (!realpath(filename, path)) { return; }
   if ((terminator = strrchr(path, '/'))) {
     *terminator = '\0';
-    chroot(path);
+    chdir(path);
   }
-  free(path);
 }
 
 void args(int n, int rest) {
 
   g_filename = av[0];
   root(g_filename);
+
   { /* ensures the filename doesn't have a relative path that would misdirect the command within the new root */
     char * tmp = strrchr(g_filename, '/');
     if (tmp) { g_filename = tmp+1; }
   g_ac = --ac, g_av = ++av;
 
   /* setup pipe and output */
+
   if (run) {
     pipeopen("/bin/sh -e /dev/stdin", "w");
   }