We'd like to register a trigger function to be called whenever a cell is requested to be opened for edit. (or, a function called whenever a cell is accessed, which can determine whether the requested mode is edit/append)
For starters, we have this:
procedure(preObjAccessTrigger(a b c d e f)
printf("preObjAccessTrigger called: %L %L %L %L %L %L\n" a b c d e f)
t
)
ddRegTrigger("PreObjAccess" 'preObjAccessTrigger)
But the last argument (mode) is always "r" regardless of whether the cell is being opened for edit or for read, or being changed from edit to read or vice versa after it is already opened.
What we are trying to accomplish is to give a warning and prompt for confirmation before edit is allowed on cells from certain libraries. Changing the linux permissions of the entire libraries in question is a much less desirable option.
What can be done to tell what file mode is being requested before the cell is actually opened in that mode?
I've also tried PreAutoCheckout:
procedure(preAutoCheckoutTrigger(a b)
printf("preAutoCheckoutTrigger called: %L %L\n" a b)
t
)
ddRegTrigger("PreAutoCheckout" 'preAutoCheckoutTrigger)
which does indeed get called (even though we are not using any Data Management) - but it errors out with an odd error every time - here's the CIW transcript immediately after trying to open a cell for edit:
\i ddsServOpen("v8685" "channel_i3712" "layout" "edit" nil)
\o preObjAccessTrigger called: "v8685" "channel_i3712" "layout" "*" nil "r"
\o preObjAccessTrigger called: "v8685" nil nil nil nil "r"
\o preObjAccessTrigger called: "v8685" "channel_i3712" "layout" "layout.oa" nil "r"
\o preObjAccessTrigger called: "v8685" "channel_i3712" "layout" "*" nil "r"
\o preObjAccessTrigger called: "v8685" "channel_i3712" "layout" nil nil "r"
\o preObjAccessTrigger called: "v8685" "channel_i3712" "layout" "layout.oa" nil "r"
\o preObjAccessTrigger called: nil nil nil "*" dd:0x2c4ad500 "r"
\o preAutoCheckoutTrigger called: (dd:0x2c4ad500) nil
\e *Error* car: Can't take car of atom - t
\w *WARNING* (DEBASE-102079): A SKILL error occurred in function _leDataTrigger
\a _hiSetCurrentWinNum(2)
\w *WARNING* (DEBASE-102084): Data trigger for viewType maskLayout failed.
\r t