1 /***********************************************************************
2 *                                                                      *
3 *               This software is part of the ast package               *
4 *          Copyright (c) 1982-2012 AT&T Intellectual Property          *
5 *                      and is licensed under the                       *
6 *                 Eclipse Public License, Version 1.0                  *
7 *                    by AT&T Intellectual Property                     *
8 *                                                                      *
9 *                A copy of the License is available at                 *
10 *          http://www.eclipse.org/org/documents/epl-v10.html           *
11 *         (with md5 checksum b35adb5213ca9657e911e9befb180842)         *
12 *                                                                      *
13 *              Information and Software Systems Research               *
14 *                            AT&T Research                             *
15 *                           Florham Park NJ                            *
16 *                                                                      *
17 *                  David Korn <dgk@research.att.com>                   *
18 *                                                                      *
19 ***********************************************************************/
20 #pragma prototyped
21 /*
22  * David Korn
23  * AT&T Labs
24  *
25  * Shell interface private definitions
26  *
27  */
28 
29 #ifndef _REGRESS_H
30 #define _REGRESS_H		1
31 
32 #if SHOPT_REGRESS
33 
34 typedef struct Regress_s
35 {
36 	Shopt_t	options;
37 } Regress_t;
38 
39 #define sh_isregress(r)		is_option(&sh.regress->options,r)
40 #define sh_onregress(r)		on_option(&sh.regress->options,r)
41 #define sh_offregress(r)	off_option(&sh.regress->options,r)
42 
43 #define REGRESS(r,i,f)		do { if (sh_isregress(REGRESS_##r)) sh_regress(REGRESS_##r, i, sfprints f, __LINE__, __FILE__); } while (0)
44 
45 #define REGRESS_egid		1
46 #define REGRESS_euid		2
47 #define REGRESS_p_suid		3
48 #define REGRESS_source		4
49 #define REGRESS_etc		5
50 
51 #undef	SHOPT_P_SUID
52 #define SHOPT_P_SUID		sh_regress_p_suid(__LINE__, __FILE__)
53 
54 extern int			b___regress__(int, char**, Shbltin_t*);
55 extern void			sh_regress_init(Shell_t*);
56 extern void			sh_regress(unsigned int, const char*, const char*, unsigned int, const char*);
57 extern uid_t			sh_regress_p_suid(unsigned int, const char*);
58 extern char*			sh_regress_etc(const char*, unsigned int, const char*);
59 
60 #else
61 
62 #define REGRESS(r,i,f)
63 
64 #endif /* SHOPT_REGRESS */
65 
66 #endif /* _REGRESS_H */
67