15bf5ca77SDevin Teske# -*- tab-width: 4 -*- ;; Emacs 25bf5ca77SDevin Teske# vi: set filetype=sh tabstop=8 shiftwidth=8 noexpandtab :: Vi/ViM 35bf5ca77SDevin Teske############################################################ IDENT(1) 45bf5ca77SDevin Teske# 55bf5ca77SDevin Teske# $Title: dwatch(8) module for open[at](2) [or similar] entry $ 65bf5ca77SDevin Teske# $Copyright: 2014-2018 Devin Teske. All rights reserved. $ 75bf5ca77SDevin Teske# 85bf5ca77SDevin Teske############################################################ DESCRIPTION 95bf5ca77SDevin Teske# 105bf5ca77SDevin Teske# Print path being passed to open(2), openat(2), or similar 115bf5ca77SDevin Teske# 125bf5ca77SDevin Teske############################################################ PROBE 135bf5ca77SDevin Teske 145bf5ca77SDevin Teskecase "$PROFILE" in 155bf5ca77SDevin Teskeopen) : ${PROBE:=syscall::open:entry, syscall::openat:entry} ;; 165bf5ca77SDevin Teske *) : ${PROBE:=syscall::$PROFILE:entry} 175bf5ca77SDevin Teskeesac 185bf5ca77SDevin Teske 195bf5ca77SDevin Teske############################################################ ACTIONS 205bf5ca77SDevin Teske 215bf5ca77SDevin Teskeexec 9<<EOF 225bf5ca77SDevin Teskethis string path; 235bf5ca77SDevin Teskethis u_char at; 245bf5ca77SDevin Teske 255bf5ca77SDevin Teske$PROBE /* probe ID $ID */ 265bf5ca77SDevin Teske{${TRACE:+ 275bf5ca77SDevin Teske printf("<$ID>"); 285bf5ca77SDevin Teske} 295bf5ca77SDevin Teske /* 305bf5ca77SDevin Teske * Should we expect the first argument to be a file descriptor? 315bf5ca77SDevin Teske * NB: Based on probefunc ending in "at" (e.g., openat(2)) 325bf5ca77SDevin Teske */ 335bf5ca77SDevin Teske this->at = strstr(probefunc, "at") == 345bf5ca77SDevin Teske (probefunc + strlen(probefunc) - 2) ? 1 : 0; 355bf5ca77SDevin Teske 365bf5ca77SDevin Teske this->path = copyinstr(this->at ? arg1 : arg0); 375bf5ca77SDevin Teske} 385bf5ca77SDevin TeskeEOF 395bf5ca77SDevin TeskeACTIONS=$( cat <&9 ) 405bf5ca77SDevin TeskeID=$(( $ID + 1 )) 415bf5ca77SDevin Teske 425bf5ca77SDevin Teske############################################################ EVENT DETAILS 435bf5ca77SDevin Teske 44*a061d970SDevin Teskeif [ ! "$CUSTOM_DETAILS" ]; then 455bf5ca77SDevin Teskeexec 9<<EOF 465bf5ca77SDevin Teske /* 475bf5ca77SDevin Teske * Print path details 485bf5ca77SDevin Teske */ 495bf5ca77SDevin Teske printf("%s", this->path); 505bf5ca77SDevin TeskeEOF 515bf5ca77SDevin TeskeEVENT_DETAILS=$( cat <&9 ) 52*a061d970SDevin Teskefi 535bf5ca77SDevin Teske 545bf5ca77SDevin Teske################################################################################ 555bf5ca77SDevin Teske# END 565bf5ca77SDevin Teske################################################################################ 57