|
From: reed m. <rf...@cr...> - 2000-12-20 06:02:47
|
"John M. Bellardo" wrote: > > As part of the Darwin port for Firebird I plan to make use of the OS > standards that define were to store support files (like the isc_lock1, > isc_init1, isc4.gdb, etc). This standard involves determining at run time > where the files are located, not having a path hard coded at compile time. > There was interest in being able to control the file locations at run time > for other platforms, so I wanted to make my implementation as platform > independant as possible. I am looking for thoughts / comments on how to > do this "correctly". I'm going to start by reading through the code to > figure out what it is doing before I change anything. I would like some > design comments, as well as comments to different requirements the > different platforms have for this code. I'm know that there is > heavy use of the *__prefix functions to locate files. I want to > make sure that they are used by all the code before I make any > changes. Thanks. > The main thing to keep in mind is that there can really only reasonably be one prefix on any given machine. What I mean is that just because you have two complete installations in different sub directories, and set one to use one prefix and another to use the other, things will still not work right if you try to run processes from both of them (because you need one lock manager process for classic, or one server process for super) The compiled in prefix can typically be over-ridden by the INTERBASE environment variable, and also by the registry under NT. The problem with having a user configurable root on the unix platforms is that you have no way of finding it if you don't already know the prefix. But this isn't such a big deal when you have symbolic links. I suppose we could find our configuration in /etc/interbase.conf (or /usr/local/etc/interbase.conf) but that hardly seems more elegent than making a /usr/interbase link (or /usr/local/interbase or /opt/interbase). Does OS/X have a specific way of dealing with this ? Note that using the INTERBASE environment variable is somewhat questionable under classic, because you can set it to different values on different processes, and this will cause you trouble. > -John > -- Reed Mideke rfm(at)cruzers.com If that doesn't work: rfm(at)portalofevil.com InterBase build instructions: www.cruzers.com/~rfm |