utils.h revision 78038a65
1f46a6179Smrg#ifndef UTILS_H
2f46a6179Smrg#define	UTILS_H 1
3f46a6179Smrg
4f46a6179Smrg  /*\
5f46a6179Smrg   *
634345a63Smrg   *                          COPYRIGHT 1990
734345a63Smrg   *                    DIGITAL EQUIPMENT CORPORATION
834345a63Smrg   *                       MAYNARD, MASSACHUSETTS
934345a63Smrg   *                        ALL RIGHTS RESERVED.
10f46a6179Smrg   *
11f46a6179Smrg   * THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND
12f46a6179Smrg   * SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION.
13f46a6179Smrg   * DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE
14f46a6179Smrg   * FOR ANY PURPOSE.  IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED
15f46a6179Smrg   * WARRANTY.
16f46a6179Smrg   *
17f46a6179Smrg   * IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT
18f46a6179Smrg   * RIGHTS, APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN
19f46a6179Smrg   * ADDITION TO THAT SET FORTH ABOVE.
20f46a6179Smrg   *
21f46a6179Smrg   * Permission to use, copy, modify, and distribute this software and its
22f46a6179Smrg   * documentation for any purpose and without fee is hereby granted, provided
23f46a6179Smrg   * that the above copyright notice appear in all copies and that both that
24f46a6179Smrg   * copyright notice and this permission notice appear in supporting
25f46a6179Smrg   * documentation, and that the name of Digital Equipment Corporation not be
26f46a6179Smrg   * used in advertising or publicity pertaining to distribution of the
27f46a6179Smrg   * software without specific, written prior permission.
2834345a63Smrg   \*/
29f46a6179Smrg
30f46a6179Smrg/***====================================================================***/
31f46a6179Smrg
32f46a6179Smrg#include 	<stdio.h>
33f46a6179Smrg#include	<X11/Xos.h>
34f46a6179Smrg#include	<X11/Xfuncproto.h>
35f46a6179Smrg#include	<X11/Xfuncs.h>
36f46a6179Smrg
37f46a6179Smrg#include <stddef.h>
3878038a65Smrg#ifdef HAVE_CONFIG_H
3934345a63Smrg#include "config.h"
4078038a65Smrg#endif
41f46a6179Smrg
42f46a6179Smrg#ifndef NUL
43f46a6179Smrg#define	NUL	'\0'
44f46a6179Smrg#endif
45f46a6179Smrg
46f46a6179Smrg/***====================================================================***/
47f46a6179Smrg
48f46a6179Smrg#ifndef OPAQUE_DEFINED
4934345a63Smrgtypedef void *Opaque;
50f46a6179Smrg#endif
51f46a6179Smrg#ifndef NullOpaque
52f46a6179Smrg#define	NullOpaque	((Opaque)NULL)
53f46a6179Smrg#endif
54f46a6179Smrg
55f46a6179Smrg#ifndef BOOLEAN_DEFINED
5634345a63Smrgtypedef char Boolean;
57f46a6179Smrg#endif
58f46a6179Smrg
59f46a6179Smrg#ifndef True
60f46a6179Smrg#define	True	((Boolean)1)
61f46a6179Smrg#define	False	((Boolean)0)
62f46a6179Smrg#endif /* ndef True */
63f46a6179Smrg#define	booleanText(b)	((b)?"True":"False")
64f46a6179Smrg
65f46a6179Smrg#ifndef COMPARISON_DEFINED
6634345a63Smrgtypedef int Comparison;
67f46a6179Smrg
68f46a6179Smrg#define	Greater		((Comparison)1)
69f46a6179Smrg#define	Equal		((Comparison)0)
70f46a6179Smrg#define	Less		((Comparison)-1)
71f46a6179Smrg#define	CannotCompare	((Comparison)-37)
72f46a6179Smrg#define	comparisonText(c)	((c)?((c)<0?"Less":"Greater"):"Equal")
73f46a6179Smrg#endif
74f46a6179Smrg
75f46a6179Smrg/***====================================================================***/
76f46a6179Smrg
7734345a63Smrgextern Opaque uAlloc(unsigned   /* size */
7834345a63Smrg    );
7934345a63Smrgextern Opaque uCalloc(unsigned /* n */ ,
8034345a63Smrg                      unsigned  /* size */
8134345a63Smrg    );
8234345a63Smrgextern Opaque uRealloc(Opaque /* old */ ,
8334345a63Smrg                       unsigned /* newSize */
8434345a63Smrg    );
8534345a63Smrgextern Opaque uRecalloc(Opaque /* old */ ,
8634345a63Smrg                        unsigned /* nOld */ ,
8734345a63Smrg                        unsigned /* nNew */ ,
8834345a63Smrg                        unsigned        /* newSize */
8934345a63Smrg    );
9034345a63Smrgextern void uFree(Opaque        /* ptr */
9134345a63Smrg    );
92f46a6179Smrg
93f46a6179Smrg#define	uTypedAlloc(t)		((t *)uAlloc((unsigned)sizeof(t)))
94f46a6179Smrg#define	uTypedCalloc(n,t)	((t *)uCalloc((unsigned)n,(unsigned)sizeof(t)))
95f46a6179Smrg#define	uTypedRealloc(pO,n,t)	((t *)uRealloc((Opaque)pO,((unsigned)n)*sizeof(t)))
96f46a6179Smrg#define	uTypedRecalloc(pO,o,n,t) ((t *)uRecalloc((Opaque)pO,((unsigned)o),((unsigned)n),sizeof(t)))
97f46a6179Smrg#if (defined mdHasAlloca) && (mdHasAlloca)
98f46a6179Smrg#define	uTmpAlloc(n)	((Opaque)alloca((unsigned)n))
99f46a6179Smrg#define	uTmpFree(p)
100f46a6179Smrg#else
101f46a6179Smrg#define	uTmpAlloc(n)	uAlloc(n)
102f46a6179Smrg#define	uTmpFree(p)	uFree(p)
103f46a6179Smrg#endif
104f46a6179Smrg
105f46a6179Smrg/***====================================================================***/
106f46a6179Smrg
10734345a63Smrgextern Boolean uSetErrorFile(char *     /* name */
10834345a63Smrg    );
109f46a6179Smrg
110f46a6179Smrg#define INFO6 			uInformation
111f46a6179Smrg#define INFO5 			uInformation
112f46a6179Smrg#define INFO4 			uInformation
113f46a6179Smrg#define INFO3 			uInformation
114f46a6179Smrg#define INFO2 			uInformation
115f46a6179Smrg#define INFO1 			uInformation
116f46a6179Smrg#define INFO 			uInformation
117f46a6179Smrg
11834345a63Smrgextern void
11934345a63SmrguInformation(const char * /* s */ , ...
12034345a63Smrg    )
121f46a6179Smrg#if defined(__GNUC__) && \
122f46a6179Smrg    ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 6)))
12334345a63Smrg    __attribute__ ((format(printf, 1, 2)))
124f46a6179Smrg#endif
12534345a63Smrg    ;
126f46a6179Smrg
127f46a6179Smrg#define ACTION6			uAction
128f46a6179Smrg#define ACTION5			uAction
129f46a6179Smrg#define ACTION4			uAction
130f46a6179Smrg#define ACTION3			uAction
131f46a6179Smrg#define ACTION2			uAction
132f46a6179Smrg#define ACTION1			uAction
133f46a6179Smrg#define ACTION			uAction
134f46a6179Smrg
13534345a63Smrg     extern void uAction(const char * /* s  */ , ...
13634345a63Smrg    )
137f46a6179Smrg#if defined(__GNUC__) && \
138f46a6179Smrg    ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 6)))
13934345a63Smrg    __attribute__ ((format(printf, 1, 2)))
140f46a6179Smrg#endif
14134345a63Smrg    ;
142f46a6179Smrg
143f46a6179Smrg#define WARN6			uWarning
144f46a6179Smrg#define WARN5			uWarning
145f46a6179Smrg#define WARN4			uWarning
146f46a6179Smrg#define WARN3			uWarning
147f46a6179Smrg#define WARN2			uWarning
148f46a6179Smrg#define WARN1			uWarning
149f46a6179Smrg#define WARN			uWarning
150f46a6179Smrg
15134345a63Smrg     extern void uWarning(const char * /* s  */ , ...
15234345a63Smrg    )
153f46a6179Smrg#if defined(__GNUC__) && \
154f46a6179Smrg    ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 6)))
15534345a63Smrg    __attribute__ ((format(printf, 1, 2)))
156f46a6179Smrg#endif
15734345a63Smrg    ;
158f46a6179Smrg
159f46a6179Smrg#define ERROR6			uError
160f46a6179Smrg#define ERROR5			uError
161f46a6179Smrg#define ERROR4			uError
162f46a6179Smrg#define ERROR3			uError
163f46a6179Smrg#define ERROR2			uError
164f46a6179Smrg#define ERROR1			uError
165f46a6179Smrg#define ERROR			uError
166f46a6179Smrg
16734345a63Smrg     extern void uError(const char * /* s  */ , ...
16834345a63Smrg    )
169f46a6179Smrg#if defined(__GNUC__) && \
170f46a6179Smrg    ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 6)))
17134345a63Smrg    __attribute__ ((format(printf, 1, 2)))
172f46a6179Smrg#endif
17334345a63Smrg    ;
174f46a6179Smrg
175f46a6179Smrg#define FATAL6			uFatalError
176f46a6179Smrg#define FATAL5			uFatalError
177f46a6179Smrg#define FATAL4			uFatalError
178f46a6179Smrg#define FATAL3			uFatalError
179f46a6179Smrg#define FATAL2			uFatalError
180f46a6179Smrg#define FATAL1			uFatalError
181f46a6179Smrg#define FATAL			uFatalError
182f46a6179Smrg
18334345a63Smrg     extern void uFatalError(const char * /* s  */ , ...
18434345a63Smrg    )
185f46a6179Smrg#if defined(__GNUC__) && \
186f46a6179Smrg    ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 6)))
18734345a63Smrg    __attribute__ ((format(printf, 1, 2)))
188f46a6179Smrg#endif
18934345a63Smrg    ;
190f46a6179Smrg
191f46a6179Smrg/* WSGO stands for "Weird Stuff Going On" */
192f46a6179Smrg#define WSGO6			uInternalError
193f46a6179Smrg#define WSGO5			uInternalError
194f46a6179Smrg#define WSGO4			uInternalError
195f46a6179Smrg#define WSGO3			uInternalError
196f46a6179Smrg#define WSGO2			uInternalError
197f46a6179Smrg#define WSGO1			uInternalError
198f46a6179Smrg#define WSGO			uInternalError
199f46a6179Smrg
20034345a63Smrg     extern void uInternalError(const char * /* s  */ , ...
20134345a63Smrg    )
202f46a6179Smrg#if defined(__GNUC__) && \
203f46a6179Smrg    ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 6)))
20434345a63Smrg    __attribute__ ((format(printf, 1, 2)))
205f46a6179Smrg#endif
20634345a63Smrg    ;
207f46a6179Smrg
20834345a63Smrg     extern void uSetPreErrorMessage(char *     /* msg */
20934345a63Smrg    );
210f46a6179Smrg
21134345a63Smrg     extern void uSetPostErrorMessage(char *    /* msg */
21234345a63Smrg    );
213f46a6179Smrg
21434345a63Smrg     extern void uSetErrorPrefix(char * /* void */
21534345a63Smrg    );
216f46a6179Smrg
21734345a63Smrg     extern void uFinishUp(void);
218f46a6179Smrg
219f46a6179Smrg
220f46a6179Smrg/***====================================================================***/
221f46a6179Smrg
222f46a6179Smrg#define	NullString	((char *)NULL)
223f46a6179Smrg
224f46a6179Smrg#define	uStringText(s)		((s)==NullString?"<NullString>":(s))
225f46a6179Smrg#define	uStringEqual(s1,s2)	(uStringCompare(s1,s2)==Equal)
226f46a6179Smrg#define	uStringPrefix(p,s)	(strncmp(p,s,strlen(p))==0)
227f46a6179Smrg#define	uStringCompare(s1,s2)	(((s1)==NullString||(s2)==NullString)?\
228f46a6179Smrg                                 (s1)!=(s2):strcmp(s1,s2))
229f46a6179Smrg#define	uStrCaseEqual(s1,s2)	(uStrCaseCmp(s1,s2)==0)
230f46a6179Smrg#ifdef HAVE_STRCASECMP
231f46a6179Smrg#define	uStrCaseCmp(s1,s2)	(strcasecmp(s1,s2))
232f46a6179Smrg#define	uStrCasePrefix(p,s)	(strncasecmp(p,s,strlen(p))==0)
233f46a6179Smrg#else
23434345a63Smrg     extern int uStrCaseCmp(const char * /* s1 */ ,
23534345a63Smrg                            const char *        /* s2 */
23634345a63Smrg    );
23734345a63Smrg     extern int uStrCasePrefix(const char * /* p */ ,
23834345a63Smrg                               char *   /* str */
23934345a63Smrg    );
240f46a6179Smrg#endif
241f46a6179Smrg#ifdef HAVE_STRDUP
24234345a63Smrg#define	uStringDup(s1)		((s1) ? strdup(s1) : NULL)
243f46a6179Smrg#else
24434345a63Smrg     extern char *uStringDup(const char *       /* s1 */
24534345a63Smrg    );
246f46a6179Smrg#endif
247f46a6179Smrg
248f46a6179Smrg/***====================================================================***/
249f46a6179Smrg
250f46a6179Smrg#ifdef	ASSERTIONS_ON
251f46a6179Smrg#define	uASSERT(where,why) \
252f46a6179Smrg	{if (!(why)) uFatalError("assertion botched in %s ( why )\n",where);}
253f46a6179Smrg#else
254f46a6179Smrg#define	uASSERT(where,why)
255f46a6179Smrg#endif
256f46a6179Smrg
257f46a6179Smrg/***====================================================================***/
258f46a6179Smrg
259f46a6179Smrg#ifndef DEBUG_VAR
260f46a6179Smrg#define	DEBUG_VAR	debugFlags
261f46a6179Smrg#endif
262f46a6179Smrg
263f46a6179Smrgextern
26434345a63Smrg     unsigned int DEBUG_VAR;
265f46a6179Smrg
26634345a63Smrg     extern void uDebug(char * /* s  */ , ...
26734345a63Smrg    )
268f46a6179Smrg#if defined(__GNUC__) && \
269f46a6179Smrg    ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 6)))
27034345a63Smrg    __attribute__ ((format(printf, 1, 2)))
271f46a6179Smrg#endif
27234345a63Smrg    ;
273f46a6179Smrg
27434345a63Smrg     extern void uDebugNOI(     /* no indent */
27534345a63Smrg                              char * /* s  */ , ...
27634345a63Smrg    )
277f46a6179Smrg#if defined(__GNUC__) && \
278f46a6179Smrg    ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 6)))
27934345a63Smrg    __attribute__ ((format(printf, 1, 2)))
280f46a6179Smrg#endif
28134345a63Smrg    ;
282f46a6179Smrg
28334345a63Smrg     extern Boolean uSetDebugFile(char *name);
284f46a6179Smrg
28534345a63Smrg     extern FILE *uDebugFile;
28634345a63Smrg     extern int uDebugIndentLevel;
28734345a63Smrg     extern int uDebugIndentSize;
288f46a6179Smrg#define	uDebugIndent(l)		(uDebugIndentLevel+=(l))
289f46a6179Smrg#define	uDebugOutdent(l)	(uDebugIndentLevel-=(l))
290f46a6179Smrg#ifdef DEBUG_ON
291f46a6179Smrg#define	uDEBUG(f,s)		{ if (DEBUG_VAR&(f)) uDebug(s);}
292f46a6179Smrg#define	uDEBUG1(f,s,a)		{ if (DEBUG_VAR&(f)) uDebug(s,a);}
293f46a6179Smrg#define	uDEBUG2(f,s,a,b)	{ if (DEBUG_VAR&(f)) uDebug(s,a,b);}
294f46a6179Smrg#define	uDEBUG3(f,s,a,b,c)	{ if (DEBUG_VAR&(f)) uDebug(s,a,b,c);}
295f46a6179Smrg#define	uDEBUG4(f,s,a,b,c,d)	{ if (DEBUG_VAR&(f)) uDebug(s,a,b,c,d);}
296f46a6179Smrg#define	uDEBUG5(f,s,a,b,c,d,e)	{ if (DEBUG_VAR&(f)) uDebug(s,a,b,c,d,e);}
297f46a6179Smrg#define	uDEBUG_NOI(f,s)		{ if (DEBUG_VAR&(f)) uDebug(s);}
298f46a6179Smrg#define	uDEBUG_NOI1(f,s,a)	{ if (DEBUG_VAR&(f)) uDebugNOI(s,a);}
299f46a6179Smrg#define	uDEBUG_NOI2(f,s,a,b)	{ if (DEBUG_VAR&(f)) uDebugNOI(s,a,b);}
300f46a6179Smrg#define	uDEBUG_NOI3(f,s,a,b,c)	{ if (DEBUG_VAR&(f)) uDebugNOI(s,a,b,c);}
301f46a6179Smrg#define	uDEBUG_NOI4(f,s,a,b,c,d) { if (DEBUG_VAR&(f)) uDebugNOI(s,a,b,c,d);}
302f46a6179Smrg#define	uDEBUG_NOI5(f,s,a,b,c,d,e) { if (DEBUG_VAR&(f)) uDebugNOI(s,a,b,c,d,e);}
303f46a6179Smrg#else
304f46a6179Smrg#define	uDEBUG(f,s)
305f46a6179Smrg#define	uDEBUG1(f,s,a)
306f46a6179Smrg#define	uDEBUG2(f,s,a,b)
307f46a6179Smrg#define	uDEBUG3(f,s,a,b,c)
308f46a6179Smrg#define	uDEBUG4(f,s,a,b,c,d)
309f46a6179Smrg#define	uDEBUG5(f,s,a,b,c,d,e)
310f46a6179Smrg#define	uDEBUG_NOI(f,s)
311f46a6179Smrg#define	uDEBUG_NOI1(f,s,a)
312f46a6179Smrg#define	uDEBUG_NOI2(f,s,a,b)
313f46a6179Smrg#define	uDEBUG_NOI3(f,s,a,b,c)
314f46a6179Smrg#define	uDEBUG_NOI4(f,s,a,b,c,d)
315f46a6179Smrg#define	uDEBUG_NOI5(f,s,a,b,c,d,e)
316f46a6179Smrg#endif
317f46a6179Smrg
31834345a63Smrg     extern Boolean uSetEntryFile(char *name);
31934345a63Smrg     extern void uEntry(int /* l */ ,
32034345a63Smrg                        char * /* s  */ , ...
32134345a63Smrg    )
322f46a6179Smrg#if defined(__GNUC__) && \
323f46a6179Smrg    ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 6)))
32434345a63Smrg    __attribute__ ((format(printf, 2, 3)))
325f46a6179Smrg#endif
32634345a63Smrg    ;
327f46a6179Smrg
32834345a63Smrg     extern void uExit(int l, char *rtVal);
329f46a6179Smrg#ifdef ENTRY_TRACKING_ON
330f46a6179Smrg#define	ENTRY_BIT	0x10
331f46a6179Smrg#define	LOW_ENTRY_BIT	0x1000
332f46a6179Smrg#define	ENTER	(DEBUG_VAR&ENTRY_BIT)
333f46a6179Smrg#define	FLAG(fLag)	(DEBUG_VAR&(fLag))
334f46a6179Smrg
33534345a63Smrg     extern int uEntryLevel;
336f46a6179Smrg
337f46a6179Smrg#define	uENTRY(s)			{ if (ENTER) uEntry(1,s);}
338f46a6179Smrg#define	uENTRY1(s,a)			{ if (ENTER) uEntry(1,s,a);}
339f46a6179Smrg#define	uENTRY2(s,a,b)			{ if (ENTER) uEntry(1,s,a,b);}
340f46a6179Smrg#define	uENTRY3(s,a,b,c)		{ if (ENTER) uEntry(1,s,a,b,c);}
341f46a6179Smrg#define	uENTRY4(s,a,b,c,d)		{ if (ENTER) uEntry(1,s,a,b,c,d);}
342f46a6179Smrg#define	uENTRY5(s,a,b,c,d,e)		{ if (ENTER) uEntry(1,s,a,b,c,d,e);}
343f46a6179Smrg#define	uENTRY6(s,a,b,c,d,e,f)		{ if (ENTER) uEntry(1,s,a,b,c,d,e,f);}
344f46a6179Smrg#define	uENTRY7(s,a,b,c,d,e,f,g)	{ if (ENTER) uEntry(1,s,a,b,c,d,e,f,g);}
345f46a6179Smrg#define	uRETURN(v)			{ if (ENTER) uEntryLevel--; return(v); }
346f46a6179Smrg#define	uVOIDRETURN			{ if (ENTER) uEntryLevel--; return; }
347f46a6179Smrg
348f46a6179Smrg#define	uFLAG_ENTRY(w,s)		{ if (FLAG(w)) uEntry(0,s);}
349f46a6179Smrg#define	uFLAG_ENTRY1(w,s,a)		{ if (FLAG(w)) uEntry(0,s,a);}
350f46a6179Smrg#define	uFLAG_ENTRY2(w,s,a,b)		{ if (FLAG(w)) uEntry(0,s,a,b);}
351f46a6179Smrg#define	uFLAG_ENTRY3(w,s,a,b,c)		{ if (FLAG(w)) uEntry(0,s,a,b,c);}
352f46a6179Smrg#define	uFLAG_ENTRY4(w,s,a,b,c,d)	{ if (FLAG(w)) uEntry(0,s,a,b,c,d);}
353f46a6179Smrg#define	uFLAG_ENTRY5(w,s,a,b,c,d,e)	{ if (FLAG(w)) uEntry(0,s,a,b,c,d,e);}
354f46a6179Smrg#define	uFLAG_ENTRY6(w,s,a,b,c,d,e,f)	{ if (FLAG(w)) uEntry(0,s,a,b,c,d,e,f);}
355f46a6179Smrg#define	uFLAG_ENTRY7(w,s,a,b,c,d,e,f,g)	{ if(FLAG(w))uEntry(0,s,a,b,c,d,e,f,g);}
356f46a6179Smrg#define	uFLAG_RETURN(v)			{ return(v);}
357f46a6179Smrg#define	uFLAG_VOIDRETURN		{ return; }
358f46a6179Smrg#else
359f46a6179Smrg#define	uENTRY(s)
360f46a6179Smrg#define	uENTRY1(s,a)
361f46a6179Smrg#define	uENTRY2(s,a1,a2)
362f46a6179Smrg#define	uENTRY3(s,a1,a2,a3)
363f46a6179Smrg#define	uENTRY4(s,a1,a2,a3,a4)
364f46a6179Smrg#define	uENTRY5(s,a1,a2,a3,a4,a5)
365f46a6179Smrg#define	uENTRY6(s,a1,a2,a3,a4,a5,a6)
366f46a6179Smrg#define	uENTRY7(s,a1,a2,a3,a4,a5,a6,a7)
367f46a6179Smrg#define	uRETURN(v)	{ return(v); }
368f46a6179Smrg#define	uVOIDRETURN	{ return; }
369f46a6179Smrg
370f46a6179Smrg#define	uFLAG_ENTRY(f,s)
371f46a6179Smrg#define	uFLAG_ENTRY1(f,s,a)
372f46a6179Smrg#define	uFLAG_ENTRY2(f,s,a,b)
373f46a6179Smrg#define	uFLAG_ENTRY3(f,s,a,b,c)
374f46a6179Smrg#define	uFLAG_ENTRY4(f,s,a,b,c,d)
375f46a6179Smrg#define	uFLAG_ENTRY5(f,s,a,b,c,d,e)
376f46a6179Smrg#define	uFLAG_ENTRY6(f,s,a,b,c,d,e,g)
377f46a6179Smrg#define	uFLAG_ENTRY7(f,s,a,b,c,d,e,g,h)
378f46a6179Smrg#define	uFLAG_RETURN(v)			{ return(v);}
379f46a6179Smrg#define	uFLAG_VOIDRETURN		{ return; }
38034345a63Smrg#endif
381f46a6179Smrg
382f46a6179Smrg
383f46a6179Smrg#endif /* UTILS_H */
384