Beispiel #1
0
static int find_exec_pathsearch(const char *filepath, char **argv, char *newpath, int newpath_size, char ***new_argv)
{
   char *newname = NULL;
   int result;

   if (!filepath) {
      newpath[0] = '\0';
      return 0;
   }
   if (filepath[0] == '/' || filepath[0] == '.') {
      find_exec(filepath, argv, newpath, newpath_size, new_argv);
      return 0;
   }
   check_for_fork();
   if (ldcsid < 0 || !use_ldcs) {
      strncpy(newpath, filepath, newpath_size);
      newpath[newpath_size-1] = '\0';
      return 0;
   }
   sync_cwd();

   result = exec_pathsearch(ldcsid, filepath, &newname);
   if (result == -1)
      return -1;

   result = prep_exec(filepath, argv, newname, newpath, newpath_size, new_argv);
   return result;
}
Beispiel #2
0
/*
** TODO: search_in_path(node->argv[0]) 
** TODO: Check if argv is correctly passed and as for envp do it yourself.
*/
int	standard_execute(t_node_command *node)
{
  char	*file_path;

  file_path = find_exec(node->argv[0]);
  if (!file_path)
    return (0);
  return (execve(file_path, node->argv, NULL));
}
Beispiel #3
0
static int execve_wrapper(const char *path, char *const argv[], char *const envp[])
{
   char newpath[MAX_PATH_LEN+1];
   char **new_argv = NULL;
   int result, error;

   debug_printf2("Intercepted execve on %s\n", path);
   find_exec(path, (char **) argv, newpath, MAX_PATH_LEN+1, &new_argv);
   debug_printf("execve redirection of %s to %s\n", path, newpath);
   result = orig_execve(newpath, new_argv ? new_argv : argv, (char **) envp);
   error = errno;
   if (new_argv)
      spindle_free(new_argv);
   set_errno(error);
   return result;
}
Beispiel #4
0
void pyepg_init ( void )
{
  char buf[256];

  RB_INIT(&_pyepg_channels);

  /* Internal module */
  if (find_exec("pyepg", buf, sizeof(buf)-1))
    epggrab_module_int_create(NULL, "pyepg-internal", "PyEPG", 4, buf,
                              NULL, _pyepg_parse, NULL, NULL);

  /* External module */
  _pyepg_module = (epggrab_module_t*)
    epggrab_module_ext_create(NULL, "pyepg", "PyEPG", 4, "pyepg",
                              _pyepg_parse, NULL,
                              &_pyepg_channels);
}
Beispiel #5
0
static int execl_wrapper(const char *path, const char *arg0, ...)
{
   int error, result;
   char newpath[MAX_PATH_LEN+1];

   VARARG_TO_ARGV;

   debug_printf2("Intercepted execl on %s\n", path);

   find_exec(path, argv, newpath, MAX_PATH_LEN+1, &new_argv);
   debug_printf("execl redirection of %s to %s\n", path, newpath);
   result = execv(newpath, new_argv ? new_argv : argv);
   error = errno;

   VARARG_TO_ARGV_CLEANUP;

   set_errno(error);
   return result;
}