N.AES creates a cookie with the name 'nAES'. Its value is a pointer to a structure (readable), which is made up as follows:
typedef struct {
unsigned int version;
unsigned int date;
unsigned int time;
unsigned int flags;
CNF_VAR **config;
unsigned long unused_2;
} N_AESINFO;
| version: | The hexadecimal-coded version number of N.AES. A value of
0x0058 would mean a version number 0.5.8, a value of 0x0107 the
version 1.0.7
| ||||||||||
| date/time: | The creation date and the creation time in TOS format, i.e.
as returned by Tgetdate and Tgettime.
Note: The time that is output on booting N.AES corresponds to the time of compilation of a given N.AES source file; the time value that is found in the cookie is set by means of a patch program and is actually the relevant specification. | ||||||||||
| flags: | Bit mask, whose bits have the following meaning:
| ||||||||||
| config: | Pointer to a list of the CNF variables, which may be altered
while the system is running. Memory is allocated as (global). The
bundled N_CONTRL.CPX uses it.
/* cnf types */
#define CNF_TEND 0 /* Marks the end of the list. */
#define CNF_TBOOL 1 /* True/false. */
#define CNF_TWORD 2 /* 16-bit signed value */
#define CNF_TLONG 3
/* Further ones may follow! */
typedef enum {false, true} bool;
typedef struct
{
union cnf_typ { bool b; WORD w; LONG l; }
val; /* The contents */
WORD typ; /* Type, CNF_T... */
BYTE text[22]; /* Name, as in N_AES.CNF. */
} CNF_INF;
typedef struct
{
BYTE typ[16]; /* Category, text from the strings *
* of the dialog tree CNF_TREE of *
* N_AESSYS.RSC. *
* e.g. 'Fenster' or 'System'. */
CNF_INF *cnf_inf; /* The variables themselves */
} CNF_VAR;
The end of the list is signalled by a NULL-pointer. | ||||||||||
| unused_2: | Free space for later N.AES versions
|