14887Schin /*********************************************************************** 24887Schin * * 34887Schin * This software is part of the ast package * 4*12068SRoger.Faulkner@Oracle.COM * Copyright (c) 1985-2010 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 11010898Sroland.mainz@nrubsig.org #if !_UWIN /* for ast54 compatibility */ 11110898Sroland.mainz@nrubsig.org 1128462SApril.Chin@Sun.COM #undef getenv 1138462SApril.Chin@Sun.COM #define getenv _ast_getenv 1148462SApril.Chin@Sun.COM 11510898Sroland.mainz@nrubsig.org #undef setenviron 11610898Sroland.mainz@nrubsig.org #define setenviron _ast_setenviron 11710898Sroland.mainz@nrubsig.org 11810898Sroland.mainz@nrubsig.org extern char* getenv(const char*); 11910898Sroland.mainz@nrubsig.org 12010898Sroland.mainz@nrubsig.org #endif 12110898Sroland.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 15710898Sroland.mainz@nrubsig.org #define AST_LC_LANG 255 1584887Schin 159*12068SRoger.Faulkner@Oracle.COM #define AST_LC_internal 1 160*12068SRoger.Faulkner@Oracle.COM #define AST_LC_setenv (1L<<27) 1614887Schin #define AST_LC_find (1L<<28) 1624887Schin #define AST_LC_debug (1L<<29) 1634887Schin #define AST_LC_setlocale (1L<<30) 1644887Schin #define AST_LC_translate (1L<<31) 1654887Schin 1664887Schin #ifndef LC_ALL 1674887Schin #define LC_ALL (-AST_LC_ALL) 1684887Schin #endif 1694887Schin #ifndef LC_COLLATE 1704887Schin #define LC_COLLATE (-AST_LC_COLLATE) 1714887Schin #endif 1724887Schin #ifndef LC_CTYPE 1734887Schin #define LC_CTYPE (-AST_LC_CTYPE) 1744887Schin #endif 1754887Schin #ifndef LC_MESSAGES 1764887Schin #define LC_MESSAGES (-AST_LC_MESSAGES) 1774887Schin #endif 1784887Schin #ifndef LC_MONETARY 1794887Schin #define LC_MONETARY (-AST_LC_MONETARY) 1804887Schin #endif 1814887Schin #ifndef LC_NUMERIC 1824887Schin #define LC_NUMERIC (-AST_LC_NUMERIC) 1834887Schin #endif 1844887Schin #ifndef LC_TIME 1854887Schin #define LC_TIME (-AST_LC_TIME) 1864887Schin #endif 1874887Schin #ifndef LC_ADDRESS 1884887Schin #define LC_ADDRESS (-AST_LC_ADDRESS) 1894887Schin #endif 1904887Schin #ifndef LC_IDENTIFICATION 1914887Schin #define LC_IDENTIFICATION (-AST_LC_IDENTIFICATION) 1924887Schin #endif 1934887Schin #ifndef LC_NAME 1944887Schin #define LC_NAME (-AST_LC_NAME) 1954887Schin #endif 1964887Schin #ifndef LC_TELEPHONE 1974887Schin #define LC_TELEPHONE (-AST_LC_TELEPHONE) 1984887Schin #endif 1994887Schin #ifndef LC_XLITERATE 2004887Schin #define LC_XLITERATE (-AST_LC_XLITERATE) 2014887Schin #endif 2024887Schin #ifndef LC_MEASUREMENT 2034887Schin #define LC_MEASUREMENT (-AST_LC_MEASUREMENT) 2044887Schin #endif 2054887Schin #ifndef LC_PAPER 2064887Schin #define LC_PAPER (-AST_LC_PAPER) 2074887Schin #endif 20810898Sroland.mainz@nrubsig.org #ifndef LC_LANG 20910898Sroland.mainz@nrubsig.org #define LC_LANG (-AST_LC_LANG) 21010898Sroland.mainz@nrubsig.org #endif 2114887Schin 2124887Schin #undef extern 2134887Schin 2144887Schin #undef strcoll 2154887Schin #if _std_strcoll 2164887Schin #define strcoll _ast_info.collate 2174887Schin #else 2184887Schin #define strcoll strcmp 2194887Schin #endif 2204887Schin 2214887Schin typedef struct 2224887Schin { 2234887Schin 2244887Schin char* id; 2254887Schin 2264887Schin struct 2274887Schin { 2284887Schin uint32_t serial; 2294887Schin uint32_t set; 2304887Schin } locale; 2314887Schin 2324887Schin long tmp_long; 2334887Schin size_t tmp_size; 2344887Schin short tmp_short; 2354887Schin char tmp_char; 2364887Schin wchar_t tmp_wchar; 2374887Schin 2384887Schin int (*collate)(const char*, const char*); 2394887Schin 2404887Schin int tmp_int; 2414887Schin void* tmp_pointer; 2424887Schin 2434887Schin int mb_cur_max; 2444887Schin int (*mb_len)(const char*, size_t); 2454887Schin int (*mb_towc)(wchar_t*, const char*, size_t); 2464887Schin size_t (*mb_xfrm)(char*, const char*, size_t); 2474887Schin int (*mb_width)(wchar_t); 2484887Schin int (*mb_conv)(char*, wchar_t); 2494887Schin 2504887Schin uint32_t env_serial; 25110898Sroland.mainz@nrubsig.org uint32_t mb_sync; 252*12068SRoger.Faulkner@Oracle.COM uint32_t version; 2534887Schin 254*12068SRoger.Faulkner@Oracle.COM char pad[936]; 2554887Schin 2564887Schin } _Ast_info_t; 2574887Schin 2584887Schin #if _BLD_ast && defined(__EXPORT__) 2594887Schin #define extern extern __EXPORT__ 2604887Schin #endif 2614887Schin #if !_BLD_ast && defined(__IMPORT__) 2624887Schin #define extern extern __IMPORT__ 2634887Schin #endif 2644887Schin 2654887Schin extern _Ast_info_t _ast_info; 2664887Schin 2674887Schin #undef extern 2684887Schin 2694887Schin /* largefile hackery -- ast uses the large versions by default */ 2704887Schin 2714887Schin #if _typ_off64_t 2724887Schin #undef off_t 2734887Schin #define off_t off64_t 2744887Schin #endif 2754887Schin #if !defined(ftruncate) && _lib_ftruncate64 2764887Schin #define ftruncate ftruncate64 2774887Schin extern int ftruncate64(int, off64_t); 2784887Schin #endif 2794887Schin #if !defined(lseek) && _lib_lseek64 2804887Schin #define lseek lseek64 2814887Schin extern off64_t lseek64(int, off64_t, int); 2824887Schin #endif 2834887Schin #if !defined(truncate) && _lib_truncate64 2844887Schin #define truncate truncate64 2854887Schin extern int truncate64(const char*, off64_t); 2864887Schin #endif 2874887Schin 2884887Schin /* direct macro access for bsd crossover */ 2894887Schin 2904887Schin #if !defined(__cplusplus) 2914887Schin 2924887Schin #if !defined(memcpy) && !defined(_lib_memcpy) && defined(_lib_bcopy) 2934887Schin #define memcpy(t,f,n) (bcopy(f,t,n),(t)) 2944887Schin #endif 2954887Schin 2964887Schin #if !defined(memzero) && !defined(_lib_memzero) 2974887Schin #if defined(_lib_memset) || !defined(_lib_bzero) 2984887Schin #define memzero(b,n) memset(b,0,n) 2994887Schin #else 3004887Schin #define memzero(b,n) (bzero(b,n),(b)) 3014887Schin #endif 3024887Schin #endif 3034887Schin 3044887Schin #endif 3054887Schin 3064887Schin #if !defined(remove) 3074887Schin extern int remove(const char*); 3084887Schin #endif 3094887Schin 3104887Schin #if !defined(rename) 3114887Schin extern int rename(const char*, const char*); 3124887Schin #endif 3134887Schin 3144887Schin #if !defined(strchr) && !defined(_lib_strchr) && defined(_lib_index) 3154887Schin #define strchr(s,c) index(s,c) 3164887Schin #endif 3174887Schin 3184887Schin #if !defined(strrchr) && !defined(_lib_strrchr) && defined(_lib_rindex) 3194887Schin #define strrchr(s,c) rindex(s,c) 3204887Schin #endif 3214887Schin 3224887Schin /* and now introducing prototypes botched by the standard(s) */ 3234887Schin 3244887Schin #if _BLD_ast && defined(__EXPORT__) 3254887Schin #define extern __EXPORT__ 3264887Schin #endif 3274887Schin 3284887Schin #undef getpgrp 3294887Schin #define getpgrp() _ast_getpgrp() 3304887Schin extern int _ast_getpgrp(void); 3314887Schin 3324887Schin #undef extern 3334887Schin 3344887Schin /* 3354887Schin * and finally, standard interfaces hijacked by ast 336*12068SRoger.Faulkner@Oracle.COM * _AST_STD_I delays headers that require <ast_map.h> 3374887Schin */ 3384887Schin 3394887Schin #include <ast_map.h> 3404887Schin 3414887Schin #undef _AST_STD_I 3424887Schin 3438462SApril.Chin@Sun.COM #if _AST_GETOPT_H < 0 3448462SApril.Chin@Sun.COM #undef _AST_GETOPT_H 3458462SApril.Chin@Sun.COM #include <ast_getopt.h> 3468462SApril.Chin@Sun.COM #endif 3478462SApril.Chin@Sun.COM 3488462SApril.Chin@Sun.COM #if _GETOPT_H < 0 3498462SApril.Chin@Sun.COM #undef _GETOPT_H 3508462SApril.Chin@Sun.COM #include <getopt.h> 3518462SApril.Chin@Sun.COM #endif 3528462SApril.Chin@Sun.COM 3534887Schin #if _REGEX_H < 0 3544887Schin #undef _REGEX_H 3554887Schin #include <regex.h> 3564887Schin #endif 3574887Schin 3584887Schin #endif 359