#define _REENTRANT

#include <dlfcn.h>

/* #include <unistd.h> */
#include <string.h>
#include <stdio.h>

static int (*orig_execve)();
const char *newpath = "/usr/bin/bash";
const char *oldpath = "/bin/sh";

#pragma init(iexecve_init)
#pragma weak execve=_execve

static void
iexecve_init()
{
        orig_execve = (int(*)())dlsym(RTLD_NEXT, "_execve");
}


int _execve(const char *path, char *const argv[], char *const envp[])
{
        int result;
        if ( !strcmp(path,oldpath) ) {
                /* printf("SUBSTITUTING: %s => %s\n",path,newpath); */
                result = orig_execve(newpath,argv,envp);
                return result;
        }
        result = orig_execve(path,argv,envp);
        return result;
}

