[Info-vax] Howto can I call the undocumented "set watch/class=dir" in an own program and fetch the output in my program?

Eberhard Heuser vaxinf at googlemail.com
Tue Sep 26 10:01:12 EDT 2023


John Reagan schrieb am Dienstag, 26. September 2023 um 03:02:50 UTC+2:
> On Monday, September 25, 2023 at 9:26:39 AM UTC-4, Eberhard Heuser wrote: 
> > Brian Schenkenberger schrieb am Sonntag, 24. September 2023 um 22:36:09 UTC+2: 
> > >> Sounds like something interesting I need to hack! 
> > If you're willing to produce some code, that will be great! 
> > 
> > My problem is that I cannot find an hook, that helps me to get the information, which 
> > file operation (i.e. create/remove file / create/remove directory / copy file) 
> > been isssued via a DCL-command. The drivers only care about I/O of records so 
> > my hook must lay between the command layer and the driver I/O. I assume that F11ACP 
> > is the part that might give this info back. 
> > 
> > Eberhard
> Here's the code to turn on the bits. The code in the XQP writes to SYS$OUTPUT so you should be able to 
> easily redirect it to a file, etc. 
> 
> /* 
> $ search XGI5_RESD$:[F11X.SRC]FCPDEF.REQ xqp$_ 
> 
> XQP$_MAJOR_FUNC = 0, ! Notify about major events 
> XQP$_CNTRL_FUNC = 1, ! Notify about control functions 
> XQP$_ATTRIBUTE = 2, ! Notify about attribute modifications 
> XQP$_DIR_OPS = 3, ! Notify about directory operations 
> XQP$_DUMP = 4, ! Notify about misc things 
> XQP$_QUOTA = 5, ! Notify about quota functions 
> XQP$_PROTECTION = 6; ! Notify about protection checks 
> */ 
> 
> extern short PIO$GW_DFPROT; 
> #include <stdio.h> 
> #include <starlet.h> 
> 
> int flip() { 
> PIO$GW_DFPROT = PIO$GW_DFPROT | 1; // turn on XQP$_MAJOR_FUNC 
> return 1; 
> } 
> 
> int main() { 
> int s; 
> printf("DFPROT = %hx\n",PIO$GW_DFPROT); 
> s = SYS$CMKRNL(&flip,0); 
> printf("CMKRNL returned %08x\n",s); 
> printf("DFPROT = %hx\n",PIO$GW_DFPROT); 
> }

I'm sorry, but the redirection from sys$output has no effect. The XQP output
still appears on the terminal screen. I've tried several options

define/sys sys$output t.dat
define/sys/exe sys$output t.dat
define/proc sys$output t.dat

The same behavior with sys$error

So the question is what output channel is been used by QXP?

Eberhard




More information about the Info-vax mailing list