~vcs-imports/gawk/master

« back to all changes in this revision

Viewing changes to awk.h

  • Committer: Arnold D. Robbins
  • Date: 2010-07-16 11:49:57 UTC
  • Revision ID: git-v1:6a2caf2157d87b4b582b2494bdd7d6a688dd0b1f
Tags: gawk-3.1.6
Move to gawk-3.1.6.

Show diffs side-by-side

added added

removed removed

Lines of Context:
3
3
 */
4
4
 
5
5
/* 
6
 
 * Copyright (C) 1986, 1988, 1989, 1991-2005 the Free Software Foundation, Inc.
 
6
 * Copyright (C) 1986, 1988, 1989, 1991-2007 the Free Software Foundation, Inc.
7
7
 * 
8
8
 * This file is part of GAWK, the GNU implementation of the
9
9
 * AWK Programming Language.
10
10
 * 
11
11
 * GAWK is free software; you can redistribute it and/or modify
12
12
 * it under the terms of the GNU General Public License as published by
13
 
 * the Free Software Foundation; either version 2 of the License, or
 
13
 * the Free Software Foundation; either version 3 of the License, or
14
14
 * (at your option) any later version.
15
15
 * 
16
16
 * GAWK is distributed in the hope that it will be useful,
41
41
#define _GNU_SOURCE     1       /* enable GNU extensions */
42
42
#endif /* _GNU_SOURCE */
43
43
 
 
44
#if defined(_TANDEM_SOURCE) && ! defined(_SCO_DS)
 
45
#define _XOPEN_SOURCE_EXTENDED 1
 
46
#endif
 
47
 
44
48
#include <stdio.h>
45
49
#include <assert.h>
46
50
#ifdef HAVE_LIMITS_H
60
64
#endif
61
65
 
62
66
#if defined(HAVE_STDARG_H) && defined(__STDC__) && __STDC__
 
67
#define CAN_USE_STDARG_H 1
63
68
#include <stdarg.h>
64
69
#else
65
70
#include <varargs.h>
88
93
#include <float.h>
89
94
#endif
90
95
 
 
96
#undef CHARBITS
 
97
#undef INTBITS
 
98
#if HAVE_INTTYPES_H
 
99
# include <inttypes.h>
 
100
#endif
 
101
#if HAVE_STDINT_H
 
102
# include <stdint.h>
 
103
#endif
 
104
 
 
105
#if defined(_MSC_VER)
 
106
/* for read()/close() in use replace.c */
 
107
#include <io.h>
 
108
#endif
 
109
 
91
110
/* ----------------- System dependencies (with more includes) -----------*/
92
111
 
93
112
/* This section is the messiest one in the file, not a lot that can be done */
193
212
#include <unistd.h>
194
213
#endif  /* HAVE_UNISTD_H */
195
214
 
 
215
#ifdef VMS
 
216
#include "vms/redirect.h"
 
217
#endif  /*VMS*/
 
218
 
 
219
#ifdef atarist
 
220
#include "unsupported/atari/redirect.h"
 
221
#endif
 
222
 
196
223
#ifndef HAVE_VPRINTF
197
224
/* if you don't have vprintf, try this and cross your fingers. */
198
225
#ifdef  HAVE_DOPRNT
203
230
#endif  /* not HAVE_DOPRNT */
204
231
#endif  /* HAVE_VPRINTF */
205
232
 
 
233
#ifndef HAVE_SNPRINTF
 
234
/* will use replacement version */
 
235
extern int snprintf P((char *restrict buf, size_t len, const char *restrict fmt, ...));
 
236
#endif
 
237
 
206
238
#ifndef HAVE_SETLOCALE
207
239
#define setlocale(locale, val)  /* nothing */
208
240
#endif /* HAVE_SETLOCALE */
211
243
   this is a hack but it gives us the right semantics */
212
244
#define lintwarn (*(set_loc(__FILE__, __LINE__),lintfunc))
213
245
 
214
 
#ifdef VMS
215
 
#include "vms/redirect.h"
216
 
#endif  /*VMS*/
217
 
 
218
 
#ifdef atarist
219
 
#include "unsupported/atari/redirect.h"
220
 
#endif
221
 
 
222
246
#define GNU_REGEX
223
247
#ifdef GNU_REGEX
224
248
#include "regex.h"
241
265
#define RE_NO_BOL       2       /* for RS, not allowed to match ^ in regexp */
242
266
 
243
267
/* Stuff for losing systems. */
244
 
#ifdef STRTOD_NOT_C89
 
268
#if !defined(HAVE_STRTOD)
245
269
extern double gawk_strtod();
246
270
#define strtod gawk_strtod
247
271
#endif
509
533
                        size_t length;
510
534
                        struct exp_node *value;
511
535
                        long ref;
 
536
                        size_t code;
512
537
                } hash;
513
538
#define hnext   sub.hash.next
514
539
#define hname   sub.hash.name
520
545
#define ahname_len      sub.hash.length
521
546
#define ahvalue sub.hash.value
522
547
#define ahname_ref      sub.hash.ref
 
548
#define ahcode  sub.hash.code
523
549
        } sub;
524
550
        NODETYPE type;
525
551
        unsigned short flags;
741
767
extern int do_non_decimal_data;
742
768
extern int do_dump_vars;
743
769
extern int do_tidy_mem;
 
770
extern int use_lc_numeric;
744
771
extern int in_begin_rule;
745
772
extern int in_end_rule;
746
773
extern int whiny_users;
962
989
extern NODE *do_adump P((NODE *tree));
963
990
extern NODE *do_asort P((NODE *tree));
964
991
extern NODE *do_asorti P((NODE *tree));
965
 
extern unsigned long (*hash)P((const char *s, size_t len, unsigned long hsize));
 
992
extern unsigned long (*hash)P((const char *s, size_t len, unsigned long hsize, size_t *code));
966
993
/* awkgram.c */
967
994
extern char *tokexpand P((void));
968
995
extern NODE *node P((NODE *left, NODETYPE op, NODE *right));
1084
1111
extern size_t optimal_bufsize P((int fd, struct stat *sbuf));
1085
1112
extern int ispath P((const char *file));
1086
1113
extern int isdirpunct P((int c));
1087
 
#if defined(_MSC_VER) && !defined(_WIN32)
 
1114
 
 
1115
#if HAVE_MEMCPY_ULONG
1088
1116
extern char *memcpy_ulong P((char *dest, const char *src, unsigned long l));
 
1117
#define memcpy memcpy_ulong
 
1118
#endif
 
1119
#if HAVE_MEMSET_ULONG
1089
1120
extern void *memset_ulong P((void *dest, int val, unsigned long l));
1090
 
#define memcpy memcpy_ulong
1091
1121
#define memset memset_ulong
1092
1122
#endif
 
1123
 
1093
1124
/* io.c */
1094
1125
extern void register_open_hook P((void *(*open_func)(IOBUF *)));
1095
1126
extern void set_FNR P((void));
1166
1197
#define force_wstring(n)        str2wstr(n, NULL)
1167
1198
extern const wchar_t *wstrstr P((const wchar_t *haystack, size_t hs_len, const wchar_t *needle, size_t needle_len));
1168
1199
extern const wchar_t *wcasestrstr P((const wchar_t *haystack, size_t hs_len, const wchar_t *needle, size_t needle_len));
 
1200
extern void free_wstr P((NODE *n));
 
1201
#else
 
1202
#define free_wstr(NODE) /* empty */
1169
1203
#endif
1170
1204
/* re.c */
1171
1205
extern Regexp *make_regexp P((const char *s, size_t len, int ignorecase, int dfa));
1181
1215
extern int remaybelong P((const char *text, size_t len));
1182
1216
extern int isnondecimal P((const char *str, int use_locale));
1183
1217
 
 
1218
/* floatcomp.c */
 
1219
#ifdef VMS      /* VMS linker weirdness? */
 
1220
#define Ceil    gawk_ceil
 
1221
#define Floor   gawk_floor
 
1222
#endif
 
1223
 
 
1224
extern AWKNUM Floor P((AWKNUM n));
 
1225
extern AWKNUM Ceil P((AWKNUM n));
 
1226
#ifdef HAVE_UINTMAX_T
 
1227
extern uintmax_t adjust_uint P((uintmax_t n));
 
1228
#else
 
1229
#define adjust_uint(n) (n)
 
1230
#endif
 
1231
 
1184
1232
/* strncasecmp.c */
1185
1233
#ifndef BROKEN_STRNCASECMP
1186
1234
extern int strcasecmp P((const char *s1, const char *s2));