#!/usr/sbin/dtrace -w #pragma D option quiet syscall::open:entry /(arg1 & O_WRONLY) || (arg1 & O_RDWR)/ { self->x = 1; /* printf("ENT %s\n", copyinstr(arg0)); */ } syscall::open:return /(arg0 >= 0) && (self->x)/ { /* Initialize */ fglob = (struct fileglob *)(curproc->p_fd->fd_ofiles[arg0]->f_fglob); ptr = (fglob != NULL && fglob->fg_type == DTYPE_VNODE) ? (struct vnode *)fglob->fg_data : NULL; path = (ptr != NULL && ptr->v_name != NULL) ? ptr->v_name : "??"; /* Burrow up sixteen times */ ptr = (ptr != NULL) ? ptr->v_parent : ptr; path = (ptr != NULL && ptr->v_name != NULL) ? strjoin(strjoin(ptr->v_name, "/"), path) : path; ptr = (ptr != NULL) ? ptr->v_parent : ptr; path = (ptr != NULL && ptr->v_name != NULL) ? strjoin(strjoin(ptr->v_name, "/"), path) : path; ptr = (ptr != NULL) ? ptr->v_parent : ptr; path = (ptr != NULL && ptr->v_name != NULL) ? strjoin(strjoin(ptr->v_name, "/"), path) : path; ptr = (ptr != NULL) ? ptr->v_parent : ptr; path = (ptr != NULL && ptr->v_name != NULL) ? strjoin(strjoin(ptr->v_name, "/"), path) : path; ptr = (ptr != NULL) ? ptr->v_parent : ptr; path = (ptr != NULL && ptr->v_name != NULL) ? strjoin(strjoin(ptr->v_name, "/"), path) : path; ptr = (ptr != NULL) ? ptr->v_parent : ptr; path = (ptr != NULL && ptr->v_name != NULL) ? strjoin(strjoin(ptr->v_name, "/"), path) : path; ptr = (ptr != NULL) ? ptr->v_parent : ptr; path = (ptr != NULL && ptr->v_name != NULL) ? strjoin(strjoin(ptr->v_name, "/"), path) : path; ptr = (ptr != NULL) ? ptr->v_parent : ptr; path = (ptr != NULL && ptr->v_name != NULL) ? strjoin(strjoin(ptr->v_name, "/"), path) : path; ptr = (ptr != NULL) ? ptr->v_parent : ptr; path = (ptr != NULL && ptr->v_name != NULL) ? strjoin(strjoin(ptr->v_name, "/"), path) : path; ptr = (ptr != NULL) ? ptr->v_parent : ptr; path = (ptr != NULL && ptr->v_name != NULL) ? strjoin(strjoin(ptr->v_name, "/"), path) : path; ptr = (ptr != NULL) ? ptr->v_parent : ptr; path = (ptr != NULL && ptr->v_name != NULL) ? strjoin(strjoin(ptr->v_name, "/"), path) : path; ptr = (ptr != NULL) ? ptr->v_parent : ptr; path = (ptr != NULL && ptr->v_name != NULL) ? strjoin(strjoin(ptr->v_name, "/"), path) : path; ptr = (ptr != NULL) ? ptr->v_parent : ptr; path = (ptr != NULL && ptr->v_name != NULL) ? strjoin(strjoin(ptr->v_name, "/"), path) : path; ptr = (ptr != NULL) ? ptr->v_parent : ptr; path = (ptr != NULL && ptr->v_name != NULL) ? strjoin(strjoin(ptr->v_name, "/"), path) : path; ptr = (ptr != NULL) ? ptr->v_parent : ptr; path = (ptr != NULL && ptr->v_name != NULL) ? strjoin(strjoin(ptr->v_name, "/"), path) : path; ptr = (ptr != NULL) ? ptr->v_parent : ptr; path = (ptr != NULL && ptr->v_name != NULL) ? strjoin(strjoin(ptr->v_name, "/"), path) : path; /* Conclude */ self->x = 0; printf("%s\n", path); }