Variable | Package: system | ToC | DocOverview | CGDoc | RelNotes | FAQ | Index | PermutedIndex
| Allegro CL version 9.0 Unrevised from 8.2 to 9.0. 8.2 version

## *source-file-frobbers*

If true, the value of this variable should be a list of functions that will be called by the internal functions that do comparisons that generate redefinition warnings and determine the name of a file to which an Emacs buffer is open. The functions will also be called by compile-file so the input-filename (required) argument to compile-file will be frobbed and it is the frobbed file (rather than the actual argument) that will be compiled.

The functions in the list should take one argument, a pathname, and return one value, also a pathname.

A pathname passes if each function in the list, when passed that pathname, returns it exactly (that is, the returned pathname is eq to the argument pathname). If a pathname does not pass, one of the functions in the list returns a pathname which is not eq to its argument pathname. When that happens, the non-eq pathname becomes the new candidate pathname, passed to functions in the list in order, starting with the first. The process stops when a pathname that results from the process passes, with each function returning it exactly without any modification.

The first function, for example, might check to see whether the directory-namestring of the pathname starts with either "/tmp_mnt" or "/TMP_MNT". If it does, the pathname is modified so the "/tmp_mnt" or "/TMP_MNT" is stripped off and the modified pathname is returned. If it does not, the pathname is returned unchanged. Thus a pathname with namestring "/tmp_mnt/mymachine/usr/me/foo.cl" is first modified to a pathname with namestring "/mymachine/usr/me/foo.cl". When this pathname is passed to the first function, it is returned unchanged.

The second function might check that all alphabetic characters in the namestring are upcased, modifying the pathname so that it is true if it is not. So the second function, passed the result of the first changes it to a pathname with namestring "/MYMACHINE/USR/ME/FOO.CL". Since this would not be eq to the argument, that pathname is passed once again to the first function. But since the namestring does not start with "/tmp_mnt" or "/TMP_MNT", the first function returns it unchanged, as does the second function, since the namestring has only uppercase letters. If there are only two functions, the process is now done.

It is important that the function return a pathname eq to the argument (i.e. return the argument unchanged) if no frobbing is required. If a function creates a new pathname, equal or equalp but not eq to the argument, frobbing will never stop.

The initial value of this variable is a list containing as its only element the symbol naming the function tmp-mnt-frobber.

See source-file-recording.htm for general information on source file recording.

Copyright (c) 1998-2019, Franz Inc. Oakland, CA., USA. All rights reserved.
This page was not revised from the 8.2 page.
Created 2012.5.30.

|  | ToC | DocOverview | CGDoc | RelNotes | FAQ | Index | PermutedIndex
| Allegro CL version 9.0 Unrevised from 8.2 to 9.0. 8.2 version