14887Schin /*********************************************************************** 24887Schin * * 34887Schin * This software is part of the ast package * 4*10898Sroland.mainz@nrubsig.org * Copyright (c) 1985-2009 AT&T Intellectual Property * 54887Schin * and is licensed under the * 64887Schin * Common Public License, Version 1.0 * 78462SApril.Chin@Sun.COM * by AT&T Intellectual Property * 84887Schin * * 94887Schin * A copy of the License is available at * 104887Schin * http://www.opensource.org/licenses/cpl1.0.txt * 114887Schin * (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) * 124887Schin * * 134887Schin * Information and Software Systems Research * 144887Schin * AT&T Research * 154887Schin * Florham Park NJ * 164887Schin * * 174887Schin * Glenn Fowler <gsf@research.att.com> * 184887Schin * David Korn <dgk@research.att.com> * 194887Schin * Phong Vo <kpv@research.att.com> * 204887Schin * * 214887Schin ***********************************************************************/ 224887Schin #pragma prototyped 234887Schin /* 244887Schin * Advanced Software Technology Library 254887Schin * AT&T Research 264887Schin * 274887Schin * a union of standard headers that works 284887Schin * with local extensions enabled 294887Schin * and local omission compensation 304887Schin */ 314887Schin 324887Schin #ifndef _AST_STD_H 334887Schin #define _AST_STD_H 1 344887Schin #define _AST_STD_I 1 354887Schin 364887Schin #include <ast_common.h> 374887Schin 384887Schin #if _BLD_ast 394887Schin #define _BLD_cdt 1 404887Schin #define _BLD_sfio 1 414887Schin #if !_UWIN 424887Schin #define _BLD_vmalloc 1 434887Schin #endif 444887Schin #endif 454887Schin 464887Schin #ifdef _SFSTDIO_H 474887Schin #define _SKIP_SFSTDIO_H 484887Schin #else 494887Schin #define _SFSTDIO_H 504887Schin #ifndef FILE 514887Schin #ifndef _SFIO_H 524887Schin struct _sfio_s; 534887Schin #endif 544887Schin #define FILE struct _sfio_s 554887Schin #ifndef __FILE_typedef 564887Schin #define __FILE_typedef 1 574887Schin #endif 584887Schin #ifndef _FILEDEFED 594887Schin #define _FILEDEFED 1 604887Schin #endif 614887Schin #endif 624887Schin #endif 634887Schin 644887Schin #include <ast_lib.h> 654887Schin #include <ast_sys.h> 664887Schin #include <ast_getopt.h> /* <stdlib.h> does this */ 674887Schin #include <ast_fcntl.h> 684887Schin #include <ast_limits.h> 694887Schin #include <ast_botch.h> 704887Schin 714887Schin #ifdef _SKIP_SFSTDIO_H 724887Schin #undef _SKIP_SFSTDIO_H 734887Schin #else 744887Schin #undef _SFSTDIO_H 754887Schin #undef FILE 764887Schin #endif 774887Schin 784887Schin /* locale stuff */ 794887Schin 804887Schin #if !_hdr_locale 814887Schin 824887Schin struct lconv 834887Schin { 844887Schin char* decimal_point; 854887Schin char* thousands_sep; 864887Schin char* grouping; 874887Schin char* int_curr_symbol; 884887Schin char* currency_symbol; 894887Schin char* mon_decimal_point; 904887Schin char* mon_thousands_sep; 914887Schin char* mon_grouping; 924887Schin char* positive_sign; 934887Schin char* negative_sign; 944887Schin char int_frac_digits; 954887Schin char frac_digits; 964887Schin char p_cs_precedes; 974887Schin char p_sep_by_space; 984887Schin char n_cs_precedes; 994887Schin char n_sep_by_space; 1004887Schin char p_sign_posn; 1014887Schin char n_sign_posn; 1024887Schin }; 1034887Schin 1044887Schin #endif 1054887Schin 1064887Schin #if _BLD_ast && defined(__EXPORT__) 1074887Schin #define extern __EXPORT__ 1084887Schin #endif 1094887Schin 110*10898Sroland.mainz@nrubsig.org #if !_UWIN /* for ast54 compatibility */ 111*10898Sroland.mainz@nrubsig.org 1128462SApril.Chin@Sun.COM #undef getenv 1138462SApril.Chin@Sun.COM #define getenv _ast_getenv 1148462SApril.Chin@Sun.COM 115*10898Sroland.mainz@nrubsig.org #undef setenviron 116*10898Sroland.mainz@nrubsig.org #define setenviron _ast_setenviron 117*10898Sroland.mainz@nrubsig.org 118*10898Sroland.mainz@nrubsig.org extern char* getenv(const char*); 119*10898Sroland.mainz@nrubsig.org 120*10898Sroland.mainz@nrubsig.org #endif 121*10898Sroland.mainz@nrubsig.org 1224887Schin #undef localeconv 1234887Schin #define localeconv _ast_localeconv 1244887Schin 1254887Schin #undef setlocale 1264887Schin #define setlocale _ast_setlocale 1274887Schin 1284887Schin #undef strerror 1294887Schin #define strerror _ast_strerror 1304887Schin 1314887Schin extern struct lconv* localeconv(void); 1328462SApril.Chin@Sun.COM extern char* setenviron(const char*); 1334887Schin extern char* setlocale(int, const char*); 1344887Schin extern char* strerror(int); 1354887Schin 1364887Schin #define AST_MESSAGE_SET 3 /* see <mc.h> mcindex() */ 1374887Schin 1384887Schin /* 1394887Schin * maintain this order when adding categories 1404887Schin */ 1414887Schin 1424887Schin #define AST_LC_ALL 0 1434887Schin #define AST_LC_COLLATE 1 1444887Schin #define AST_LC_CTYPE 2 1454887Schin #define AST_LC_MESSAGES 3 1464887Schin #define AST_LC_MONETARY 4 1474887Schin #define AST_LC_NUMERIC 5 1484887Schin #define AST_LC_TIME 6 1494887Schin #define AST_LC_IDENTIFICATION 7 1504887Schin #define AST_LC_ADDRESS 8 1514887Schin #define AST_LC_NAME 9 1524887Schin #define AST_LC_TELEPHONE 10 1534887Schin #define AST_LC_XLITERATE 11 1544887Schin #define AST_LC_MEASUREMENT 12 1554887Schin #define AST_LC_PAPER 13 1564887Schin #define AST_LC_COUNT 14 157*10898Sroland.mainz@nrubsig.org #define AST_LC_LANG 255 1584887Schin 1594887Schin #define AST_LC_find (1L<<28) 1604887Schin #define AST_LC_debug (1L<<29) 1614887Schin #define AST_LC_setlocale (1L<<30) 1624887Schin #define AST_LC_translate (1L<<31) 1634887Schin 1644887Schin #ifndef LC_ALL 1654887Schin #define LC_ALL (-AST_LC_ALL) 1664887Schin #endif 1674887Schin #ifndef LC_COLLATE 1684887Schin #define LC_COLLATE (-AST_LC_COLLATE) 1694887Schin #endif 1704887Schin #ifndef LC_CTYPE 1714887Schin #define LC_CTYPE (-AST_LC_CTYPE) 1724887Schin #endif 1734887Schin #ifndef LC_MESSAGES 1744887Schin #define LC_MESSAGES (-AST_LC_MESSAGES) 1754887Schin #endif 1764887Schin #ifndef LC_MONETARY 1774887Schin #define LC_MONETARY (-AST_LC_MONETARY) 1784887Schin #endif 1794887Schin #ifndef LC_NUMERIC 1804887Schin #define LC_NUMERIC (-AST_LC_NUMERIC) 1814887Schin #endif 1824887Schin #ifndef LC_TIME 1834887Schin #define LC_TIME (-AST_LC_TIME) 1844887Schin #endif 1854887Schin #ifndef LC_ADDRESS 1864887Schin #define LC_ADDRESS (-AST_LC_ADDRESS) 1874887Schin #endif 1884887Schin #ifndef LC_IDENTIFICATION 1894887Schin #define LC_IDENTIFICATION (-AST_LC_IDENTIFICATION) 1904887Schin #endif 1914887Schin #ifndef LC_NAME 1924887Schin #define LC_NAME (-AST_LC_NAME) 1934887Schin #endif 1944887Schin #ifndef LC_TELEPHONE 1954887Schin #define LC_TELEPHONE (-AST_LC_TELEPHONE) 1964887Schin #endif 1974887Schin #ifndef LC_XLITERATE 1984887Schin #define LC_XLITERATE (-AST_LC_XLITERATE) 1994887Schin #endif 2004887Schin #ifndef LC_MEASUREMENT 2014887Schin #define LC_MEASUREMENT (-AST_LC_MEASUREMENT) 2024887Schin #endif 2034887Schin #ifndef LC_PAPER 2044887Schin #define LC_PAPER (-AST_LC_PAPER) 2054887Schin #endif 206*10898Sroland.mainz@nrubsig.org #ifndef LC_LANG 207*10898Sroland.mainz@nrubsig.org #define LC_LANG (-AST_LC_LANG) 208*10898Sroland.mainz@nrubsig.org #endif 2094887Schin 2104887Schin #undef extern 2114887Schin 2124887Schin #undef strcoll 2134887Schin #if _std_strcoll 2144887Schin #define strcoll _ast_info.collate 2154887Schin #else 2164887Schin #define strcoll strcmp 2174887Schin #endif 2184887Schin 2194887Schin typedef struct 2204887Schin { 2214887Schin 2224887Schin char* id; 2234887Schin 2244887Schin struct 2254887Schin { 2264887Schin uint32_t serial; 2274887Schin uint32_t set; 2284887Schin } locale; 2294887Schin 2304887Schin long tmp_long; 2314887Schin size_t tmp_size; 2324887Schin short tmp_short; 2334887Schin char tmp_char; 2344887Schin wchar_t tmp_wchar; 2354887Schin 2364887Schin int (*collate)(const char*, const char*); 2374887Schin 2384887Schin int tmp_int; 2394887Schin void* tmp_pointer; 2404887Schin 2414887Schin int mb_cur_max; 2424887Schin int (*mb_len)(const char*, size_t); 2434887Schin int (*mb_towc)(wchar_t*, const char*, size_t); 2444887Schin size_t (*mb_xfrm)(char*, const char*, size_t); 2454887Schin int (*mb_width)(wchar_t); 2464887Schin int (*mb_conv)(char*, wchar_t); 2474887Schin 2484887Schin uint32_t env_serial; 249*10898Sroland.mainz@nrubsig.org uint32_t mb_sync; 2504887Schin 251*10898Sroland.mainz@nrubsig.org char pad[940]; 2524887Schin 2534887Schin } _Ast_info_t; 2544887Schin 2554887Schin #if _BLD_ast && defined(__EXPORT__) 2564887Schin #define extern extern __EXPORT__ 2574887Schin #endif 2584887Schin #if !_BLD_ast && defined(__IMPORT__) 2594887Schin #define extern extern __IMPORT__ 2604887Schin #endif 2614887Schin 2624887Schin extern _Ast_info_t _ast_info; 2634887Schin 2644887Schin #undef extern 2654887Schin 2664887Schin /* largefile hackery -- ast uses the large versions by default */ 2674887Schin 2684887Schin #if _typ_off64_t 2694887Schin #undef off_t 2704887Schin #define off_t off64_t 2714887Schin #endif 2724887Schin #if !defined(ftruncate) && _lib_ftruncate64 2734887Schin #define ftruncate ftruncate64 2744887Schin extern int ftruncate64(int, off64_t); 2754887Schin #endif 2764887Schin #if !defined(lseek) && _lib_lseek64 2774887Schin #define lseek lseek64 2784887Schin extern off64_t lseek64(int, off64_t, int); 2794887Schin #endif 2804887Schin #if !defined(truncate) && _lib_truncate64 2814887Schin #define truncate truncate64 2824887Schin extern int truncate64(const char*, off64_t); 2834887Schin #endif 2844887Schin 2854887Schin /* direct macro access for bsd crossover */ 2864887Schin 2874887Schin #if !defined(__cplusplus) 2884887Schin 2894887Schin #if !defined(memcpy) && !defined(_lib_memcpy) && defined(_lib_bcopy) 2904887Schin #define memcpy(t,f,n) (bcopy(f,t,n),(t)) 2914887Schin #endif 2924887Schin 2934887Schin #if !defined(memzero) && !defined(_lib_memzero) 2944887Schin #if defined(_lib_memset) || !defined(_lib_bzero) 2954887Schin #define memzero(b,n) memset(b,0,n) 2964887Schin #else 2974887Schin #define memzero(b,n) (bzero(b,n),(b)) 2984887Schin #endif 2994887Schin #endif 3004887Schin 3014887Schin #endif 3024887Schin 3034887Schin #if !defined(remove) 3044887Schin extern int remove(const char*); 3054887Schin #endif 3064887Schin 3074887Schin #if !defined(rename) 3084887Schin extern int rename(const char*, const char*); 3094887Schin #endif 3104887Schin 3114887Schin #if !defined(strchr) && !defined(_lib_strchr) && defined(_lib_index) 3124887Schin #define strchr(s,c) index(s,c) 3134887Schin #endif 3144887Schin 3154887Schin #if !defined(strrchr) && !defined(_lib_strrchr) && defined(_lib_rindex) 3164887Schin #define strrchr(s,c) rindex(s,c) 3174887Schin #endif 3184887Schin 3194887Schin /* and now introducing prototypes botched by the standard(s) */ 3204887Schin 3214887Schin #if _BLD_ast && defined(__EXPORT__) 3224887Schin #define extern __EXPORT__ 3234887Schin #endif 3244887Schin 3254887Schin #undef getpgrp 3264887Schin #define getpgrp() _ast_getpgrp() 3274887Schin extern int _ast_getpgrp(void); 3284887Schin 3294887Schin #undef extern 3304887Schin 3314887Schin /* 3324887Schin * and finally, standard interfaces hijacked by ast 3334887Schin * _ATS_STD_I delays headers that require <ast_map.h> 3344887Schin */ 3354887Schin 3364887Schin #include <ast_map.h> 3374887Schin 3384887Schin #undef _AST_STD_I 3394887Schin 3408462SApril.Chin@Sun.COM #if _AST_GETOPT_H < 0 3418462SApril.Chin@Sun.COM #undef _AST_GETOPT_H 3428462SApril.Chin@Sun.COM #include <ast_getopt.h> 3438462SApril.Chin@Sun.COM #endif 3448462SApril.Chin@Sun.COM 3458462SApril.Chin@Sun.COM #if _GETOPT_H < 0 3468462SApril.Chin@Sun.COM #undef _GETOPT_H 3478462SApril.Chin@Sun.COM #include <getopt.h> 3488462SApril.Chin@Sun.COM #endif 3498462SApril.Chin@Sun.COM 3504887Schin #if _REGEX_H < 0 3514887Schin #undef _REGEX_H 3524887Schin #include <regex.h> 3534887Schin #endif 3544887Schin 3554887Schin #endif 356