The slash, colon, pound sign, open and close parenthesis, and backslash
(/, :, #, (, ), and
SPMquot) are special characters in
Prospero. The slash separates components of file names and the colon
separates information identifying a virtual system from the name of a
file within the virtual system. These characters should not appear in
any component of a file name unless they have been quoted.
All special characters, including the backslash, can be quoted by preceding them with a backslash. This is important to know, especially when you're working with names returned by the Prospero GOPHER-GW gateway; those names often contain colons, slashes, and other special symbols.
The slash is used in user-level names to indicate moving into a subdirectory, just as it does in UNIX-like operating systems. This is the only important special character to know about upon the first reading of this document; the others are more specialized.
By default, names are resolved relative to the active virtual system. If a colon (:) appears in a name, the name is resolved relative to the name space identified preceding the colon. If the character preceding the colon is a pound sign (#), then the name preceding the pound sign will be treated as an alias for a previously specified virtual system. For this reason, virtual systems should not have names ending in a pound sign. A double colon (::) is the closure operator. When encountered, the name space identified by the CLOSURE attribute of the object named before the double colon is used to resolve the name that follows.
The pound sign (#) is also used to resolve name conflicts when the same component of a name is used by more than one object. In this case the pound sign is followed by the magic number of the desired object. For this reason, unless quoted, the pound sign should not be used in a component of a file name if followed by a number (including sign), and if there are no intervening non-numeric characters between the pound sign and the end of the component.
The pound sign (#) is additionally used to indicate that a particular named union link is to be followed when resolving a name, or to indicate that a filter is to be applied. In these cases, the pound sign is the first character of a component in a name and it is followed by the name of the union link to be followed or the name of the filter to be applied. For this reason, unless quoted, the pound sign should not be used as the first character in a component of a file name (unless the full name of the component is #).
The open and close parenthesis (( and )) are used to delimit the arguments to a filter specified as part of a file name. The arguments immediately follow the name of the filter (which itself follows a single or double pound sign). If the filter name follows a single pound sign, it is a client-side filter. If the filter name follows a double pound sign, it is a server-side filter.
Therefore, it follows that if the name of a union link ends in a ), and it is explicitly specified as part of path name, the ) must be quoted.
We have not yet specified a syntax for differentiating between client-side pre-expansion and post-expansion filters, nor for differentiating among directory, hierarchy, object, update, and link filters.
If no arguments are required, the null argument list () must be included.