386BSD 0.1 development
[unix-history] / usr / src / usr.bin / awk / bi_vars.c
CommitLineData
a7e60862
WJ
1
2/********************************************
3bi_vars.c
4copyright 1991, Michael D. Brennan
5
6This is a source file for mawk, an implementation of
7the AWK programming language.
8
9Mawk is distributed without warranty under the terms of
10the GNU General Public License, version 2, 1991.
11********************************************/
12
13/* $Log: bi_vars.c,v $
14 * Revision 5.1 91/12/05 07:55:38 brennan
15 * 1.1 pre-release
16 *
17*/
18
19
20/* bi_vars.c */
21
22#include "mawk.h"
23#include "symtype.h"
24#include "bi_vars.h"
25#include "field.h"
26#include "init.h"
27#include "memory.h"
28
29/* the builtin variables */
30CELL bi_vars[NUM_BI_VAR] ;
31
32/* the order here must match the order in bi_vars.h */
33
34static char *bi_var_names[NUM_BI_VAR] = {
35"NR" ,
36"FNR" ,
37"ARGC" ,
38"FILENAME" ,
39"OFS" ,
40"ORS" ,
41"RLENGTH" ,
42"RSTART" ,
43"SUBSEP"
44#if MSDOS && NO_BINMODE==0
45, "BINMODE"
46#endif
47} ;
48
49/* insert the builtin vars in the hash table */
50
51void bi_vars_init()
52{ register int i ;
53 register SYMTAB *s ;
54
55
56 for ( i = 0 ; i < NUM_BI_VAR ; i++ )
57 { s = insert( bi_var_names[i] ) ;
58 s->type = i <= 1 ? ST_NR : ST_VAR ;
59 s->stval.cp = bi_vars + i ;
60 /* bi_vars[i].type = 0 which is C_NOINIT */
61 }
62
63 s = insert("ENVIRON") ;
64 s->type = ST_ENV ;
65
66 /* set defaults */
67
68 FILENAME->type = C_STRING ;
69 FILENAME->ptr = (PTR) new_STRING( "" ) ;
70
71 OFS->type = C_STRING ;
72 OFS->ptr = (PTR) new_STRING( " " ) ;
73
74 ORS->type = C_STRING ;
75 ORS->ptr = (PTR) new_STRING( "\n" ) ;
76
77 SUBSEP->type = C_STRING ;
78 SUBSEP->ptr = (PTR) new_STRING( "\034" ) ;
79
80 NR->type = FNR->type = C_DOUBLE ;
81 /* dval is already 0.0 */
82
83#if MSDOS && NO_BINMODE==0
84 BINMODE->type = C_DOUBLE ;
85#endif
86}