Blame src/lib/libast/include/ast.h

Packit Service a8c26c
#define register
Packit Service a8c26c
/***********************************************************************
Packit Service a8c26c
*                                                                      *
Packit Service a8c26c
*               This software is part of the ast package               *
Packit Service a8c26c
*          Copyright (c) 1985-2012 AT&T Intellectual Property          *
Packit Service a8c26c
*                      and is licensed under the                       *
Packit Service a8c26c
*                 Eclipse Public License, Version 1.0                  *
Packit Service a8c26c
*                    by AT&T Intellectual Property                     *
Packit Service a8c26c
*                                                                      *
Packit Service a8c26c
*                A copy of the License is available at                 *
Packit Service a8c26c
*          http://www.eclipse.org/org/documents/epl-v10.html           *
Packit Service a8c26c
*         (with md5 checksum b35adb5213ca9657e911e9befb180842)         *
Packit Service a8c26c
*                                                                      *
Packit Service a8c26c
*              Information and Software Systems Research               *
Packit Service a8c26c
*                            AT&T Research                             *
Packit Service a8c26c
*                           Florham Park NJ                            *
Packit Service a8c26c
*                                                                      *
Packit Service a8c26c
*                 Glenn Fowler <gsf@research.att.com>                  *
Packit Service a8c26c
*                  David Korn <dgk@research.att.com>                   *
Packit Service a8c26c
*                   Phong Vo <kpv@research.att.com>                    *
Packit Service a8c26c
*                                                                      *
Packit Service a8c26c
***********************************************************************/
Packit Service a8c26c
#pragma prototyped
Packit Service a8c26c
/*
Packit Service a8c26c
 * Advanced Software Technology Library
Packit Service a8c26c
 * AT&T Research
Packit Service a8c26c
 *
Packit Service a8c26c
 * std + posix + ast
Packit Service a8c26c
 */
Packit Service a8c26c
Packit Service a8c26c
#ifndef _AST_H
Packit Service a8c26c
#define _AST_H
Packit Service a8c26c
Packit Service a8c26c
#ifndef _AST_STD_H
Packit Service a8c26c
#include <ast_std.h>
Packit Service a8c26c
#endif
Packit Service a8c26c
Packit Service a8c26c
#ifndef _SFIO_H
Packit Service a8c26c
#include <sfio.h>
Packit Service a8c26c
#endif
Packit Service a8c26c
Packit Service a8c26c
#ifndef	ast
Packit Service a8c26c
#define ast		_ast_info
Packit Service a8c26c
#endif
Packit Service a8c26c
Packit Service a8c26c
#ifndef PATH_MAX
Packit Service a8c26c
#define PATH_MAX	1024
Packit Service a8c26c
#endif
Packit Service a8c26c
Packit Service a8c26c
/*
Packit Service a8c26c
 * workaround botched headers that assume <stdio.h>
Packit Service a8c26c
 */
Packit Service a8c26c
Packit Service a8c26c
#ifndef FILE
Packit Service a8c26c
#ifndef _SFIO_H
Packit Service a8c26c
struct _sfio_s;
Packit Service a8c26c
#endif
Packit Service a8c26c
#define FILE		struct _sfio_s
Packit Service a8c26c
#ifndef	__FILE_typedef
Packit Service a8c26c
#define __FILE_typedef	1
Packit Service a8c26c
#endif
Packit Service a8c26c
#ifndef	_FILE_DEFINED
Packit Service a8c26c
#define _FILE_DEFINED   1
Packit Service a8c26c
#endif
Packit Service a8c26c
#ifndef	_FILE_defined
Packit Service a8c26c
#define _FILE_defined   1
Packit Service a8c26c
#endif
Packit Service a8c26c
#ifndef _FILEDEFED
Packit Service a8c26c
#define _FILEDEFED	1
Packit Service a8c26c
#endif
Packit Service a8c26c
#ifndef __FILE_defined
Packit Service a8c26c
#define __FILE_defined  1
Packit Service a8c26c
#endif
Packit Service a8c26c
#ifndef ____FILE_defined
Packit Service a8c26c
#define ____FILE_defined  1
Packit Service a8c26c
#endif
Packit Service a8c26c
#endif
Packit Service a8c26c
Packit Service a8c26c
/*
Packit Service a8c26c
 * exit() support -- this matches shell exit codes
Packit Service a8c26c
 */
Packit Service a8c26c
Packit Service a8c26c
#define EXIT_BITS	8			/* # exit status bits	*/
Packit Service a8c26c
Packit Service a8c26c
#define EXIT_USAGE	2			/* usage exit code	*/
Packit Service a8c26c
#define EXIT_QUIT	((1<<(EXIT_BITS))-1)	/* parent should quit	*/
Packit Service a8c26c
#define EXIT_NOTFOUND	((1<<(EXIT_BITS-1))-1)	/* command not found	*/
Packit Service a8c26c
#define EXIT_NOEXEC	((1<<(EXIT_BITS-1))-2)	/* other exec error	*/
Packit Service a8c26c
Packit Service a8c26c
#define EXIT_CODE(x)	((x)&((1<
Packit Service a8c26c
#define EXIT_CORE(x)	(EXIT_CODE(x)|(1<
Packit Service a8c26c
#define EXIT_TERM(x)	(EXIT_CODE(x)|(1<
Packit Service a8c26c
Packit Service a8c26c
/*
Packit Service a8c26c
 * NOTE: for compatibility the following work for EXIT_BITS={7,8}
Packit Service a8c26c
 */
Packit Service a8c26c
Packit Service a8c26c
#define EXIT_STATUS(x)	(((x)&((1<<(EXIT_BITS-2))-1))?(x):EXIT_CODE((x)>>EXIT_BITS))
Packit Service a8c26c
Packit Service a8c26c
#define EXITED_CORE(x)	(((x)&((1<
Packit Service a8c26c
#define EXITED_TERM(x)	((x)&((1<
Packit Service a8c26c
Packit Service a8c26c
/*
Packit Service a8c26c
 * astconflist() flags
Packit Service a8c26c
 */
Packit Service a8c26c
Packit Service a8c26c
#define ASTCONF_parse		0x0001
Packit Service a8c26c
#define ASTCONF_write		0x0002
Packit Service a8c26c
#define ASTCONF_read		0x0004
Packit Service a8c26c
#define ASTCONF_lower		0x0008
Packit Service a8c26c
#define ASTCONF_base		0x0010
Packit Service a8c26c
#define ASTCONF_defined		0x0020
Packit Service a8c26c
#define ASTCONF_quote		0x0040
Packit Service a8c26c
#define ASTCONF_table		0x0080
Packit Service a8c26c
#define ASTCONF_matchcall	0x0100
Packit Service a8c26c
#define ASTCONF_matchname	0x0200
Packit Service a8c26c
#define ASTCONF_matchstandard	0x0400
Packit Service a8c26c
#define ASTCONF_error		0x0800
Packit Service a8c26c
#define ASTCONF_system		0x1000
Packit Service a8c26c
#define ASTCONF_AST		0x2000
Packit Service a8c26c
Packit Service a8c26c
/*
Packit Service a8c26c
 * pathcanon() flags
Packit Service a8c26c
 */
Packit Service a8c26c
Packit Service a8c26c
#define PATH_PHYSICAL	01
Packit Service a8c26c
#define PATH_DOTDOT	02
Packit Service a8c26c
#define PATH_EXISTS	04
Packit Service a8c26c
#define PATH_VERIFIED(n) (((n)&01777)<<5)
Packit Service a8c26c
Packit Service a8c26c
/*
Packit Service a8c26c
 * pathaccess() flags
Packit Service a8c26c
 */
Packit Service a8c26c
Packit Service a8c26c
#define PATH_READ	004
Packit Service a8c26c
#define PATH_WRITE	002
Packit Service a8c26c
#define PATH_EXECUTE	001
Packit Service a8c26c
#define	PATH_REGULAR	010
Packit Service a8c26c
#define PATH_ABSOLUTE	020
Packit Service a8c26c
Packit Service a8c26c
/*
Packit Service a8c26c
 * touch() flags
Packit Service a8c26c
 */
Packit Service a8c26c
Packit Service a8c26c
#define PATH_TOUCH_CREATE	01
Packit Service a8c26c
#define PATH_TOUCH_VERBATIM	02
Packit Service a8c26c
Packit Service a8c26c
/*
Packit Service a8c26c
 * pathcheck() info
Packit Service a8c26c
 */
Packit Service a8c26c
Packit Service a8c26c
typedef struct
Packit Service a8c26c
{
Packit Service a8c26c
	unsigned long	date;
Packit Service a8c26c
	char*		feature;
Packit Service a8c26c
	char*		host;
Packit Service a8c26c
	char*		user;
Packit Service a8c26c
} Pathcheck_t;
Packit Service a8c26c
Packit Service a8c26c
/*
Packit Service a8c26c
 * strgrpmatch() flags
Packit Service a8c26c
 */
Packit Service a8c26c
Packit Service a8c26c
#define STR_MAXIMAL	01		/* maximal match		*/
Packit Service a8c26c
#define STR_LEFT	02		/* implicit left anchor		*/
Packit Service a8c26c
#define STR_RIGHT	04		/* implicit right anchor	*/
Packit Service a8c26c
#define STR_ICASE	010		/* ignore case			*/
Packit Service a8c26c
#define STR_GROUP	020		/* (|&) inside [@|&](...) only	*/
Packit Service a8c26c
Packit Service a8c26c
/*
Packit Service a8c26c
 * fmtquote() flags
Packit Service a8c26c
 */
Packit Service a8c26c
Packit Service a8c26c
#define FMT_ALWAYS	0x01		/* always quote			*/
Packit Service a8c26c
#define FMT_ESCAPED	0x02		/* already escaped		*/
Packit Service a8c26c
#define FMT_SHELL	0x04		/* escape $ ` too		*/
Packit Service a8c26c
#define FMT_WIDE	0x08		/* don't escape 8 bit chars	*/
Packit Service a8c26c
#define FMT_PARAM	0x10		/* disable FMT_SHELL ${$( quote	*/
Packit Service a8c26c
Packit Service a8c26c
/*
Packit Service a8c26c
 * chrexp() flags
Packit Service a8c26c
 */
Packit Service a8c26c
Packit Service a8c26c
#define FMT_EXP_CHAR	0x020		/* expand single byte chars	*/
Packit Service a8c26c
#define FMT_EXP_LINE	0x040		/* expand \n and \r		*/
Packit Service a8c26c
#define FMT_EXP_WIDE	0x080		/* expand \u \U \x wide chars	*/
Packit Service a8c26c
#define FMT_EXP_NOCR	0x100		/* skip \r			*/
Packit Service a8c26c
#define FMT_EXP_NONL	0x200		/* skip \n			*/
Packit Service a8c26c
Packit Service a8c26c
/*
Packit Service a8c26c
 * multibyte macros
Packit Service a8c26c
 */
Packit Service a8c26c
Packit Service a8c26c
#define mbmax()		(ast.mb_cur_max)
Packit Service a8c26c
#define mberr()		(ast.tmp_int<0)
Packit Service a8c26c
Packit Service a8c26c
#define mbcoll()	(ast.mb_xfrm!=0)
Packit Service a8c26c
#define mbwide()	(mbmax()>1)
Packit Service a8c26c
Packit Service a8c26c
#define mb2wc(w,p,n)	(*ast.mb_towc)(&w,(char*)p,n)
Packit Service a8c26c
#define mbchar(p)	(mbwide()?((ast.tmp_int=(*ast.mb_towc)(&ast.tmp_wchar,(char*)(p),mbmax()))>0?((p+=ast.tmp_int),ast.tmp_wchar):(p+=ast.mb_sync+1,ast.tmp_int)):(*(unsigned char*)(p++)))
Packit Service a8c26c
#define mbnchar(p,n)	(mbwide()?((ast.tmp_int=(*ast.mb_towc)(&ast.tmp_wchar,(char*)(p),n))>0?((p+=ast.tmp_int),ast.tmp_wchar):(p+=ast.mb_sync+1,ast.tmp_int)):(*(unsigned char*)(p++)))
Packit Service a8c26c
#define mbinit()	(mbwide()?(*ast.mb_towc)((wchar_t*)0,(char*)0,mbmax()):0)
Packit Service a8c26c
#define mbsize(p)	(mbwide()?(*ast.mb_len)((char*)(p),mbmax()):((p),1))
Packit Service a8c26c
#define mbnsize(p,n)	(mbwide()?(*ast.mb_len)((char*)(p),n):((p),1))
Packit Service a8c26c
#define mbconv(s,w)	(ast.mb_conv?(*ast.mb_conv)(s,w):((*(s)=(w)),1))
Packit Service a8c26c
#define mbwidth(w)	(ast.mb_width?(*ast.mb_width)(w):1)
Packit Service a8c26c
#define mbxfrm(t,f,n)	(mbcoll()?(*ast.mb_xfrm)((char*)(t),(char*)(f),n):0)
Packit Service a8c26c
#define mbalpha(w)	(ast.mb_alpha?(*ast.mb_alpha)(w):isalpha((w)&0xff))
Packit Service a8c26c
Packit Service a8c26c
/*
Packit Service a8c26c
 * common macros
Packit Service a8c26c
 */
Packit Service a8c26c
Packit Service a8c26c
#define elementsof(x)	(sizeof(x)/sizeof(x[0]))
Packit Service a8c26c
#define integralof(x)	(((char*)(x))-((char*)0))
Packit Service a8c26c
#define newof(p,t,n,x)	((p)?(t*)realloc((char*)(p),sizeof(t)*(n)+(x)):(t*)calloc(1,sizeof(t)*(n)+(x)))
Packit Service a8c26c
#define oldof(p,t,n,x)	((p)?(t*)realloc((char*)(p),sizeof(t)*(n)+(x)):(t*)malloc(sizeof(t)*(n)+(x)))
Packit Service a8c26c
#define pointerof(x)	((void*)((char*)0+(x)))
Packit Service a8c26c
#define roundof(x,y)	(((x)+(y)-1)&~((y)-1))
Packit Service a8c26c
#define ssizeof(x)	((int)sizeof(x))
Packit Service a8c26c
Packit Service a8c26c
#define streq(a,b)	(*(a)==*(b)&&!strcmp(a,b))
Packit Service a8c26c
#define strneq(a,b,n)	(*(a)==*(b)&&!strncmp(a,b,n))
Packit Service a8c26c
#define strsignal(s)	fmtsignal(s)
Packit Service a8c26c
Packit Service a8c26c
#if defined(__STDC__) || defined(__cplusplus) || defined(c_plusplus)
Packit Service a8c26c
#define NiL		0
Packit Service a8c26c
#define NoP(x)		(void)(x)
Packit Service a8c26c
#else
Packit Service a8c26c
#define NiL		((char*)0)
Packit Service a8c26c
#define NoP(x)		(&x,1)
Packit Service a8c26c
#endif
Packit Service a8c26c
Packit Service a8c26c
#if !defined(NoF)
Packit Service a8c26c
#define NoF(x)		void _DATA_ ## x () {}
Packit Service a8c26c
#if !defined(_DATA_)
Packit Service a8c26c
#define _DATA_
Packit Service a8c26c
#endif
Packit Service a8c26c
#endif
Packit Service a8c26c
Packit Service a8c26c
#if !defined(NoN)
Packit Service a8c26c
#define NoN(x)		void _STUB_ ## x () {}
Packit Service a8c26c
#if !defined(_STUB_)
Packit Service a8c26c
#define _STUB_
Packit Service a8c26c
#endif
Packit Service a8c26c
#endif
Packit Service a8c26c
Packit Service a8c26c
#define NOT_USED(x)	NoP(x)
Packit Service a8c26c
Packit Service a8c26c
typedef int (*Error_f)(void*, void*, int, ...);
Packit Service a8c26c
Packit Service a8c26c
typedef int (*Ast_confdisc_f)(const char*, const char*, const char*);
Packit Service a8c26c
typedef int (*Strcmp_context_f)(const char*, const char*, void*);
Packit Service a8c26c
typedef int (*Strcmp_f)(const char*, const char*);
Packit Service a8c26c
Packit Service a8c26c
#if _BLD_ast && defined(__EXPORT__)
Packit Service a8c26c
#define extern		__EXPORT__
Packit Service a8c26c
#endif
Packit Service a8c26c
Packit Service a8c26c
extern char*		astgetconf(const char*, const char*, const char*, int, Error_f);
Packit Service a8c26c
extern char*		astconf(const char*, const char*, const char*);
Packit Service a8c26c
extern Ast_confdisc_f	astconfdisc(Ast_confdisc_f);
Packit Service a8c26c
extern void		astconflist(Sfio_t*, const char*, int, const char*);
Packit Service a8c26c
extern off_t		astcopy(int, int, off_t);
Packit Service a8c26c
extern int		astlicense(char*, int, char*, char*, int, int, int);
Packit Service a8c26c
extern int		astquery(int, const char*, ...);
Packit Service a8c26c
extern void		astwinsize(int, int*, int*);
Packit Service a8c26c
Packit Service a8c26c
extern ssize_t		base64encode(const void*, size_t, void**, void*, size_t, void**);
Packit Service a8c26c
extern ssize_t		base64decode(const void*, size_t, void**, void*, size_t, void**);
Packit Service a8c26c
extern int		chresc(const char*, char**);
Packit Service a8c26c
extern int		chrexp(const char*, char**, int*, int);
Packit Service a8c26c
extern int		chrtoi(const char*);
Packit Service a8c26c
extern char*		conformance(const char*, size_t);
Packit Service a8c26c
extern int		eaccess(const char*, int);
Packit Service a8c26c
extern char*		fmtbase(intmax_t, int, int);
Packit Service a8c26c
#define fmtbasell(a,b,c) fmtbase(a,b,c) /* until 2014-01-01 */
Packit Service a8c26c
extern char*		fmtbuf(size_t);
Packit Service a8c26c
extern char*		fmtclock(Sfulong_t);
Packit Service a8c26c
extern char*		fmtelapsed(unsigned long, int);
Packit Service a8c26c
extern char*		fmterror(int);
Packit Service a8c26c
extern char*		fmtesc(const char*);
Packit Service a8c26c
extern char*		fmtesq(const char*, const char*);
Packit Service a8c26c
extern char*		fmtident(const char*);
Packit Service a8c26c
extern char*		fmtip4(uint32_t, int);
Packit Service a8c26c
extern char*		fmtfmt(const char*);
Packit Service a8c26c
extern char*		fmtgid(int);
Packit Service a8c26c
extern char*		fmtint(intmax_t, int);
Packit Service a8c26c
extern char*		fmtmatch(const char*);
Packit Service a8c26c
extern char*		fmtmode(int, int);
Packit Service a8c26c
extern char*		fmtnesq(const char*, const char*, size_t);
Packit Service a8c26c
extern char*		fmtnum(unsigned long, int);
Packit Service a8c26c
extern char*		fmtperm(int);
Packit Service a8c26c
extern char*		fmtquote(const char*, const char*, const char*, size_t, int);
Packit Service a8c26c
extern char*		fmtre(const char*);
Packit Service a8c26c
extern char*		fmtscale(Sfulong_t, int);
Packit Service a8c26c
extern char*		fmtsignal(int);
Packit Service a8c26c
extern char*		fmttime(const char*, time_t);
Packit Service a8c26c
extern char*		fmtuid(int);
Packit Service a8c26c
extern char*		fmtversion(unsigned long);
Packit Service a8c26c
extern void*		memdup(const void*, size_t);
Packit Service a8c26c
extern void		memfatal(void);
Packit Service a8c26c
extern unsigned int	memhash(const void*, int);
Packit Service a8c26c
extern unsigned long	memsum(const void*, int, unsigned long);
Packit Service a8c26c
extern char*		pathaccess(char*, const char*, const char*, const char*, int);
Packit Service a8c26c
extern char*		pathaccess_20100601(const char*, const char*, const char*, int, char*, size_t);
Packit Service a8c26c
extern char*		pathbin(void);
Packit Service a8c26c
extern char*		pathcanon(char*, int);
Packit Service a8c26c
extern char*		pathcanon_20100601(char*, size_t, int);
Packit Service a8c26c
extern char*		pathcat(char*, const char*, int, const char*, const char*);
Packit Service a8c26c
extern char*		pathcat_20100601(const char*, int, const char*, const char*, char*, size_t);
Packit Service a8c26c
extern int		pathcd(const char*, const char*);
Packit Service a8c26c
extern int		pathcheck(const char*, const char*, Pathcheck_t*);
Packit Service a8c26c
extern int		pathexists(char*, int);
Packit Service a8c26c
extern char*		pathfind(const char*, const char*, const char*, char*, size_t);
Packit Service a8c26c
extern int		pathgetlink(const char*, char*, int);
Packit Service a8c26c
extern int		pathinclude(const char*);
Packit Service a8c26c
extern char*		pathkey(char*, char*, const char*, const char*, const char*);
Packit Service a8c26c
extern char*		pathkey_20100601(const char*, const char*, const char*, char*, size_t, char*, size_t);
Packit Service a8c26c
extern size_t		pathnative(const char*, char*, size_t);
Packit Service a8c26c
extern char*		pathpath(char*, const char*, const char*, int);
Packit Service a8c26c
extern char*		pathpath_20100601(const char*, const char*, int, char*, size_t);
Packit Service a8c26c
extern size_t		pathposix(const char*, char*, size_t);
Packit Service a8c26c
extern char*		pathprobe(char*, char*, const char*, const char*, const char*, int);
Packit Service a8c26c
extern char*		pathprobe_20100601(const char*, const char*, const char*, int, char*, size_t, char*, size_t);
Packit Service a8c26c
extern size_t		pathprog(const char*, char*, size_t);
Packit Service a8c26c
extern char*		pathrepl(char*, const char*, const char*);
Packit Service a8c26c
extern char*		pathrepl_20100601(char*, size_t, const char*, const char*);
Packit Service a8c26c
extern int		pathsetlink(const char*, const char*);
Packit Service a8c26c
extern char*		pathshell(void);
Packit Service a8c26c
extern char*		pathtemp(char*, size_t, const char*, const char*, int*);
Packit Service a8c26c
extern char*		pathtmp(char*, const char*, const char*, int*);
Packit Service a8c26c
extern char*		setenviron(const char*);
Packit Service a8c26c
extern int		stracmp(const char*, const char*);
Packit Service a8c26c
extern char*		strcopy(char*, const char*);
Packit Service a8c26c
extern unsigned long	strelapsed(const char*, char**, int);
Packit Service a8c26c
extern int		stresc(char*);
Packit Service a8c26c
extern int		strexp(char*, int);
Packit Service a8c26c
extern long		streval(const char*, char**, long(*)(const char*, char**));
Packit Service a8c26c
extern long		strexpr(const char*, char**, long(*)(const char*, char**, void*), void*);
Packit Service a8c26c
extern int		strgid(const char*);
Packit Service a8c26c
extern int		strgrpmatch(const char*, const char*, int*, int, int);
Packit Service a8c26c
extern int		strgrpmatch_20120528(const char*, const char*, ssize_t*, int, int);
Packit Service a8c26c
extern unsigned int	strhash(const char*);
Packit Service a8c26c
extern void*		strlook(const void*, size_t, const char*);
Packit Service a8c26c
extern int		strmatch(const char*, const char*);
Packit Service a8c26c
extern int		strmode(const char*);
Packit Service a8c26c
extern int		strnacmp(const char*, const char*, size_t);
Packit Service a8c26c
extern char*		strncopy(char*, const char*, size_t);
Packit Service a8c26c
extern int		strnpcmp(const char*, const char*, size_t);
Packit Service a8c26c
extern double		strntod(const char*, size_t, char**);
Packit Service a8c26c
extern _ast_fltmax_t	strntold(const char*, size_t, char**);
Packit Service a8c26c
extern long		strntol(const char*, size_t, char**, int);
Packit Service a8c26c
extern intmax_t		strntoll(const char*, size_t, char**, int);
Packit Service a8c26c
extern long		strnton(const char*, size_t, char**, char*, int);
Packit Service a8c26c
extern unsigned long	strntoul(const char*, size_t, char**, int);
Packit Service a8c26c
extern intmax_t		strntonll(const char*, size_t, char**, char*, int);
Packit Service a8c26c
extern uintmax_t	strntoull(const char*, size_t, char**, int);
Packit Service a8c26c
extern int		strnvcmp(const char*, const char*, size_t);
Packit Service a8c26c
extern int		stropt(const char*, const void*, int, int(*)(void*, const void*, int, const char*), void*);
Packit Service a8c26c
extern int		strpcmp(const char*, const char*);
Packit Service a8c26c
extern int		strperm(const char*, char**, int);
Packit Service a8c26c
extern void*		strpsearch(const void*, size_t, size_t, const char*, char**);
Packit Service a8c26c
extern void*		strsearch(const void*, size_t, size_t, Strcmp_f, const char*, void*);
Packit Service a8c26c
extern void		strsort(char**, int, int(*)(const char*, const char*));
Packit Service a8c26c
extern char*		strsubmatch(const char*, const char*, int);
Packit Service a8c26c
extern unsigned long	strsum(const char*, unsigned long);
Packit Service a8c26c
extern char*		strtape(const char*, char**);
Packit Service a8c26c
extern int		strtoip4(const char*, char**, uint32_t*, unsigned char*);
Packit Service a8c26c
extern long		strton(const char*, char**, char*, int);
Packit Service a8c26c
extern intmax_t		strtonll(const char*, char**, char*, int);
Packit Service a8c26c
extern int		struid(const char*);
Packit Service a8c26c
extern int		struniq(char**, int);
Packit Service a8c26c
extern int		strvcmp(const char*, const char*);
Packit Service a8c26c
extern int		wc2utf8(char*, uint32_t);
Packit Service a8c26c
Packit Service a8c26c
#undef			extern
Packit Service a8c26c
Packit Service a8c26c
/*
Packit Service a8c26c
 * C library global data symbols not prototyped by <unistd.h>
Packit Service a8c26c
 */
Packit Service a8c26c
Packit Service a8c26c
#if !defined(environ) && defined(__DYNAMIC__)
Packit Service a8c26c
#define	environ		__DYNAMIC__(environ)
Packit Service a8c26c
#else
Packit Service a8c26c
extern char**		environ;
Packit Service a8c26c
#endif
Packit Service a8c26c
Packit Service a8c26c
/*
Packit Service a8c26c
 * really handy malloc()/free() (__FILE__,__LINE__,__FUNCTION__) tracing
Packit Service a8c26c
 * make with VMDEBUG==1 or debug=1 or CCFLAGS=$(CC.DEBUG)
Packit Service a8c26c
 * VMDEBUG==0 disables
Packit Service a8c26c
 * at runtime export VMALLOC_OPTIONS per vmalloc.3
Packit Service a8c26c
 * to list originating call locations
Packit Service a8c26c
 */
Packit Service a8c26c
Packit Service a8c26c
#if !_std_malloc && !defined(VMFL) && !defined(_VMHDR_H) && \
Packit Service a8c26c
	(VMDEBUG || !defined(VMDEBUG) && _BLD_DEBUG)
Packit Service a8c26c
Packit Service a8c26c
#define VMFL	1
Packit Service a8c26c
#include <vmalloc.h>
Packit Service a8c26c
Packit Service a8c26c
#endif
Packit Service a8c26c
Packit Service a8c26c
#include <ast_api.h>
Packit Service a8c26c
Packit Service a8c26c
#undef	AST_PLUGIN_VERSION
Packit Service a8c26c
#define AST_PLUGIN_VERSION(v)	((v)>AST_VERSION?(v):AST_VERSION)
Packit Service a8c26c
Packit Service a8c26c
#if defined(__EXPORT__)
Packit Service a8c26c
#define extern		__EXPORT__
Packit Service a8c26c
#endif
Packit Service a8c26c
Packit Service a8c26c
extern unsigned long	plugin_version(void);
Packit Service a8c26c
Packit Service a8c26c
#undef	extern
Packit Service a8c26c
Packit Service a8c26c
#endif