da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/***********************************************************************
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* This software is part of the ast package *
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner* Copyright (c) 1985-2010 AT&T Intellectual Property *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* and is licensed under the *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Common Public License, Version 1.0 *
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin* by AT&T Intellectual Property *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* A copy of the License is available at *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* http://www.opensource.org/licenses/cpl1.0.txt *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Information and Software Systems Research *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* AT&T Research *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Florham Park NJ *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Glenn Fowler <gsf@research.att.com> *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* David Korn <dgk@research.att.com> *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Phong Vo <kpv@research.att.com> *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin***********************************************************************/
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#pragma prototyped
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/*
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * Advanced Software Technology Library
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * AT&T Research
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * a union of standard headers that works
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * with local extensions enabled
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * and local omission compensation
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef _AST_STD_H
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define _AST_STD_H 1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define _AST_STD_I 1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include <ast_common.h>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if _BLD_ast
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define _BLD_cdt 1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define _BLD_sfio 1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if !_UWIN
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define _BLD_vmalloc 1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifdef _SFSTDIO_H
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define _SKIP_SFSTDIO_H
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#else
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define _SFSTDIO_H
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef FILE
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef _SFIO_H
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinstruct _sfio_s;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define FILE struct _sfio_s
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef __FILE_typedef
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define __FILE_typedef 1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef _FILEDEFED
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define _FILEDEFED 1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include <ast_lib.h>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include <ast_sys.h>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include <ast_getopt.h> /* <stdlib.h> does this */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include <ast_fcntl.h>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include <ast_limits.h>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include <ast_botch.h>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifdef _SKIP_SFSTDIO_H
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#undef _SKIP_SFSTDIO_H
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#else
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#undef _SFSTDIO_H
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#undef FILE
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/* locale stuff */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if !_hdr_locale
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinstruct lconv
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin{
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char* decimal_point;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char* thousands_sep;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char* grouping;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char* int_curr_symbol;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char* currency_symbol;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char* mon_decimal_point;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char* mon_thousands_sep;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char* mon_grouping;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char* positive_sign;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char* negative_sign;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char int_frac_digits;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char frac_digits;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char p_cs_precedes;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char p_sep_by_space;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char n_cs_precedes;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char n_sep_by_space;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char p_sign_posn;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char n_sign_posn;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin};
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if _BLD_ast && defined(__EXPORT__)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define extern __EXPORT__
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz#if !_UWIN /* for ast54 compatibility */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#undef getenv
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#define getenv _ast_getenv
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz#undef setenviron
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz#define setenviron _ast_setenviron
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzextern char* getenv(const char*);
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz#endif
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#undef localeconv
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define localeconv _ast_localeconv
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#undef setlocale
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define setlocale _ast_setlocale
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#undef strerror
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define strerror _ast_strerror
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern struct lconv* localeconv(void);
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinextern char* setenviron(const char*);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern char* setlocale(int, const char*);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern char* strerror(int);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define AST_MESSAGE_SET 3 /* see <mc.h> mcindex() */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/*
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * maintain this order when adding categories
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define AST_LC_ALL 0
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define AST_LC_COLLATE 1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define AST_LC_CTYPE 2
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define AST_LC_MESSAGES 3
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define AST_LC_MONETARY 4
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define AST_LC_NUMERIC 5
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define AST_LC_TIME 6
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define AST_LC_IDENTIFICATION 7
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define AST_LC_ADDRESS 8
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define AST_LC_NAME 9
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define AST_LC_TELEPHONE 10
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define AST_LC_XLITERATE 11
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define AST_LC_MEASUREMENT 12
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define AST_LC_PAPER 13
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define AST_LC_COUNT 14
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz#define AST_LC_LANG 255
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner#define AST_LC_internal 1
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner#define AST_LC_setenv (1L<<27)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define AST_LC_find (1L<<28)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define AST_LC_debug (1L<<29)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define AST_LC_setlocale (1L<<30)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define AST_LC_translate (1L<<31)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef LC_ALL
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define LC_ALL (-AST_LC_ALL)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef LC_COLLATE
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define LC_COLLATE (-AST_LC_COLLATE)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef LC_CTYPE
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define LC_CTYPE (-AST_LC_CTYPE)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef LC_MESSAGES
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define LC_MESSAGES (-AST_LC_MESSAGES)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef LC_MONETARY
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define LC_MONETARY (-AST_LC_MONETARY)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef LC_NUMERIC
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define LC_NUMERIC (-AST_LC_NUMERIC)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef LC_TIME
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define LC_TIME (-AST_LC_TIME)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef LC_ADDRESS
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define LC_ADDRESS (-AST_LC_ADDRESS)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef LC_IDENTIFICATION
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define LC_IDENTIFICATION (-AST_LC_IDENTIFICATION)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef LC_NAME
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define LC_NAME (-AST_LC_NAME)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef LC_TELEPHONE
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define LC_TELEPHONE (-AST_LC_TELEPHONE)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef LC_XLITERATE
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define LC_XLITERATE (-AST_LC_XLITERATE)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef LC_MEASUREMENT
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define LC_MEASUREMENT (-AST_LC_MEASUREMENT)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef LC_PAPER
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define LC_PAPER (-AST_LC_PAPER)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz#ifndef LC_LANG
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz#define LC_LANG (-AST_LC_LANG)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#undef extern
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#undef strcoll
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if _std_strcoll
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define strcoll _ast_info.collate
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#else
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define strcoll strcmp
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chintypedef struct
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin{
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char* id;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin struct
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin {
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin uint32_t serial;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin uint32_t set;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin } locale;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin long tmp_long;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin size_t tmp_size;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin short tmp_short;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char tmp_char;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin wchar_t tmp_wchar;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin int (*collate)(const char*, const char*);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin int tmp_int;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin void* tmp_pointer;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin int mb_cur_max;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin int (*mb_len)(const char*, size_t);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin int (*mb_towc)(wchar_t*, const char*, size_t);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin size_t (*mb_xfrm)(char*, const char*, size_t);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin int (*mb_width)(wchar_t);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin int (*mb_conv)(char*, wchar_t);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin uint32_t env_serial;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz uint32_t mb_sync;
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner uint32_t version;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner char pad[936];
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin} _Ast_info_t;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if _BLD_ast && defined(__EXPORT__)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define extern extern __EXPORT__
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if !_BLD_ast && defined(__IMPORT__)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define extern extern __IMPORT__
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern _Ast_info_t _ast_info;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#undef extern
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/* largefile hackery -- ast uses the large versions by default */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if _typ_off64_t
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#undef off_t
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define off_t off64_t
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if !defined(ftruncate) && _lib_ftruncate64
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define ftruncate ftruncate64
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern int ftruncate64(int, off64_t);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if !defined(lseek) && _lib_lseek64
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define lseek lseek64
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern off64_t lseek64(int, off64_t, int);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if !defined(truncate) && _lib_truncate64
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define truncate truncate64
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern int truncate64(const char*, off64_t);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/* direct macro access for bsd crossover */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if !defined(__cplusplus)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if !defined(memcpy) && !defined(_lib_memcpy) && defined(_lib_bcopy)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define memcpy(t,f,n) (bcopy(f,t,n),(t))
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if !defined(memzero) && !defined(_lib_memzero)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if defined(_lib_memset) || !defined(_lib_bzero)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define memzero(b,n) memset(b,0,n)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#else
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define memzero(b,n) (bzero(b,n),(b))
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if !defined(remove)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern int remove(const char*);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if !defined(rename)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern int rename(const char*, const char*);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if !defined(strchr) && !defined(_lib_strchr) && defined(_lib_index)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define strchr(s,c) index(s,c)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if !defined(strrchr) && !defined(_lib_strrchr) && defined(_lib_rindex)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define strrchr(s,c) rindex(s,c)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/* and now introducing prototypes botched by the standard(s) */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if _BLD_ast && defined(__EXPORT__)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define extern __EXPORT__
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#undef getpgrp
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define getpgrp() _ast_getpgrp()
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern int _ast_getpgrp(void);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#undef extern
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/*
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * and finally, standard interfaces hijacked by ast
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner * _AST_STD_I delays headers that require <ast_map.h>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include <ast_map.h>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#undef _AST_STD_I
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#if _AST_GETOPT_H < 0
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#undef _AST_GETOPT_H
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#include <ast_getopt.h>
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#endif
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#if _GETOPT_H < 0
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#undef _GETOPT_H
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#include <getopt.h>
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin#endif
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if _REGEX_H < 0
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#undef _REGEX_H
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include <regex.h>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif