When a Zim directory is changed, other instances of multi-user Zim or Zim Integrated Server must detect that a change has occurred and update their internal symbol table. Before each command, the header record of the Zim directory file is read from disk and the log sequence number compared with a stored log sequence number. This stored sequence number is obtained either when Zim is started or during the most recent symbol table update or definition update.
If the sequence number on disk is higher than the internally saved one, the log file is read starting with the "oldest" record not yet applied to the symbol table and continuing in sequence number order until all unread records have been processed. Each record is used to process the in-core symbol table.
No updates to any Zim files are made. It is assumed these updates have been done by the user who performed the definition update.
All descriptors associated with the directory file (the root Zim directory or some other user directory) are flushed and re-read from disk. Any file buffers that belong to the directory file in question are purged and, for user interface objects (such as forms, displays, menus, windows, and so on), any zim0099 file buffers are purged. Before the symbol table update proceeds, file buffers belonging to the DefinitionsLog file are also purged.