Hash :
266dfae5
Author :
Date :
2012-02-29T21:26:28
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163
#ifndef UTILS_H
#define UTILS_H 1
/*\
*
* COPYRIGHT 1990
* DIGITAL EQUIPMENT CORPORATION
* MAYNARD, MASSACHUSETTS
* ALL RIGHTS RESERVED.
*
* THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND
* SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION.
* DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE
* FOR ANY PURPOSE. IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED
* WARRANTY.
*
* IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT
* RIGHTS, APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN
* ADDITION TO THAT SET FORTH ABOVE.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation for any purpose and without fee is hereby granted, provided
* that the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation, and that the name of Digital Equipment Corporation not be
* used in advertising or publicity pertaining to distribution of the
* software without specific, written prior permission.
\*/
/***====================================================================***/
#include <stdio.h>
#include <X11/Xos.h>
#include <X11/Xfuncproto.h>
#include <X11/Xfuncs.h>
#include <stddef.h>
#include "config.h"
#ifndef NUL
#define NUL '\0'
#endif
/***====================================================================***/
#ifndef BOOLEAN_DEFINED
typedef char Boolean;
#endif
#ifndef True
#define True ((Boolean)1)
#define False ((Boolean)0)
#endif /* ndef True */
#define booleanText(b) ((b)?"True":"False")
#ifndef COMPARISON_DEFINED
typedef int Comparison;
#define Greater ((Comparison)1)
#define Equal ((Comparison)0)
#define Less ((Comparison)-1)
#define CannotCompare ((Comparison)-37)
#define comparisonText(c) ((c)?((c)<0?"Less":"Greater"):"Equal")
#endif
/***====================================================================***/
extern void *
recalloc(void * old, unsigned nOld, unsigned nNew, unsigned newSize);
#define uTypedAlloc(t) ((t *)malloc((unsigned)sizeof(t)))
#define uTypedCalloc(n,t) ((t *)calloc((unsigned)n,(unsigned)sizeof(t)))
#define uTypedRealloc(pO,n,t) ((t *)realloc(pO,((unsigned)n)*sizeof(t)))
#define uTypedRecalloc(pO,o,n,t) ((t *)recalloc(pO,((unsigned)o),((unsigned)n),sizeof(t)))
#if (defined mdHasAlloca) && (mdHasAlloca)
#define uTmpAlloc(n) alloca((unsigned)n)
#define uTmpFree(p)
#else
#define uTmpAlloc(n) malloc(n)
#define uTmpFree(p) free(p)
#endif
/***====================================================================***/
extern Boolean
uSetErrorFile(char *name);
#if defined(__GNUC__) && \
((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 6)))
#define __ATTR_PRINTF(i, f) __attribute__ ((format(printf, (i), (f))))
#else
#define __ATTR_PRINTF(i, f)
#endif
#define INFO uInformation
extern __ATTR_PRINTF(1, 2) void
uInformation(const char *s, ...);
#define ACTION uAction
extern __ATTR_PRINTF(1, 2) void
uAction(const char *s, ...);
#define WARN uWarning
extern __ATTR_PRINTF(1, 2) void
uWarning(const char *s, ...);
#define ERROR uError
extern __ATTR_PRINTF(1, 2) void
uError(const char *s, ...);
#define FATAL uFatalError
extern __ATTR_PRINTF(1, 2) _X_NORETURN void
uFatalError(const char *s, ...);
/* WSGO stands for "Weird Stuff Going On" (wtf???) */
#define WSGO uInternalError
extern __ATTR_PRINTF(1, 2) void
uInternalError(const char *s, ...);
/***====================================================================***/
#define NullString ((char *)NULL)
#define uStringText(s) ((s)==NullString?"<NullString>":(s))
#define uStringEqual(s1,s2) (uStringCompare(s1,s2)==Equal)
#define uStringPrefix(p,s) (strncmp(p,s,strlen(p))==0)
#define uStringCompare(s1,s2) (((s1)==NullString||(s2)==NullString)?\
(s1)!=(s2):strcmp(s1,s2))
#define uStrCaseEqual(s1,s2) (uStrCaseCmp(s1,s2)==0)
#ifdef HAVE_STRCASECMP
#define uStrCaseCmp(s1,s2) (strcasecmp(s1,s2))
#define uStrCasePrefix(p,s) (strncasecmp(p,s,strlen(p))==0)
#else
extern int
uStrCaseCmp(const char *s1, const char *s2);
extern int
uStrCasePrefix(const char *p, char *str);
#endif
/***====================================================================***/
#ifdef ASSERTIONS_ON
#define uASSERT(where,why) \
{if (!(why)) uFatalError("assertion botched in %s ( why )\n",where);}
#else
#define uASSERT(where,why)
#endif
/***====================================================================***/
#ifndef DEBUG_VAR
#define DEBUG_VAR debugFlags
#endif
extern unsigned int DEBUG_VAR;
#endif /* UTILS_H */