III.c ACL-Resident Lookaside Information ---------------------------------------- Lookaside files have a distinct disadvantage: they require, for every directory that contains even one file needing lookaside information, a hidden subdirectory containing a file with the identical name, that file containing the lookaside information. At best this is cumbersome to manage. OpenVMS offers a facility by which the lookaside information may be stored as a physical part of the original file, eliminating the need for a subordinate hidden lookaside directory and extra files. This facility uses ACEs (Access Control Entries), specifically Application ACEs. These are part of the file's Access Control List (ACL), and for Gopher purposes will be known as ACL-Resident Lookaside information. To generalized commands such as "DCL DIR/ACL", "DIR/SEC" and "SET ACL/EDIT", these will appear as one or more (APPLICATION,...) entries. As their format is understood only to the application they support, these generalized methods of viewing and editing them can only display them as strings of hexidecimal longwords. A program, LOOKASIDE, is provided to maintain ACL-Resident lookaside inform- ation. It may be run as either a foreign command or as a standard RUN of an executable: $ LOOKASIDE :== $device:[directory]LOOKASIDE.EXE $ LOOKASIDE document [optional command line switches...] or $ RUN device:[directory]LOOKASIDE LOOKASIDE will prompt for a file specification if none is specified on its foreign command line, or if the RUN format is used. If the GOPHER_CONFIG logical is not available, or if the file it references is not accessible to LOOKASIDE, it will prompt for a Configuration File Specification as well. The configuration file located in this manner is searched for a LookAside: specification; if none is found, LOOKASIDE will repeatedly prompt for a configuration file until it either is supplied with one with a LookAside: specification, or the user specifies an EOF (^Z). LOOKASIDE presents a standard EDT edit buffer, which the user is expected to modify as needed to supply lookaside information. If the specified document actually has a lookaside file, it will be loaded into the top of the edit buffer. LOOKASIDE uses the configuration file's LookAside specification to find the real lookaside file; if the user refused to supply a configuration file with such a specification, any real lookaside file is ignored. If any ACL-Resident lookaside entries are already defined for the document, these will be loaded into the end of the edit buffer. LOOKASIDE next allows the user to use standard EDT editing to manipulate the edit buffer. If a file LOOKASIDE.INI exists in the same directory where the LOOKASIDE.EXE file resides, it will be used as an EDT command file for initialization of the editor. LOOKASIDE can be run in non-interactive mode as well. Non-interactive mode means that the SYS$INPUT device is not assigned to a terminal device. For example, LOOKASIDE might be running in a DCL script or as an action line in a MAKE makefile, or MMS description file. Non-interactive mode can be triggered by using a command line switch as well. In non-interactive mode, LOOKASIDE will not prompt for a filename or a configuration file. Command line specification of these is required, or the default configuration file may be used, or the configuration file may be ignored using a command line switch. In non-interactive mode, the LOOKASIDE.INI file is ignored, and the EDT editing buffer is not offered to the user. In non-interactive mode, command line switches are required to add new ACL-resident lookaside entries, or a real lookaside file must exist with entries not currently present in the file's ACL-resident lookasides. All required and optional link tuple items may be specified. With the exception of Access=, if more than one link tuple element with the same keyword appears in the edit buffer when the user exits the editor, only the last element is preserved in the ACL- Resident Lookaside information. All Access= link tuple elements appearing in the edit buffer when the user exits the editor are preserved in the ACL-Resident Lookaside information. Once the user completes modifications of the buffer, EXIT will write the buffer to the ACL-Resident Lookasides of the file, while QUIT will discard the user's edits. The LOOKASIDE editor can also use command line switches to control its operation. This is especially useful in non-interactive mode, such as in a DCL script or a MAKE operation. LOOKASIDE options *MUST* be separated by a space (that is, use " /" and not just "/" to start each option). Options are: /Config[=filename] (default; default filename from GOPHER_CONFIG /NoConfig logical) This switch specifies if a configuration file is to be consulted for determining the possible location of a pre-existing lookaside file for the file to be edited. In non-interactive mode, LOOKASIDE will not prompt for a configuration file if one is unspecified and the default cannot be found. Specify /NoConfig if you don't have any Lookaside: specification in your config file. /NoInteractive This switch specifies that non-interactive mode is to be presumed even if the SYS$INPUT device is assigned to a terminal. /NoDebug (default) /Debug This switch specifies if diagnostic debugging data is to be displayed. /Clear This switch specifies that any existing ACL-resident lookaside entries and any existing lookaside file are to be ignored. Only command line specified lookaside entries will appear in the editing buffer for user modification during interactive mode, or in the ACL following exit in non-interactive mode. /Name=display text /Type=resource type These switches (no defaults) specify standard /Path=selector link tuple entries to be appended to the editing /Port=TCP/IP port buffer before offering the buffer to the user /Host=DNS hostname for editing. In non-interactive mode, these /Access=site r b s switches can be used to supply all ACL-resident /Numb=number lookaside entries *to be added*. With the /Hidden exception of the prefixing "/" switch character, /Head=doc hdr the syntax of these entries is identical to the /Foot=doc ftr syntax one would use in a .LINK file, in a /Rhead=doc rnghdr lookaside file or in ACL-resident lookasides. /Rfoot=doc rngftr Values may be enclosed in quotes ("") to preserve case and/or whitespace; outer quotes are discarded (e.g., /Name="text" on the command line becomes Name=text in the ACL-resident lookaside. Lookaside ACEs are defined to propogate; creating a new generation of a document with ACL-Resident lookasides will propogate those lookaside entries into the new generation of the file. .