int fd;  log_op("execve", path, 0);
int execve(const char* path, char* const argv[], char* const envp[]) {#define execve(x,y,z) syscall(SYS_execve, (x), (y), (z))	int result;		__darwintrace_setup();	if (__darwintrace_fd >= 0) {	  struct stat sb;	  if (stat(path, &sb) == 0) {#if DARWINTRACE_SHOW_PROCESS		int size = snprintf(__darwintrace_buf, BUFFER_SIZE, "%s[%d]\texecve\t%s\n", __darwintrace_progname, __darwintrace_pid, path );#else		int size = snprintf(__darwintrace_buf, BUFFER_SIZE, "execve\t%s\n", path );#endif		int fd;				write(__darwintrace_fd, __darwintrace_buf, size);		fsync(__darwintrace_fd);				fd = open(path, O_RDONLY, 0);		if (fd != -1) {			char buffer[MAXPATHLEN];			(void) read(fd, buffer, MAXPATHLEN);			if (buffer[0] == '#' && buffer[1] == '!') {				const char* interp = &buffer[2];				int i;				/* skip past leading whitespace */				for (i = 2; i < (MAXPATHLEN-1); ++i) {					if (buffer[i] != ' ' && buffer[i] != '\t') {						interp = &buffer[i];						break;					}				}				/* found interpreter (or ran out of data)				 skip until next whitespace, then terminate the string */				for (; i < (MAXPATHLEN-1); ++i) {					if (buffer[i] == ' ' || buffer[i] == '\t' || buffer[i] == '\n') {						buffer[i] = 0;					}				}				/* we have liftoff */				if (interp) {#if DARWINTRACE_SHOW_PROCESS					const char* procname = strrchr(argv[0], '/') + 1;					if (procname == NULL) procname = argv[0];					int size = snprintf(__darwintrace_buf, BUFFER_SIZE, "%s[%d]\texecve\t%s\n", procname, 0, interp );#else					int size = snprintf(__darwintrace_buf, BUFFER_SIZE, "execve\t%s\n", interp );#endif					write(__darwintrace_fd, __darwintrace_buf, size);					fsync(__darwintrace_fd);				}			}			close(fd);		}	  }	}	result = execve(path, argv, envp);	return result;}