Files
seta75D d6fe8fe829 Init
2021-10-11 22:19:34 -03:00

102 lines
2.6 KiB
C

/* @(#)18 1.7 src/bos/usr/include/macros.h, incstd, bos411, 9428A410j 6/24/94 13:35:11 */
/* macros.h 5.1 - 86/12/09 - 06:04:58 */
#ifndef _H_MACROS
#define _H_MACROS
/*
* COMPONENT NAME: (INC) System header files
*
* FUNCTIONS: none
*
* ORIGINS: 27
*
* (C) COPYRIGHT International Business Machines Corp. 1986, 1994
* All Rights Reserved
* Licensed Materials - Property of IBM
*
* US Government Users Restricted Rights - Use, duplication or
* disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
*/
/*
numeric() is useful in while's, if's, etc., but don't use *p++
max() and min() depend on the types of the operands
abs() is absolute value
*/
# define numeric(c) ((c) >= '0' && (c) <= '9')
# define max(a,b) ((a)<(b) ? (b) : (a))
# define min(a,b) ((a)>(b) ? (b) : (a))
# define abs(x) ((x)>=0 ? (x) : -(x))
# define copy(srce,dest) cat(dest,srce,0)
# define compare(str1,str2) strcmp(str1,str2)
# define equal(str1,str2) !strcmp(str1,str2)
# define length(str) strlen(str)
# define size(str) (strlen(str) + 1)
/*
The global variable Statbuf is available for use as a stat(II)
structure. Note that "stat.h" is included here and should
not be included elsewhere.
Exists(file) returns 0 if the file does not exist;
the flags word if it does (the flags word is always non-zero).
*/
# include <sys/stat.h>
extern struct stat Statbuf;
# define exists(file) (stat(file,&Statbuf)<0 ? 0:Statbuf.st_mode)
extern long itol();
/*
libS.a interface for xopen() and xcreat()
*/
# define xfopen(file,mode) fdfopen(xopen(file,mode),mode)
# define xfcreat(file,mode) fdfopen(xcreat(file,mode),1)
# define remove(file) xunlink(file)
/*
SAVE() and RSTR() use local data in nested blocks.
Make sure that they nest cleanly.
*/
# define SAVE(name,place) { int place = name;
# define RSTR(name,place) name = place;}
/*
Use: DEBUG(sum,d) which becomes fprintf(stderr,"sum = %d\n",sum)
*/
# ifndef _KERNSYS
# define DEBUG(variable,type) fprintf(stderr,"variable = %type\n",variable)
#endif
/*
Use of ERRABORT() will cause libS.a internal
errors to cause aborts
*/
# define ERRABORT() _error() { abort(); }
/*
Use of USXALLOC() is required to force all calls to alloc()
(e.g., from libS.a) to call xalloc().
*/
# define USXALLOC() \
char *alloc(n) {return((char *)xalloc((unsigned)n));} \
free(n) char *n; {xfree(n);} \
char *malloc(n) unsigned n; {int p; p=xalloc(n); \
return((char *)(p != -1?p:0));}
# define NONBLANK(p) while (*(p)==' ' || *(p)=='\t') (p)++
/*
A global null string.
*/
extern char Null[1];
/*
A global error message string.
*/
extern char Error[128];
#endif /* _H_MACROS */