utils.h revision 34345a63
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>
3834345a63Smrg#include "config.h"
39f46a6179Smrg
40f46a6179Smrg#ifndef NUL
41f46a6179Smrg#define	NUL	'\0'
42f46a6179Smrg#endif
43f46a6179Smrg
44f46a6179Smrg/***====================================================================***/
45f46a6179Smrg
46f46a6179Smrg#ifndef OPAQUE_DEFINED
4734345a63Smrgtypedef void *Opaque;
48f46a6179Smrg#endif
49f46a6179Smrg#ifndef NullOpaque
50f46a6179Smrg#define	NullOpaque	((Opaque)NULL)
51f46a6179Smrg#endif
52f46a6179Smrg
53f46a6179Smrg#ifndef BOOLEAN_DEFINED
5434345a63Smrgtypedef char Boolean;
55f46a6179Smrg#endif
56f46a6179Smrg
57f46a6179Smrg#ifndef True
58f46a6179Smrg#define	True	((Boolean)1)
59f46a6179Smrg#define	False	((Boolean)0)
60f46a6179Smrg#endif /* ndef True */
61f46a6179Smrg#define	booleanText(b)	((b)?"True":"False")
62f46a6179Smrg
63f46a6179Smrg#ifndef COMPARISON_DEFINED
6434345a63Smrgtypedef int Comparison;
65f46a6179Smrg
66f46a6179Smrg#define	Greater		((Comparison)1)
67f46a6179Smrg#define	Equal		((Comparison)0)
68f46a6179Smrg#define	Less		((Comparison)-1)
69f46a6179Smrg#define	CannotCompare	((Comparison)-37)
70f46a6179Smrg#define	comparisonText(c)	((c)?((c)<0?"Less":"Greater"):"Equal")
71f46a6179Smrg#endif
72f46a6179Smrg
73f46a6179Smrg/***====================================================================***/
74f46a6179Smrg
7534345a63Smrgextern Opaque uAlloc(unsigned   /* size */
7634345a63Smrg    );
7734345a63Smrgextern Opaque uCalloc(unsigned /* n */ ,
7834345a63Smrg                      unsigned  /* size */
7934345a63Smrg    );
8034345a63Smrgextern Opaque uRealloc(Opaque /* old */ ,
8134345a63Smrg                       unsigned /* newSize */
8234345a63Smrg    );
8334345a63Smrgextern Opaque uRecalloc(Opaque /* old */ ,
8434345a63Smrg                        unsigned /* nOld */ ,
8534345a63Smrg                        unsigned /* nNew */ ,
8634345a63Smrg                        unsigned        /* newSize */
8734345a63Smrg    );
8834345a63Smrgextern void uFree(Opaque        /* ptr */
8934345a63Smrg    );
90f46a6179Smrg
91f46a6179Smrg#define	uTypedAlloc(t)		((t *)uAlloc((unsigned)sizeof(t)))
92f46a6179Smrg#define	uTypedCalloc(n,t)	((t *)uCalloc((unsigned)n,(unsigned)sizeof(t)))
93f46a6179Smrg#define	uTypedRealloc(pO,n,t)	((t *)uRealloc((Opaque)pO,((unsigned)n)*sizeof(t)))
94f46a6179Smrg#define	uTypedRecalloc(pO,o,n,t) ((t *)uRecalloc((Opaque)pO,((unsigned)o),((unsigned)n),sizeof(t)))
95f46a6179Smrg#if (defined mdHasAlloca) && (mdHasAlloca)
96f46a6179Smrg#define	uTmpAlloc(n)	((Opaque)alloca((unsigned)n))
97f46a6179Smrg#define	uTmpFree(p)
98f46a6179Smrg#else
99f46a6179Smrg#define	uTmpAlloc(n)	uAlloc(n)
100f46a6179Smrg#define	uTmpFree(p)	uFree(p)
101f46a6179Smrg#endif
102f46a6179Smrg
103f46a6179Smrg/***====================================================================***/
104f46a6179Smrg
10534345a63Smrgextern Boolean uSetErrorFile(char *     /* name */
10634345a63Smrg    );
107f46a6179Smrg
108f46a6179Smrg#define INFO6 			uInformation
109f46a6179Smrg#define INFO5 			uInformation
110f46a6179Smrg#define INFO4 			uInformation
111f46a6179Smrg#define INFO3 			uInformation
112f46a6179Smrg#define INFO2 			uInformation
113f46a6179Smrg#define INFO1 			uInformation
114f46a6179Smrg#define INFO 			uInformation
115f46a6179Smrg
11634345a63Smrgextern void
11734345a63SmrguInformation(const char * /* s */ , ...
11834345a63Smrg    )
119f46a6179Smrg#if defined(__GNUC__) && \
120f46a6179Smrg    ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 6)))
12134345a63Smrg    __attribute__ ((format(printf, 1, 2)))
122f46a6179Smrg#endif
12334345a63Smrg    ;
124f46a6179Smrg
125f46a6179Smrg#define ACTION6			uAction
126f46a6179Smrg#define ACTION5			uAction
127f46a6179Smrg#define ACTION4			uAction
128f46a6179Smrg#define ACTION3			uAction
129f46a6179Smrg#define ACTION2			uAction
130f46a6179Smrg#define ACTION1			uAction
131f46a6179Smrg#define ACTION			uAction
132f46a6179Smrg
13334345a63Smrg     extern void uAction(const char * /* s  */ , ...
13434345a63Smrg    )
135f46a6179Smrg#if defined(__GNUC__) && \
136f46a6179Smrg    ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 6)))
13734345a63Smrg    __attribute__ ((format(printf, 1, 2)))
138f46a6179Smrg#endif
13934345a63Smrg    ;
140f46a6179Smrg
141f46a6179Smrg#define WARN6			uWarning
142f46a6179Smrg#define WARN5			uWarning
143f46a6179Smrg#define WARN4			uWarning
144f46a6179Smrg#define WARN3			uWarning
145f46a6179Smrg#define WARN2			uWarning
146f46a6179Smrg#define WARN1			uWarning
147f46a6179Smrg#define WARN			uWarning
148f46a6179Smrg
14934345a63Smrg     extern void uWarning(const char * /* s  */ , ...
15034345a63Smrg    )
151f46a6179Smrg#if defined(__GNUC__) && \
152f46a6179Smrg    ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 6)))
15334345a63Smrg    __attribute__ ((format(printf, 1, 2)))
154f46a6179Smrg#endif
15534345a63Smrg    ;
156f46a6179Smrg
157f46a6179Smrg#define ERROR6			uError
158f46a6179Smrg#define ERROR5			uError
159f46a6179Smrg#define ERROR4			uError
160f46a6179Smrg#define ERROR3			uError
161f46a6179Smrg#define ERROR2			uError
162f46a6179Smrg#define ERROR1			uError
163f46a6179Smrg#define ERROR			uError
164f46a6179Smrg
16534345a63Smrg     extern void uError(const char * /* s  */ , ...
16634345a63Smrg    )
167f46a6179Smrg#if defined(__GNUC__) && \
168f46a6179Smrg    ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 6)))
16934345a63Smrg    __attribute__ ((format(printf, 1, 2)))
170f46a6179Smrg#endif
17134345a63Smrg    ;
172f46a6179Smrg
173f46a6179Smrg#define FATAL6			uFatalError
174f46a6179Smrg#define FATAL5			uFatalError
175f46a6179Smrg#define FATAL4			uFatalError
176f46a6179Smrg#define FATAL3			uFatalError
177f46a6179Smrg#define FATAL2			uFatalError
178f46a6179Smrg#define FATAL1			uFatalError
179f46a6179Smrg#define FATAL			uFatalError
180f46a6179Smrg
18134345a63Smrg     extern void uFatalError(const char * /* s  */ , ...
18234345a63Smrg    )
183f46a6179Smrg#if defined(__GNUC__) && \
184f46a6179Smrg    ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 6)))
18534345a63Smrg    __attribute__ ((format(printf, 1, 2)))
186f46a6179Smrg#endif
18734345a63Smrg    ;
188f46a6179Smrg
189f46a6179Smrg/* WSGO stands for "Weird Stuff Going On" */
190f46a6179Smrg#define WSGO6			uInternalError
191f46a6179Smrg#define WSGO5			uInternalError
192f46a6179Smrg#define WSGO4			uInternalError
193f46a6179Smrg#define WSGO3			uInternalError
194f46a6179Smrg#define WSGO2			uInternalError
195f46a6179Smrg#define WSGO1			uInternalError
196f46a6179Smrg#define WSGO			uInternalError
197f46a6179Smrg
19834345a63Smrg     extern void uInternalError(const char * /* s  */ , ...
19934345a63Smrg    )
200f46a6179Smrg#if defined(__GNUC__) && \
201f46a6179Smrg    ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 6)))
20234345a63Smrg    __attribute__ ((format(printf, 1, 2)))
203f46a6179Smrg#endif
20434345a63Smrg    ;
205f46a6179Smrg
20634345a63Smrg     extern void uSetPreErrorMessage(char *     /* msg */
20734345a63Smrg    );
208f46a6179Smrg
20934345a63Smrg     extern void uSetPostErrorMessage(char *    /* msg */
21034345a63Smrg    );
211f46a6179Smrg
21234345a63Smrg     extern void uSetErrorPrefix(char * /* void */
21334345a63Smrg    );
214f46a6179Smrg
21534345a63Smrg     extern void uFinishUp(void);
216f46a6179Smrg
217f46a6179Smrg
218f46a6179Smrg/***====================================================================***/
219f46a6179Smrg
220f46a6179Smrg#define	NullString	((char *)NULL)
221f46a6179Smrg
222f46a6179Smrg#define	uStringText(s)		((s)==NullString?"<NullString>":(s))
223f46a6179Smrg#define	uStringEqual(s1,s2)	(uStringCompare(s1,s2)==Equal)
224f46a6179Smrg#define	uStringPrefix(p,s)	(strncmp(p,s,strlen(p))==0)
225f46a6179Smrg#define	uStringCompare(s1,s2)	(((s1)==NullString||(s2)==NullString)?\
226f46a6179Smrg                                 (s1)!=(s2):strcmp(s1,s2))
227f46a6179Smrg#define	uStrCaseEqual(s1,s2)	(uStrCaseCmp(s1,s2)==0)
228f46a6179Smrg#ifdef HAVE_STRCASECMP
229f46a6179Smrg#define	uStrCaseCmp(s1,s2)	(strcasecmp(s1,s2))
230f46a6179Smrg#define	uStrCasePrefix(p,s)	(strncasecmp(p,s,strlen(p))==0)
231f46a6179Smrg#else
23234345a63Smrg     extern int uStrCaseCmp(const char * /* s1 */ ,
23334345a63Smrg                            const char *        /* s2 */
23434345a63Smrg    );
23534345a63Smrg     extern int uStrCasePrefix(const char * /* p */ ,
23634345a63Smrg                               char *   /* str */
23734345a63Smrg    );
238f46a6179Smrg#endif
239f46a6179Smrg#ifdef HAVE_STRDUP
24034345a63Smrg#define	uStringDup(s1)		((s1) ? strdup(s1) : NULL)
241f46a6179Smrg#else
24234345a63Smrg     extern char *uStringDup(const char *       /* s1 */
24334345a63Smrg    );
244f46a6179Smrg#endif
245f46a6179Smrg
246f46a6179Smrg/***====================================================================***/
247f46a6179Smrg
248f46a6179Smrg#ifdef	ASSERTIONS_ON
249f46a6179Smrg#define	uASSERT(where,why) \
250f46a6179Smrg	{if (!(why)) uFatalError("assertion botched in %s ( why )\n",where);}
251f46a6179Smrg#else
252f46a6179Smrg#define	uASSERT(where,why)
253f46a6179Smrg#endif
254f46a6179Smrg
255f46a6179Smrg/***====================================================================***/
256f46a6179Smrg
257f46a6179Smrg#ifndef DEBUG_VAR
258f46a6179Smrg#define	DEBUG_VAR	debugFlags
259f46a6179Smrg#endif
260f46a6179Smrg
261f46a6179Smrgextern
26234345a63Smrg     unsigned int DEBUG_VAR;
263f46a6179Smrg
26434345a63Smrg     extern void uDebug(char * /* s  */ , ...
26534345a63Smrg    )
266f46a6179Smrg#if defined(__GNUC__) && \
267f46a6179Smrg    ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 6)))
26834345a63Smrg    __attribute__ ((format(printf, 1, 2)))
269f46a6179Smrg#endif
27034345a63Smrg    ;
271f46a6179Smrg
27234345a63Smrg     extern void uDebugNOI(     /* no indent */
27334345a63Smrg                              char * /* s  */ , ...
27434345a63Smrg    )
275f46a6179Smrg#if defined(__GNUC__) && \
276f46a6179Smrg    ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 6)))
27734345a63Smrg    __attribute__ ((format(printf, 1, 2)))
278f46a6179Smrg#endif
27934345a63Smrg    ;
280f46a6179Smrg
28134345a63Smrg     extern Boolean uSetDebugFile(char *name);
282f46a6179Smrg
28334345a63Smrg     extern FILE *uDebugFile;
28434345a63Smrg     extern int uDebugIndentLevel;
28534345a63Smrg     extern int uDebugIndentSize;
286f46a6179Smrg#define	uDebugIndent(l)		(uDebugIndentLevel+=(l))
287f46a6179Smrg#define	uDebugOutdent(l)	(uDebugIndentLevel-=(l))
288f46a6179Smrg#ifdef DEBUG_ON
289f46a6179Smrg#define	uDEBUG(f,s)		{ if (DEBUG_VAR&(f)) uDebug(s);}
290f46a6179Smrg#define	uDEBUG1(f,s,a)		{ if (DEBUG_VAR&(f)) uDebug(s,a);}
291f46a6179Smrg#define	uDEBUG2(f,s,a,b)	{ if (DEBUG_VAR&(f)) uDebug(s,a,b);}
292f46a6179Smrg#define	uDEBUG3(f,s,a,b,c)	{ if (DEBUG_VAR&(f)) uDebug(s,a,b,c);}
293f46a6179Smrg#define	uDEBUG4(f,s,a,b,c,d)	{ if (DEBUG_VAR&(f)) uDebug(s,a,b,c,d);}
294f46a6179Smrg#define	uDEBUG5(f,s,a,b,c,d,e)	{ if (DEBUG_VAR&(f)) uDebug(s,a,b,c,d,e);}
295f46a6179Smrg#define	uDEBUG_NOI(f,s)		{ if (DEBUG_VAR&(f)) uDebug(s);}
296f46a6179Smrg#define	uDEBUG_NOI1(f,s,a)	{ if (DEBUG_VAR&(f)) uDebugNOI(s,a);}
297f46a6179Smrg#define	uDEBUG_NOI2(f,s,a,b)	{ if (DEBUG_VAR&(f)) uDebugNOI(s,a,b);}
298f46a6179Smrg#define	uDEBUG_NOI3(f,s,a,b,c)	{ if (DEBUG_VAR&(f)) uDebugNOI(s,a,b,c);}
299f46a6179Smrg#define	uDEBUG_NOI4(f,s,a,b,c,d) { if (DEBUG_VAR&(f)) uDebugNOI(s,a,b,c,d);}
300f46a6179Smrg#define	uDEBUG_NOI5(f,s,a,b,c,d,e) { if (DEBUG_VAR&(f)) uDebugNOI(s,a,b,c,d,e);}
301f46a6179Smrg#else
302f46a6179Smrg#define	uDEBUG(f,s)
303f46a6179Smrg#define	uDEBUG1(f,s,a)
304f46a6179Smrg#define	uDEBUG2(f,s,a,b)
305f46a6179Smrg#define	uDEBUG3(f,s,a,b,c)
306f46a6179Smrg#define	uDEBUG4(f,s,a,b,c,d)
307f46a6179Smrg#define	uDEBUG5(f,s,a,b,c,d,e)
308f46a6179Smrg#define	uDEBUG_NOI(f,s)
309f46a6179Smrg#define	uDEBUG_NOI1(f,s,a)
310f46a6179Smrg#define	uDEBUG_NOI2(f,s,a,b)
311f46a6179Smrg#define	uDEBUG_NOI3(f,s,a,b,c)
312f46a6179Smrg#define	uDEBUG_NOI4(f,s,a,b,c,d)
313f46a6179Smrg#define	uDEBUG_NOI5(f,s,a,b,c,d,e)
314f46a6179Smrg#endif
315f46a6179Smrg
31634345a63Smrg     extern Boolean uSetEntryFile(char *name);
31734345a63Smrg     extern void uEntry(int /* l */ ,
31834345a63Smrg                        char * /* s  */ , ...
31934345a63Smrg    )
320f46a6179Smrg#if defined(__GNUC__) && \
321f46a6179Smrg    ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 6)))
32234345a63Smrg    __attribute__ ((format(printf, 2, 3)))
323f46a6179Smrg#endif
32434345a63Smrg    ;
325f46a6179Smrg
32634345a63Smrg     extern void uExit(int l, char *rtVal);
327f46a6179Smrg#ifdef ENTRY_TRACKING_ON
328f46a6179Smrg#define	ENTRY_BIT	0x10
329f46a6179Smrg#define	LOW_ENTRY_BIT	0x1000
330f46a6179Smrg#define	ENTER	(DEBUG_VAR&ENTRY_BIT)
331f46a6179Smrg#define	FLAG(fLag)	(DEBUG_VAR&(fLag))
332f46a6179Smrg
33334345a63Smrg     extern int uEntryLevel;
334f46a6179Smrg
335f46a6179Smrg#define	uENTRY(s)			{ if (ENTER) uEntry(1,s);}
336f46a6179Smrg#define	uENTRY1(s,a)			{ if (ENTER) uEntry(1,s,a);}
337f46a6179Smrg#define	uENTRY2(s,a,b)			{ if (ENTER) uEntry(1,s,a,b);}
338f46a6179Smrg#define	uENTRY3(s,a,b,c)		{ if (ENTER) uEntry(1,s,a,b,c);}
339f46a6179Smrg#define	uENTRY4(s,a,b,c,d)		{ if (ENTER) uEntry(1,s,a,b,c,d);}
340f46a6179Smrg#define	uENTRY5(s,a,b,c,d,e)		{ if (ENTER) uEntry(1,s,a,b,c,d,e);}
341f46a6179Smrg#define	uENTRY6(s,a,b,c,d,e,f)		{ if (ENTER) uEntry(1,s,a,b,c,d,e,f);}
342f46a6179Smrg#define	uENTRY7(s,a,b,c,d,e,f,g)	{ if (ENTER) uEntry(1,s,a,b,c,d,e,f,g);}
343f46a6179Smrg#define	uRETURN(v)			{ if (ENTER) uEntryLevel--; return(v); }
344f46a6179Smrg#define	uVOIDRETURN			{ if (ENTER) uEntryLevel--; return; }
345f46a6179Smrg
346f46a6179Smrg#define	uFLAG_ENTRY(w,s)		{ if (FLAG(w)) uEntry(0,s);}
347f46a6179Smrg#define	uFLAG_ENTRY1(w,s,a)		{ if (FLAG(w)) uEntry(0,s,a);}
348f46a6179Smrg#define	uFLAG_ENTRY2(w,s,a,b)		{ if (FLAG(w)) uEntry(0,s,a,b);}
349f46a6179Smrg#define	uFLAG_ENTRY3(w,s,a,b,c)		{ if (FLAG(w)) uEntry(0,s,a,b,c);}
350f46a6179Smrg#define	uFLAG_ENTRY4(w,s,a,b,c,d)	{ if (FLAG(w)) uEntry(0,s,a,b,c,d);}
351f46a6179Smrg#define	uFLAG_ENTRY5(w,s,a,b,c,d,e)	{ if (FLAG(w)) uEntry(0,s,a,b,c,d,e);}
352f46a6179Smrg#define	uFLAG_ENTRY6(w,s,a,b,c,d,e,f)	{ if (FLAG(w)) uEntry(0,s,a,b,c,d,e,f);}
353f46a6179Smrg#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);}
354f46a6179Smrg#define	uFLAG_RETURN(v)			{ return(v);}
355f46a6179Smrg#define	uFLAG_VOIDRETURN		{ return; }
356f46a6179Smrg#else
357f46a6179Smrg#define	uENTRY(s)
358f46a6179Smrg#define	uENTRY1(s,a)
359f46a6179Smrg#define	uENTRY2(s,a1,a2)
360f46a6179Smrg#define	uENTRY3(s,a1,a2,a3)
361f46a6179Smrg#define	uENTRY4(s,a1,a2,a3,a4)
362f46a6179Smrg#define	uENTRY5(s,a1,a2,a3,a4,a5)
363f46a6179Smrg#define	uENTRY6(s,a1,a2,a3,a4,a5,a6)
364f46a6179Smrg#define	uENTRY7(s,a1,a2,a3,a4,a5,a6,a7)
365f46a6179Smrg#define	uRETURN(v)	{ return(v); }
366f46a6179Smrg#define	uVOIDRETURN	{ return; }
367f46a6179Smrg
368f46a6179Smrg#define	uFLAG_ENTRY(f,s)
369f46a6179Smrg#define	uFLAG_ENTRY1(f,s,a)
370f46a6179Smrg#define	uFLAG_ENTRY2(f,s,a,b)
371f46a6179Smrg#define	uFLAG_ENTRY3(f,s,a,b,c)
372f46a6179Smrg#define	uFLAG_ENTRY4(f,s,a,b,c,d)
373f46a6179Smrg#define	uFLAG_ENTRY5(f,s,a,b,c,d,e)
374f46a6179Smrg#define	uFLAG_ENTRY6(f,s,a,b,c,d,e,g)
375f46a6179Smrg#define	uFLAG_ENTRY7(f,s,a,b,c,d,e,g,h)
376f46a6179Smrg#define	uFLAG_RETURN(v)			{ return(v);}
377f46a6179Smrg#define	uFLAG_VOIDRETURN		{ return; }
37834345a63Smrg#endif
379f46a6179Smrg
380f46a6179Smrg
381f46a6179Smrg#endif /* UTILS_H */
382