1da2e3ebdSchin /*********************************************************************** 2da2e3ebdSchin * * 3da2e3ebdSchin * This software is part of the ast package * 4*b30d1939SAndy Fiddaman * Copyright (c) 1985-2012 AT&T Intellectual Property * 5da2e3ebdSchin * and is licensed under the * 6*b30d1939SAndy Fiddaman * Eclipse Public License, Version 1.0 * 77c2fbfb3SApril Chin * by AT&T Intellectual Property * 8da2e3ebdSchin * * 9da2e3ebdSchin * A copy of the License is available at * 10*b30d1939SAndy Fiddaman * http://www.eclipse.org/org/documents/epl-v10.html * 11*b30d1939SAndy Fiddaman * (with md5 checksum b35adb5213ca9657e911e9befb180842) * 12da2e3ebdSchin * * 13da2e3ebdSchin * Information and Software Systems Research * 14da2e3ebdSchin * AT&T Research * 15da2e3ebdSchin * Florham Park NJ * 16da2e3ebdSchin * * 17da2e3ebdSchin * Glenn Fowler <gsf@research.att.com> * 18da2e3ebdSchin * David Korn <dgk@research.att.com> * 19da2e3ebdSchin * Phong Vo <kpv@research.att.com> * 20da2e3ebdSchin * * 21da2e3ebdSchin ***********************************************************************/ 22da2e3ebdSchin #pragma prototyped 23da2e3ebdSchin /* 24da2e3ebdSchin * Advanced Software Technology Library 25da2e3ebdSchin * AT&T Research 26da2e3ebdSchin * 27da2e3ebdSchin * a union of standard headers that works 28da2e3ebdSchin * with local extensions enabled 29da2e3ebdSchin * and local omission compensation 30da2e3ebdSchin */ 31da2e3ebdSchin 32da2e3ebdSchin #ifndef _AST_STD_H 33da2e3ebdSchin #define _AST_STD_H 1 34da2e3ebdSchin #define _AST_STD_I 1 35da2e3ebdSchin 36da2e3ebdSchin #include <ast_common.h> 37da2e3ebdSchin 38da2e3ebdSchin #if _BLD_ast 39*b30d1939SAndy Fiddaman #define _BLD_aso 1 40da2e3ebdSchin #define _BLD_cdt 1 41da2e3ebdSchin #define _BLD_sfio 1 42da2e3ebdSchin #if !_UWIN 43da2e3ebdSchin #define _BLD_vmalloc 1 44da2e3ebdSchin #endif 45da2e3ebdSchin #endif 46da2e3ebdSchin 47da2e3ebdSchin #ifdef _SFSTDIO_H 48da2e3ebdSchin #define _SKIP_SFSTDIO_H 49da2e3ebdSchin #else 50da2e3ebdSchin #define _SFSTDIO_H 51da2e3ebdSchin #ifndef FILE 52da2e3ebdSchin #ifndef _SFIO_H 53da2e3ebdSchin struct _sfio_s; 54da2e3ebdSchin #endif 55da2e3ebdSchin #define FILE struct _sfio_s 56da2e3ebdSchin #ifndef __FILE_typedef 57da2e3ebdSchin #define __FILE_typedef 1 58da2e3ebdSchin #endif 59da2e3ebdSchin #ifndef _FILEDEFED 60da2e3ebdSchin #define _FILEDEFED 1 61da2e3ebdSchin #endif 62da2e3ebdSchin #endif 63da2e3ebdSchin #endif 64da2e3ebdSchin 65da2e3ebdSchin #include <ast_lib.h> 66da2e3ebdSchin #include <ast_sys.h> 67da2e3ebdSchin #include <ast_getopt.h> /* <stdlib.h> does this */ 68da2e3ebdSchin #include <ast_fcntl.h> 69da2e3ebdSchin #include <ast_limits.h> 70da2e3ebdSchin #include <ast_botch.h> 71da2e3ebdSchin 72da2e3ebdSchin #ifdef _SKIP_SFSTDIO_H 73da2e3ebdSchin #undef _SKIP_SFSTDIO_H 74da2e3ebdSchin #else 75da2e3ebdSchin #undef _SFSTDIO_H 76da2e3ebdSchin #undef FILE 77da2e3ebdSchin #endif 78da2e3ebdSchin 79da2e3ebdSchin /* locale stuff */ 80da2e3ebdSchin 81da2e3ebdSchin #if !_hdr_locale 82da2e3ebdSchin 83da2e3ebdSchin struct lconv 84da2e3ebdSchin { 85da2e3ebdSchin char* decimal_point; 86da2e3ebdSchin char* thousands_sep; 87da2e3ebdSchin char* grouping; 88da2e3ebdSchin char* int_curr_symbol; 89da2e3ebdSchin char* currency_symbol; 90da2e3ebdSchin char* mon_decimal_point; 91da2e3ebdSchin char* mon_thousands_sep; 92da2e3ebdSchin char* mon_grouping; 93da2e3ebdSchin char* positive_sign; 94da2e3ebdSchin char* negative_sign; 95da2e3ebdSchin char int_frac_digits; 96da2e3ebdSchin char frac_digits; 97da2e3ebdSchin char p_cs_precedes; 98da2e3ebdSchin char p_sep_by_space; 99da2e3ebdSchin char n_cs_precedes; 100da2e3ebdSchin char n_sep_by_space; 101da2e3ebdSchin char p_sign_posn; 102da2e3ebdSchin char n_sign_posn; 103da2e3ebdSchin }; 104da2e3ebdSchin 105da2e3ebdSchin #endif 106da2e3ebdSchin 107da2e3ebdSchin #if _BLD_ast && defined(__EXPORT__) 108da2e3ebdSchin #define extern __EXPORT__ 109da2e3ebdSchin #endif 110da2e3ebdSchin 11134f9b3eeSRoland Mainz #if !_UWIN /* for ast54 compatibility */ 11234f9b3eeSRoland Mainz 1137c2fbfb3SApril Chin #undef getenv 1147c2fbfb3SApril Chin #define getenv _ast_getenv 1157c2fbfb3SApril Chin 11634f9b3eeSRoland Mainz #undef setenviron 11734f9b3eeSRoland Mainz #define setenviron _ast_setenviron 11834f9b3eeSRoland Mainz 11934f9b3eeSRoland Mainz extern char* getenv(const char*); 12034f9b3eeSRoland Mainz 12134f9b3eeSRoland Mainz #endif 12234f9b3eeSRoland Mainz 123da2e3ebdSchin #undef localeconv 124da2e3ebdSchin #define localeconv _ast_localeconv 125da2e3ebdSchin 126da2e3ebdSchin #undef setlocale 127da2e3ebdSchin #define setlocale _ast_setlocale 128da2e3ebdSchin 129da2e3ebdSchin #undef strerror 130da2e3ebdSchin #define strerror _ast_strerror 131da2e3ebdSchin 132da2e3ebdSchin extern struct lconv* localeconv(void); 1337c2fbfb3SApril Chin extern char* setenviron(const char*); 134da2e3ebdSchin extern char* setlocale(int, const char*); 135da2e3ebdSchin extern char* strerror(int); 136da2e3ebdSchin 137da2e3ebdSchin #define AST_MESSAGE_SET 3 /* see <mc.h> mcindex() */ 138da2e3ebdSchin 139da2e3ebdSchin /* 140da2e3ebdSchin * maintain this order when adding categories 141da2e3ebdSchin */ 142da2e3ebdSchin 143da2e3ebdSchin #define AST_LC_ALL 0 144da2e3ebdSchin #define AST_LC_COLLATE 1 145da2e3ebdSchin #define AST_LC_CTYPE 2 146da2e3ebdSchin #define AST_LC_MESSAGES 3 147da2e3ebdSchin #define AST_LC_MONETARY 4 148da2e3ebdSchin #define AST_LC_NUMERIC 5 149da2e3ebdSchin #define AST_LC_TIME 6 150da2e3ebdSchin #define AST_LC_IDENTIFICATION 7 151da2e3ebdSchin #define AST_LC_ADDRESS 8 152da2e3ebdSchin #define AST_LC_NAME 9 153da2e3ebdSchin #define AST_LC_TELEPHONE 10 154da2e3ebdSchin #define AST_LC_XLITERATE 11 155da2e3ebdSchin #define AST_LC_MEASUREMENT 12 156da2e3ebdSchin #define AST_LC_PAPER 13 157da2e3ebdSchin #define AST_LC_COUNT 14 15834f9b3eeSRoland Mainz #define AST_LC_LANG 255 159da2e3ebdSchin 1603e14f97fSRoger A. Faulkner #define AST_LC_internal 1 161*b30d1939SAndy Fiddaman #define AST_LC_test (1L<<26) 1623e14f97fSRoger A. Faulkner #define AST_LC_setenv (1L<<27) 163da2e3ebdSchin #define AST_LC_find (1L<<28) 164da2e3ebdSchin #define AST_LC_debug (1L<<29) 165da2e3ebdSchin #define AST_LC_setlocale (1L<<30) 166da2e3ebdSchin #define AST_LC_translate (1L<<31) 167da2e3ebdSchin 168da2e3ebdSchin #ifndef LC_ALL 169da2e3ebdSchin #define LC_ALL (-AST_LC_ALL) 170da2e3ebdSchin #endif 171da2e3ebdSchin #ifndef LC_COLLATE 172da2e3ebdSchin #define LC_COLLATE (-AST_LC_COLLATE) 173da2e3ebdSchin #endif 174da2e3ebdSchin #ifndef LC_CTYPE 175da2e3ebdSchin #define LC_CTYPE (-AST_LC_CTYPE) 176da2e3ebdSchin #endif 177da2e3ebdSchin #ifndef LC_MESSAGES 178da2e3ebdSchin #define LC_MESSAGES (-AST_LC_MESSAGES) 179da2e3ebdSchin #endif 180da2e3ebdSchin #ifndef LC_MONETARY 181da2e3ebdSchin #define LC_MONETARY (-AST_LC_MONETARY) 182da2e3ebdSchin #endif 183da2e3ebdSchin #ifndef LC_NUMERIC 184da2e3ebdSchin #define LC_NUMERIC (-AST_LC_NUMERIC) 185da2e3ebdSchin #endif 186da2e3ebdSchin #ifndef LC_TIME 187da2e3ebdSchin #define LC_TIME (-AST_LC_TIME) 188da2e3ebdSchin #endif 189da2e3ebdSchin #ifndef LC_ADDRESS 190da2e3ebdSchin #define LC_ADDRESS (-AST_LC_ADDRESS) 191da2e3ebdSchin #endif 192da2e3ebdSchin #ifndef LC_IDENTIFICATION 193da2e3ebdSchin #define LC_IDENTIFICATION (-AST_LC_IDENTIFICATION) 194da2e3ebdSchin #endif 195da2e3ebdSchin #ifndef LC_NAME 196da2e3ebdSchin #define LC_NAME (-AST_LC_NAME) 197da2e3ebdSchin #endif 198da2e3ebdSchin #ifndef LC_TELEPHONE 199da2e3ebdSchin #define LC_TELEPHONE (-AST_LC_TELEPHONE) 200da2e3ebdSchin #endif 201da2e3ebdSchin #ifndef LC_XLITERATE 202da2e3ebdSchin #define LC_XLITERATE (-AST_LC_XLITERATE) 203da2e3ebdSchin #endif 204da2e3ebdSchin #ifndef LC_MEASUREMENT 205da2e3ebdSchin #define LC_MEASUREMENT (-AST_LC_MEASUREMENT) 206da2e3ebdSchin #endif 207da2e3ebdSchin #ifndef LC_PAPER 208da2e3ebdSchin #define LC_PAPER (-AST_LC_PAPER) 209da2e3ebdSchin #endif 21034f9b3eeSRoland Mainz #ifndef LC_LANG 21134f9b3eeSRoland Mainz #define LC_LANG (-AST_LC_LANG) 21234f9b3eeSRoland Mainz #endif 213da2e3ebdSchin 214da2e3ebdSchin #undef extern 215da2e3ebdSchin 216da2e3ebdSchin #undef strcoll 217da2e3ebdSchin #if _std_strcoll 218da2e3ebdSchin #define strcoll _ast_info.collate 219da2e3ebdSchin #else 220da2e3ebdSchin #define strcoll strcmp 221da2e3ebdSchin #endif 222da2e3ebdSchin 223da2e3ebdSchin typedef struct 224da2e3ebdSchin { 225da2e3ebdSchin 226da2e3ebdSchin char* id; 227da2e3ebdSchin 228da2e3ebdSchin struct 229da2e3ebdSchin { 230da2e3ebdSchin uint32_t serial; 231da2e3ebdSchin uint32_t set; 232da2e3ebdSchin } locale; 233da2e3ebdSchin 234da2e3ebdSchin long tmp_long; 235da2e3ebdSchin size_t tmp_size; 236da2e3ebdSchin short tmp_short; 237da2e3ebdSchin char tmp_char; 238da2e3ebdSchin wchar_t tmp_wchar; 239da2e3ebdSchin 240da2e3ebdSchin int (*collate)(const char*, const char*); 241da2e3ebdSchin 242da2e3ebdSchin int tmp_int; 243da2e3ebdSchin void* tmp_pointer; 244da2e3ebdSchin 245da2e3ebdSchin int mb_cur_max; 246da2e3ebdSchin int (*mb_len)(const char*, size_t); 247da2e3ebdSchin int (*mb_towc)(wchar_t*, const char*, size_t); 248da2e3ebdSchin size_t (*mb_xfrm)(char*, const char*, size_t); 249da2e3ebdSchin int (*mb_width)(wchar_t); 250da2e3ebdSchin int (*mb_conv)(char*, wchar_t); 251da2e3ebdSchin 252da2e3ebdSchin uint32_t env_serial; 25334f9b3eeSRoland Mainz uint32_t mb_sync; 2543e14f97fSRoger A. Faulkner uint32_t version; 255da2e3ebdSchin 256*b30d1939SAndy Fiddaman int (*mb_alpha)(wchar_t); 257*b30d1939SAndy Fiddaman 258*b30d1939SAndy Fiddaman char pad[936 - sizeof(void*)]; 259da2e3ebdSchin 260da2e3ebdSchin } _Ast_info_t; 261da2e3ebdSchin 262da2e3ebdSchin #if _BLD_ast && defined(__EXPORT__) 263da2e3ebdSchin #define extern extern __EXPORT__ 264da2e3ebdSchin #endif 265da2e3ebdSchin #if !_BLD_ast && defined(__IMPORT__) 266da2e3ebdSchin #define extern extern __IMPORT__ 267da2e3ebdSchin #endif 268da2e3ebdSchin 269da2e3ebdSchin extern _Ast_info_t _ast_info; 270da2e3ebdSchin 271da2e3ebdSchin #undef extern 272da2e3ebdSchin 273da2e3ebdSchin /* largefile hackery -- ast uses the large versions by default */ 274da2e3ebdSchin 275*b30d1939SAndy Fiddaman #if _typ_ino64_t 276*b30d1939SAndy Fiddaman #undef ino_t 277*b30d1939SAndy Fiddaman #define ino_t ino64_t 278*b30d1939SAndy Fiddaman #endif 279da2e3ebdSchin #if _typ_off64_t 280da2e3ebdSchin #undef off_t 281da2e3ebdSchin #define off_t off64_t 282da2e3ebdSchin #endif 283da2e3ebdSchin #if !defined(ftruncate) && _lib_ftruncate64 284da2e3ebdSchin #define ftruncate ftruncate64 285da2e3ebdSchin extern int ftruncate64(int, off64_t); 286da2e3ebdSchin #endif 287da2e3ebdSchin #if !defined(lseek) && _lib_lseek64 288da2e3ebdSchin #define lseek lseek64 289da2e3ebdSchin extern off64_t lseek64(int, off64_t, int); 290da2e3ebdSchin #endif 291da2e3ebdSchin #if !defined(truncate) && _lib_truncate64 292da2e3ebdSchin #define truncate truncate64 293da2e3ebdSchin extern int truncate64(const char*, off64_t); 294da2e3ebdSchin #endif 295da2e3ebdSchin 296da2e3ebdSchin /* direct macro access for bsd crossover */ 297da2e3ebdSchin 298da2e3ebdSchin #if !defined(__cplusplus) 299da2e3ebdSchin 300da2e3ebdSchin #if !defined(memcpy) && !defined(_lib_memcpy) && defined(_lib_bcopy) 301da2e3ebdSchin #define memcpy(t,f,n) (bcopy(f,t,n),(t)) 302da2e3ebdSchin #endif 303da2e3ebdSchin 304da2e3ebdSchin #if !defined(memzero) && !defined(_lib_memzero) 305da2e3ebdSchin #if defined(_lib_memset) || !defined(_lib_bzero) 306da2e3ebdSchin #define memzero(b,n) memset(b,0,n) 307da2e3ebdSchin #else 308da2e3ebdSchin #define memzero(b,n) (bzero(b,n),(b)) 309da2e3ebdSchin #endif 310da2e3ebdSchin #endif 311da2e3ebdSchin 312da2e3ebdSchin #endif 313da2e3ebdSchin 314da2e3ebdSchin #if !defined(remove) 315da2e3ebdSchin extern int remove(const char*); 316da2e3ebdSchin #endif 317da2e3ebdSchin 318da2e3ebdSchin #if !defined(rename) 319da2e3ebdSchin extern int rename(const char*, const char*); 320da2e3ebdSchin #endif 321da2e3ebdSchin 322da2e3ebdSchin #if !defined(strchr) && !defined(_lib_strchr) && defined(_lib_index) 323da2e3ebdSchin #define strchr(s,c) index(s,c) 324da2e3ebdSchin #endif 325da2e3ebdSchin 326da2e3ebdSchin #if !defined(strrchr) && !defined(_lib_strrchr) && defined(_lib_rindex) 327da2e3ebdSchin #define strrchr(s,c) rindex(s,c) 328da2e3ebdSchin #endif 329da2e3ebdSchin 330da2e3ebdSchin /* and now introducing prototypes botched by the standard(s) */ 331da2e3ebdSchin 332da2e3ebdSchin #if _BLD_ast && defined(__EXPORT__) 333da2e3ebdSchin #define extern __EXPORT__ 334da2e3ebdSchin #endif 335da2e3ebdSchin 336da2e3ebdSchin #undef getpgrp 337da2e3ebdSchin #define getpgrp() _ast_getpgrp() 338da2e3ebdSchin extern int _ast_getpgrp(void); 339da2e3ebdSchin 340da2e3ebdSchin #undef extern 341da2e3ebdSchin 342da2e3ebdSchin /* 343da2e3ebdSchin * and finally, standard interfaces hijacked by ast 3443e14f97fSRoger A. Faulkner * _AST_STD_I delays headers that require <ast_map.h> 345da2e3ebdSchin */ 346da2e3ebdSchin 347da2e3ebdSchin #include <ast_map.h> 348da2e3ebdSchin 349da2e3ebdSchin #undef _AST_STD_I 350da2e3ebdSchin 3517c2fbfb3SApril Chin #if _AST_GETOPT_H < 0 3527c2fbfb3SApril Chin #undef _AST_GETOPT_H 3537c2fbfb3SApril Chin #include <ast_getopt.h> 3547c2fbfb3SApril Chin #endif 3557c2fbfb3SApril Chin 3567c2fbfb3SApril Chin #if _GETOPT_H < 0 3577c2fbfb3SApril Chin #undef _GETOPT_H 3587c2fbfb3SApril Chin #include <getopt.h> 3597c2fbfb3SApril Chin #endif 3607c2fbfb3SApril Chin 361da2e3ebdSchin #if _REGEX_H < 0 362da2e3ebdSchin #undef _REGEX_H 363da2e3ebdSchin #include <regex.h> 364da2e3ebdSchin #endif 365da2e3ebdSchin 366da2e3ebdSchin #endif 367