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

John Reagan xyzzy1959 at gmail.com
Mon Sep 25 21:02:47 EDT 2023


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);
}



More information about the Info-vax mailing list