Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: autoloading from deleted wordcode digest files

On Jun 6, 11:47am, Sven Wischnowsky wrote:
} Subject: Re: autoloading from deleted wordcode digest files
} Clint Adams wrote:
} > I'm making .zwc files using zcompile -U -M.
} > zsh will keep these files opened and mmapped even
} > after they are deleted, but efforts to autoload
} > functions within will fail.
} > 
} > I want the deleted file to be searched if the function
} > is not found on disk.  I assume that this can be accomplished
} > by including the filename in struct funcdump, and using
} > that as an identifier should the files be deleted after
} > mmapping.
} Somehow I think the OS should ensure that such files can't be deleted
} (by renaming them as it does for the .nfs* files or something).

The OS does ensure that they're not deleted -- it keeps the inode around
but deletes the directory entry, just as for any other open file (cygwin
notwithstanding); but autoloading checks for the existence of the file by
name before using the already-mapped copy.  Clint wants zsh to remember
what name it used to map a file and then keep using that mapped copy even
after the name has gone away on disk.

} Hm, things could break terribly if mapped function files disappear and I
} don't see a completely satisfying solution.  Searching again for the zwc
} file works for functions that haven't been loaded yet, but what about
} those that were used already?

You have it backwards.  Clint wants check_dump_file() to search for a
function in the already-mapped files because load_dump_header() fails
if it can't do an open().

} > Will this break anything?
} This certainly depends on how you write it ;-)  And probably on the way
} the system handles all this.

The problem I see with it is that it could cause mysterious violations
of fpath ordering.  I guess it wouldn't be so bad if it were only the
fallback case exactly when load_dump_header() can't open().

Bart Schaefer                                 Brass Lantern Enterprises
http://www.well.com/user/barts              http://www.brasslantern.com

Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net   

Messages sorted by: Reverse Date, Date, Thread, Author