Configuring outer (V 2.0b, May 2004) Please refer to [?] if you need an overview of the outer program. Generally, outer can be configured at compile time or at run time. Run-time configuration is controlled by environment variables. If present when outer runs, they are used. If not present, the compile-time constant of the same name, if any, is used. If neither is present, a default value is used. (Sometimes another environment variable is looked at before the default is used - see below.) Some options are logically true/false switches. They can be specified either as a switch (eg; TOPLINKS), or as a value (eg; TOPLINKS = TRUE). Specification as a switch is equivalent to specifying a value of TRUE. As compilation constants, values are integers. 0 is false. 1 is recommended for true. TRUE and FALSE are also accepted. Some switches are also accepted in their negated form (eg; specifying NOTOPLINKS is the same as specifying TOPLINKS=FALSE). As environment variables, specification as switches is not possible. Values are strings. FALSE, false, NO, no, F, f, N, n and 0 all represent false. TRUE, true, YES, yes, T, t, Y, y and 1 all represent true. Strings that evaluate to integers other than 0 or 1 are not accepted. Each method should include in its makefile a compilation of outer. The exact syntax of specifying compilation switches depends on the c compiler in use. A typical compiler will have each switch preceded by -D. Typically, the shell or make utility running the compiler will require string values to be enclosed in escaped quotation marks; eg, -DMYADDR='"mynode.wherever.domain"' The options, with their default values, follow. See [the code?] for the meanings of the options. Each of next group of switches accepts prefix of NO - see above DIRLINK TRUE DOCLINK TRUE PLOTLINK TRUE LEV0LINK TRUE LEVNLINK TRUE FLATLINK TRUE OTHEROPTS TRUE (Same as PLOTLINK. Specified values must match) TOPLINKS TRUE (See note 1) TEST_GIFS FALSE GENERATE_ALPHA_SELECTIONS TRUE BREVSTART 1 BREVCOUNT 20 (Value of 0 equivalent to infinity) BUTTONIMAGESDIR "\0" MYADDR "\0" (See note 2) MYPORT "80" (See note 3) DIRSERVER "\0" INFOSERVER "\0" OPTIONSERVER "\0" (See note 4) OPTIONS [no default] (Not looked for in environment) (See note 5) INNEROPTIONS [no default] (Not looked for in environment) (See note 6) JGOFS_DATA_CGI_SPEC "/jg/serv" (Not looked for in environment) ERROR_EXIT_STATUS 250 (See note 7) OO_OUTER No longer used (See note 8) HAS_OUTER_INTEREST_ENTRY FALSE (Not looked for in environment) (See note 9) BREV_OPTIMIZE_INNER_CALLS TRUE (See note 9) QUOTENOLINK FALSE USE_DOUBLE FALSE (Not looked for in environment) (See note 10) Notes: 1) This switch controls the default value of several of the preceding *LINK switches. If any *LINK switch is explicitly specified one way or the other, the explicit specification overrides the value of the TOPLINKS switch 2) Before the default is used, the environment variable SERVER_NAME is checked. If it is null, the default is used. 3) This option is not normally used. If specified as a compilation constant, it must be specified as a string, even though its value is an integer. Before the default is used, the environment variable SERVER_PORT is checked. If it is null, the default is used. 4) The program serv, which normally causes outer to run, puts a value of OPTIONSERVER into the environment. Therefore, the only time the OPTIONSERVER compile-time value (or its default) is used is when outer is being run "standalone" 5) It is expected that most methods will use a common file, typically /jgofsroot/src/include/default.h, rather than have a method-specific file as described below. There are several buffers used by outer. The sizes of these buffers may not be correct for your application. The OPTIONS option allows you to specify the name of a file which defines appropriate sizes. The contents of this file is expected to be #define statements for any or all of the constants described below. This file should be secure (as should all files related to methods), since an unscrupulous person could put code in it that could compromise your system. When specifying this file to the switch, include angle brackets; eg, -DOPTIONS= It may be useful to include this file in your set of inner routines, too. If you specify this compilation option, you should probably also add /my_method/src/my_method_buf_sizes.h to the list of dependencies for outer in any makefile you are using. This file may define any or all of the following symbols. All sizes refer to a number of characters. The things being described are documented [?] Name Purpose Default ATTRSIZE Maximum size of a single attribute 80 including its value and the equal sign, but not brackets or the semi-colon COMMENTLINE Maximum size of a comment line, not including 80 # or newline DATUMSIZE Maximum size of a single datum, including 120 any sign, decimal point or exponent TOKEN Maximum size of a "parsing unit" during 120 processing of selections/projections. Most common "parsing unit" is a variable name. Note that inner may use the same symbol to represent other quantities TOTATTRSIZE Size of the entire attribute string for a 1024 variable, including values, brackets, semi-colons, and equal signs VARNAMESIZE Maximum size of a variable name 40 [Values adjusted in v 2.0a per default.h on globec. Said file last commented Nov 00 by CLH] [Note 5 was rewritten for version 1.5. Previous versions of the doc were incorrect (I believe because they were written for a version of -DOPTIONS processing software that was discarded). Also, some parameters have become unneeded because they are now computed at runtime.] 6) INNEROPTIONS is a collection of parameters similar to OPTIONS. None of the parameters are used by outer, but a valid -DINNEROPTIONS= string must be part of the outer compilation. Most inners already include a -DINNEROPTIONS value. That value can be used for outer as well. It is expected that most methods will use a common file, typically /jgofsroot/src/include/inner.h, rather than have a method-specific file. 7) This option is not generally used. It defines the exit status that outer will use if it exits because of a method-detected error condition. If used, it must specify an integer between 1 and 255. This option is not looked for in the environment. 8) OO_OUTER was introduced in version 1.2. As of 1.5 it is obsolete. If specified at compile time, an error will occur. If specified at runtime, an entry will be made on the stderr device. The doc for OO_OUTER is included below for historical purposes "a) If TRUE, "level 0" button includes original query string. If FALSE, it does not." The purpose of this switch was to deal with methods such as math and join that had significant arguments in the query string [CLH via Email Nov 99; she consulted her archives]. A level 0 button pointing to an object running such a method needed a query string. Unfortunately, such a query string also included level N "clicked" selections. Thus, the OO_OUTER functionality was flawed at the design level. 9) HAS_OUTER_INTEREST_ENTRY determines whether or not inner has an entry named ioexpress_outer_interest_. If true, BREV_OPTIMIZE_INNER_CALLS determines how outer will call it. If HAS_OUTER_INTEREST_ENTRY is false, the value of BREV_OPTIMIZE_INNER_CALLS is irrelevant. 10) When doing selections, outer may do numeric comparisons which are better done in double precision than single. Things are better still if inner returns its data as double (rather than as single which outer converts to double). If inner contains an entry iovaldouble_ (same syntax, etc as iovalreal_) and if USE_DOUBLE is set, outer calls iovaldouble_ instead of iovalreal_.