14887Schin /*********************************************************************** 24887Schin * * 34887Schin * This software is part of the ast package * 4*8462SApril.Chin@Sun.COM * Copyright (c) 1985-2008 AT&T Intellectual Property * 54887Schin * and is licensed under the * 64887Schin * Common Public License, Version 1.0 * 7*8462SApril.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*8462SApril.Chin@Sun.COM #undef getenv 111*8462SApril.Chin@Sun.COM #define getenv _ast_getenv 112*8462SApril.Chin@Sun.COM 1134887Schin #undef localeconv 1144887Schin #define localeconv _ast_localeconv 1154887Schin 1164887Schin #undef setlocale 1174887Schin #define setlocale _ast_setlocale 1184887Schin 119*8462SApril.Chin@Sun.COM #undef setenviron 120*8462SApril.Chin@Sun.COM #define setenviron _ast_setenviron 121*8462SApril.Chin@Sun.COM 1224887Schin #undef strerror 1234887Schin #define strerror _ast_strerror 1244887Schin 125*8462SApril.Chin@Sun.COM extern char* getenv(const char*); 1264887Schin extern struct lconv* localeconv(void); 127*8462SApril.Chin@Sun.COM extern char* setenviron(const char*); 1284887Schin extern char* setlocale(int, const char*); 1294887Schin extern char* strerror(int); 1304887Schin 1314887Schin #define AST_MESSAGE_SET 3 /* see <mc.h> mcindex() */ 1324887Schin 1334887Schin /* 1344887Schin * maintain this order when adding categories 1354887Schin */ 1364887Schin 1374887Schin #define AST_LC_ALL 0 1384887Schin #define AST_LC_COLLATE 1 1394887Schin #define AST_LC_CTYPE 2 1404887Schin #define AST_LC_MESSAGES 3 1414887Schin #define AST_LC_MONETARY 4 1424887Schin #define AST_LC_NUMERIC 5 1434887Schin #define AST_LC_TIME 6 1444887Schin #define AST_LC_IDENTIFICATION 7 1454887Schin #define AST_LC_ADDRESS 8 1464887Schin #define AST_LC_NAME 9 1474887Schin #define AST_LC_TELEPHONE 10 1484887Schin #define AST_LC_XLITERATE 11 1494887Schin #define AST_LC_MEASUREMENT 12 1504887Schin #define AST_LC_PAPER 13 1514887Schin #define AST_LC_COUNT 14 1524887Schin 1534887Schin #define AST_LC_find (1L<<28) 1544887Schin #define AST_LC_debug (1L<<29) 1554887Schin #define AST_LC_setlocale (1L<<30) 1564887Schin #define AST_LC_translate (1L<<31) 1574887Schin 1584887Schin #ifndef LC_ALL 1594887Schin #define LC_ALL (-AST_LC_ALL) 1604887Schin #endif 1614887Schin #ifndef LC_COLLATE 1624887Schin #define LC_COLLATE (-AST_LC_COLLATE) 1634887Schin #endif 1644887Schin #ifndef LC_CTYPE 1654887Schin #define LC_CTYPE (-AST_LC_CTYPE) 1664887Schin #endif 1674887Schin #ifndef LC_MESSAGES 1684887Schin #define LC_MESSAGES (-AST_LC_MESSAGES) 1694887Schin #endif 1704887Schin #ifndef LC_MONETARY 1714887Schin #define LC_MONETARY (-AST_LC_MONETARY) 1724887Schin #endif 1734887Schin #ifndef LC_NUMERIC 1744887Schin #define LC_NUMERIC (-AST_LC_NUMERIC) 1754887Schin #endif 1764887Schin #ifndef LC_TIME 1774887Schin #define LC_TIME (-AST_LC_TIME) 1784887Schin #endif 1794887Schin #ifndef LC_ADDRESS 1804887Schin #define LC_ADDRESS (-AST_LC_ADDRESS) 1814887Schin #endif 1824887Schin #ifndef LC_IDENTIFICATION 1834887Schin #define LC_IDENTIFICATION (-AST_LC_IDENTIFICATION) 1844887Schin #endif 1854887Schin #ifndef LC_NAME 1864887Schin #define LC_NAME (-AST_LC_NAME) 1874887Schin #endif 1884887Schin #ifndef LC_TELEPHONE 1894887Schin #define LC_TELEPHONE (-AST_LC_TELEPHONE) 1904887Schin #endif 1914887Schin #ifndef LC_XLITERATE 1924887Schin #define LC_XLITERATE (-AST_LC_XLITERATE) 1934887Schin #endif 1944887Schin #ifndef LC_MEASUREMENT 1954887Schin #define LC_MEASUREMENT (-AST_LC_MEASUREMENT) 1964887Schin #endif 1974887Schin #ifndef LC_PAPER 1984887Schin #define LC_PAPER (-AST_LC_PAPER) 1994887Schin #endif 2004887Schin 2014887Schin #undef extern 2024887Schin 2034887Schin #undef strcoll 2044887Schin #if _std_strcoll 2054887Schin #define strcoll _ast_info.collate 2064887Schin #else 2074887Schin #define strcoll strcmp 2084887Schin #endif 2094887Schin 2104887Schin typedef struct 2114887Schin { 2124887Schin 2134887Schin char* id; 2144887Schin 2154887Schin struct 2164887Schin { 2174887Schin uint32_t serial; 2184887Schin uint32_t set; 2194887Schin } locale; 2204887Schin 2214887Schin long tmp_long; 2224887Schin size_t tmp_size; 2234887Schin short tmp_short; 2244887Schin char tmp_char; 2254887Schin wchar_t tmp_wchar; 2264887Schin 2274887Schin int (*collate)(const char*, const char*); 2284887Schin 2294887Schin int tmp_int; 2304887Schin void* tmp_pointer; 2314887Schin 2324887Schin int mb_cur_max; 2334887Schin int (*mb_len)(const char*, size_t); 2344887Schin int (*mb_towc)(wchar_t*, const char*, size_t); 2354887Schin size_t (*mb_xfrm)(char*, const char*, size_t); 2364887Schin int (*mb_width)(wchar_t); 2374887Schin int (*mb_conv)(char*, wchar_t); 2384887Schin 2394887Schin uint32_t env_serial; 2404887Schin 2414887Schin char pad[944]; 2424887Schin 2434887Schin } _Ast_info_t; 2444887Schin 2454887Schin #if _BLD_ast && defined(__EXPORT__) 2464887Schin #define extern extern __EXPORT__ 2474887Schin #endif 2484887Schin #if !_BLD_ast && defined(__IMPORT__) 2494887Schin #define extern extern __IMPORT__ 2504887Schin #endif 2514887Schin 2524887Schin extern _Ast_info_t _ast_info; 2534887Schin 2544887Schin #undef extern 2554887Schin 2564887Schin /* largefile hackery -- ast uses the large versions by default */ 2574887Schin 2584887Schin #if _typ_off64_t 2594887Schin #undef off_t 2604887Schin #define off_t off64_t 2614887Schin #endif 2624887Schin #if !defined(ftruncate) && _lib_ftruncate64 2634887Schin #define ftruncate ftruncate64 2644887Schin extern int ftruncate64(int, off64_t); 2654887Schin #endif 2664887Schin #if !defined(lseek) && _lib_lseek64 2674887Schin #define lseek lseek64 2684887Schin extern off64_t lseek64(int, off64_t, int); 2694887Schin #endif 2704887Schin #if !defined(truncate) && _lib_truncate64 2714887Schin #define truncate truncate64 2724887Schin extern int truncate64(const char*, off64_t); 2734887Schin #endif 2744887Schin 2754887Schin /* direct macro access for bsd crossover */ 2764887Schin 2774887Schin #if !defined(__cplusplus) 2784887Schin 2794887Schin #if !defined(memcpy) && !defined(_lib_memcpy) && defined(_lib_bcopy) 2804887Schin #define memcpy(t,f,n) (bcopy(f,t,n),(t)) 2814887Schin #endif 2824887Schin 2834887Schin #if !defined(memzero) && !defined(_lib_memzero) 2844887Schin #if defined(_lib_memset) || !defined(_lib_bzero) 2854887Schin #define memzero(b,n) memset(b,0,n) 2864887Schin #else 2874887Schin #define memzero(b,n) (bzero(b,n),(b)) 2884887Schin #endif 2894887Schin #endif 2904887Schin 2914887Schin #endif 2924887Schin 2934887Schin #if !defined(remove) 2944887Schin extern int remove(const char*); 2954887Schin #endif 2964887Schin 2974887Schin #if !defined(rename) 2984887Schin extern int rename(const char*, const char*); 2994887Schin #endif 3004887Schin 3014887Schin #if !defined(strchr) && !defined(_lib_strchr) && defined(_lib_index) 3024887Schin #define strchr(s,c) index(s,c) 3034887Schin #endif 3044887Schin 3054887Schin #if !defined(strrchr) && !defined(_lib_strrchr) && defined(_lib_rindex) 3064887Schin #define strrchr(s,c) rindex(s,c) 3074887Schin #endif 3084887Schin 3094887Schin /* and now introducing prototypes botched by the standard(s) */ 3104887Schin 3114887Schin #if _BLD_ast && defined(__EXPORT__) 3124887Schin #define extern __EXPORT__ 3134887Schin #endif 3144887Schin 3154887Schin #undef getpgrp 3164887Schin #define getpgrp() _ast_getpgrp() 3174887Schin extern int _ast_getpgrp(void); 3184887Schin 3194887Schin #undef extern 3204887Schin 3214887Schin /* 3224887Schin * and finally, standard interfaces hijacked by ast 3234887Schin * _ATS_STD_I delays headers that require <ast_map.h> 3244887Schin */ 3254887Schin 3264887Schin #include <ast_map.h> 3274887Schin 3284887Schin #undef _AST_STD_I 3294887Schin 330*8462SApril.Chin@Sun.COM #if _AST_GETOPT_H < 0 331*8462SApril.Chin@Sun.COM #undef _AST_GETOPT_H 332*8462SApril.Chin@Sun.COM #include <ast_getopt.h> 333*8462SApril.Chin@Sun.COM #endif 334*8462SApril.Chin@Sun.COM 335*8462SApril.Chin@Sun.COM #if _GETOPT_H < 0 336*8462SApril.Chin@Sun.COM #undef _GETOPT_H 337*8462SApril.Chin@Sun.COM #include <getopt.h> 338*8462SApril.Chin@Sun.COM #endif 339*8462SApril.Chin@Sun.COM 3404887Schin #if _REGEX_H < 0 3414887Schin #undef _REGEX_H 3424887Schin #include <regex.h> 3434887Schin #endif 3444887Schin 3454887Schin #endif 346