1330559Sdteske# -*- tab-width: 4 -*- ;; Emacs 2330559Sdteske# vi: set filetype=sh tabstop=8 shiftwidth=8 noexpandtab :: Vi/ViM 3330559Sdteske############################################################ IDENT(1) 4330559Sdteske# 5330559Sdteske# $Title: dwatch(8) module for open[at](2) [or similar] entry $ 6330559Sdteske# $Copyright: 2014-2018 Devin Teske. All rights reserved. $ 7330559Sdteske# $FreeBSD: stable/11/cddl/usr.sbin/dwatch/libexec/open 333617 2018-05-15 00:00:44Z dteske $ 8330559Sdteske# 9330559Sdteske############################################################ DESCRIPTION 10330559Sdteske# 11330559Sdteske# Print path being passed to open(2), openat(2), or similar 12330559Sdteske# 13330559Sdteske############################################################ PROBE 14330559Sdteske 15330559Sdteskecase "$PROFILE" in 16330559Sdteskeopen) : ${PROBE:=syscall::open:entry, syscall::openat:entry} ;; 17330559Sdteske *) : ${PROBE:=syscall::$PROFILE:entry} 18330559Sdteskeesac 19330559Sdteske 20330559Sdteske############################################################ ACTIONS 21330559Sdteske 22330559Sdteskeexec 9<<EOF 23330559Sdteskethis string path; 24330559Sdteskethis u_char at; 25330559Sdteske 26330559Sdteske$PROBE /* probe ID $ID */ 27330559Sdteske{${TRACE:+ 28330559Sdteske printf("<$ID>"); 29330559Sdteske} 30330559Sdteske /* 31330559Sdteske * Should we expect the first argument to be a file descriptor? 32330559Sdteske * NB: Based on probefunc ending in "at" (e.g., openat(2)) 33330559Sdteske */ 34330559Sdteske this->at = strstr(probefunc, "at") == 35330559Sdteske (probefunc + strlen(probefunc) - 2) ? 1 : 0; 36330559Sdteske 37330559Sdteske this->path = copyinstr(this->at ? arg1 : arg0); 38330559Sdteske} 39330559SdteskeEOF 40330559SdteskeACTIONS=$( cat <&9 ) 41330559SdteskeID=$(( $ID + 1 )) 42330559Sdteske 43330559Sdteske############################################################ EVENT DETAILS 44330559Sdteske 45333617Sdteskeif [ ! "$CUSTOM_DETAILS" ]; then 46330559Sdteskeexec 9<<EOF 47330559Sdteske /* 48330559Sdteske * Print path details 49330559Sdteske */ 50330559Sdteske printf("%s", this->path); 51330559SdteskeEOF 52330559SdteskeEVENT_DETAILS=$( cat <&9 ) 53333617Sdteskefi 54330559Sdteske 55330559Sdteske################################################################################ 56330559Sdteske# END 57330559Sdteske################################################################################ 58