Blame cpp-test/test-l/longline.t

Packit b40e2e
/* longline.t:  source of long logical line.    */
Packit b40e2e
Packit b40e2e
typedef  unsigned int  size_t; \
Packit b40e2e
typedef struct __sfpos { \
Packit b40e2e
char _pos[8]; \
Packit b40e2e
} fpos_t; \
Packit b40e2e
struct __sbuf { \
Packit b40e2e
unsigned char *_base; \
Packit b40e2e
int _size; \
Packit b40e2e
}; \
Packit b40e2e
typedef struct __sFILE { \
Packit b40e2e
unsigned char *_p; \
Packit b40e2e
int _r; \
Packit b40e2e
int _w; \
Packit b40e2e
short _flags; \
Packit b40e2e
short _file; \
Packit b40e2e
struct __sbuf _bf; \
Packit b40e2e
int _lbfsize; \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
void *_cookie; \
Packit b40e2e
int (*_close)  (void *) ; \
Packit b40e2e
int (*_read)  (void *, char *, int) ; \
Packit b40e2e
fpos_t (*_seek)  (void *, fpos_t, int) ; \
Packit b40e2e
int (*_write)  (void *, const char *, int) ; \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
struct __sbuf _ub; \
Packit b40e2e
unsigned char *_up; \
Packit b40e2e
int _ur; \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
unsigned char _ubuf[3]; \
Packit b40e2e
unsigned char _nbuf[1]; \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
struct __sbuf _lb; \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
int _blksize; \
Packit b40e2e
fpos_t _offset; \
Packit b40e2e
} FILE; \
Packit b40e2e
 \
Packit b40e2e
   \
Packit b40e2e
extern FILE __sF[]; \
Packit b40e2e
   \
Packit b40e2e
   \
Packit b40e2e
void clearerr  (FILE *) ; \
Packit b40e2e
int fclose  (FILE *) ; \
Packit b40e2e
int feof  (FILE *) ; \
Packit b40e2e
int ferror  (FILE *) ; \
Packit b40e2e
int fflush  (FILE *) ; \
Packit b40e2e
int fgetc  (FILE *) ; \
Packit b40e2e
int fgetpos  (FILE *, fpos_t *) ; \
Packit b40e2e
char *fgets  (char *, size_t, FILE *) ; \
Packit b40e2e
FILE *fopen  (const char *, const char *) ; \
Packit b40e2e
int fprintf  (FILE *, const char *, ...) ; \
Packit b40e2e
int fputc  (int, FILE *) ; \
Packit b40e2e
int fputs  (const char *, FILE *) ; \
Packit b40e2e
                                             \
Packit b40e2e
Packit b40e2e
#ifndef X03FF
Packit b40e2e
Packit b40e2e
size_t fread  (void *, size_t, size_t, FILE *) ; \
Packit b40e2e
FILE *freopen  (const char *, const char *, FILE *) ; \
Packit b40e2e
int fscanf  (FILE *, const char *, ...) ; \
Packit b40e2e
int fseek  (FILE *, long, int) ; \
Packit b40e2e
int fsetpos  (FILE *, const fpos_t *) ; \
Packit b40e2e
long ftell  (const FILE *) ; \
Packit b40e2e
size_t fwrite  (const void *, size_t, size_t, FILE *) ; \
Packit b40e2e
int getc  (FILE *) ; \
Packit b40e2e
int getchar  (void) ; \
Packit b40e2e
char *gets  (char *) ; \
Packit b40e2e
 \
Packit b40e2e
extern int sys_nerr; \
Packit b40e2e
extern  const  char * const  sys_errlist[]; \
Packit b40e2e
 \
Packit b40e2e
void perror  (const char *) ; \
Packit b40e2e
int printf  (const char *, ...) ; \
Packit b40e2e
int putc  (int, FILE *) ; \
Packit b40e2e
int putchar  (int) ; \
Packit b40e2e
int puts  (const char *) ; \
Packit b40e2e
int remove  (const char *) ; \
Packit b40e2e
int rename  (const char *, const char *) ; \
Packit b40e2e
void rewind  (FILE *) ; \
Packit b40e2e
int scanf  (const char *, ...) ; \
Packit b40e2e
void setbuf  (FILE *, char *) ; \
Packit b40e2e
int setvbuf  (FILE *, char *, int, size_t) ; \
Packit b40e2e
int sprintf  (char *, const char *, ...) ; \
Packit b40e2e
int sscanf  (const char *, const char *, ...) ; \
Packit b40e2e
FILE *tmpfile  (void) ; \
Packit b40e2e
char *tmpnam  (char *) ; \
Packit b40e2e
int ungetc  (int, FILE *) ; \
Packit b40e2e
int vfprintf  (FILE *, const char *,  char * ) ; \
Packit b40e2e
int vprintf  (const char *,  char * ) ; \
Packit b40e2e
int vsprintf  (char *, const char *,  char * ) ; \
Packit b40e2e
   \
Packit b40e2e
   \
Packit b40e2e
char *ctermid  (char *) ; \
Packit b40e2e
FILE *fdopen  (int, const char *) ; \
Packit b40e2e
int fileno  (FILE *) ; \
Packit b40e2e
   \
Packit b40e2e
   \
Packit b40e2e
char *fgetln  (FILE *, size_t *) ; \
Packit b40e2e
int fpurge  (FILE *) ; \
Packit b40e2e
int getw  (FILE *) ; \
Packit b40e2e
int pclose  (FILE *) ; \
Packit b40e2e
FILE *popen  (const char *, const char *) ; \
Packit b40e2e
int putw  (int, FILE *) ; \
Packit b40e2e
void setbuffer  (FILE *, char *, int) ; \
Packit b40e2e
int setlinebuf  (FILE *) ; \
Packit b40e2e
char *tempnam  (const char *, const char *) ; \
Packit b40e2e
int snprintf  (char *, size_t, const char *, ...) ; \
Packit b40e2e
int vsnprintf  (char *, size_t, const char *,  char * ) ; \
Packit b40e2e
int vscanf  (const char *,  char * ) ; \
Packit b40e2e
int vsscanf  (const char *, const char *,  char * ) ; \
Packit b40e2e
FILE *zopen  (const char *, const char *, int) ; \
Packit b40e2e
   \
Packit b40e2e
   \
Packit b40e2e
FILE *funopen  (const void *, int (*)(void *, char *, int), int (*)(void *, const char *, int), fpos_t (*)(void *, fpos_t, int), int (*)(void *)) ; \
Packit b40e2e
   \
Packit b40e2e
   \
Packit b40e2e
int __srget  (FILE *) ; \
Packit b40e2e
int __svfscanf  (FILE *, const char *,  char * ) ; \
Packit b40e2e
int __swbuf  (int, FILE *) ; \
Packit b40e2e
   \
Packit b40e2e
typedef  int  rune_t; \
Packit b40e2e
                               \
Packit b40e2e
 
Packit b40e2e
#ifndef X07FF
Packit b40e2e
Packit b40e2e
typedef  int  wchar_t; \
Packit b40e2e
typedef struct { \
Packit b40e2e
rune_t min; \
Packit b40e2e
rune_t max; \
Packit b40e2e
rune_t map; \
Packit b40e2e
unsigned long *types; \
Packit b40e2e
} _RuneEntry; \
Packit b40e2e
 \
Packit b40e2e
typedef struct { \
Packit b40e2e
int nranges; \
Packit b40e2e
_RuneEntry *ranges; \
Packit b40e2e
} _RuneRange; \
Packit b40e2e
 \
Packit b40e2e
typedef struct { \
Packit b40e2e
char magic[8]; \
Packit b40e2e
char encoding[32]; \
Packit b40e2e
 \
Packit b40e2e
rune_t (*sgetrune) \
Packit b40e2e
 (const char *, unsigned int, char const **) ; \
Packit b40e2e
int (*sputrune) \
Packit b40e2e
 (rune_t, char *, unsigned int, char **) ; \
Packit b40e2e
rune_t invalid_rune; \
Packit b40e2e
 \
Packit b40e2e
unsigned long runetype[ (1 <<8 ) ]; \
Packit b40e2e
rune_t maplower[ (1 <<8 ) ]; \
Packit b40e2e
rune_t mapupper[ (1 <<8 ) ]; \
Packit b40e2e
_RuneRange runetype_ext; \
Packit b40e2e
_RuneRange maplower_ext; \
Packit b40e2e
_RuneRange mapupper_ext; \
Packit b40e2e
 \
Packit b40e2e
void *variable; \
Packit b40e2e
int variable_len; \
Packit b40e2e
} _RuneLocale; \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
extern _RuneLocale _DefaultRuneLocale; \
Packit b40e2e
extern _RuneLocale *_CurrentRuneLocale; \
Packit b40e2e
   \
Packit b40e2e
unsigned long ___runetype  ( int ) ; \
Packit b40e2e
 int  ___tolower  ( int ) ; \
Packit b40e2e
 int  ___toupper  ( int ) ; \
Packit b40e2e
   \
Packit b40e2e
   \
Packit b40e2e
int __istype  ( int , unsigned long) ; \
Packit b40e2e
int __isctype  ( int , unsigned long) ; \
Packit b40e2e
 int  toupper  ( int ) ; \
Packit b40e2e
 int  tolower  ( int ) ; \
Packit b40e2e
   \
Packit b40e2e
extern int errno; \
Packit b40e2e
   \
Packit b40e2e
void *memchr  (const void *, int, size_t) ; \
Packit b40e2e
int memcmp  (const void *, const void *, size_t) ; \
Packit b40e2e
void *memcpy  (void *, const void *, size_t) ; \
Packit b40e2e
void *memmove  (void *, const void *, size_t) ; \
Packit b40e2e
void *memset  (void *, int, size_t) ; \
Packit b40e2e
char *strcat  (char *, const char *) ; \
Packit b40e2e
char *strchr  (const char *, int) ; \
Packit b40e2e
int strcmp  (const char *, const char *) ; \
Packit b40e2e
int strcoll  (const char *, const char *) ; \
Packit b40e2e
char *strcpy  (char *, const char *) ; \
Packit b40e2e
size_t strcspn  (const char *, const char *) ; \
Packit b40e2e
char *strerror  (int) ; \
Packit b40e2e
size_t strlen  (const char *) ; \
Packit b40e2e
char *strncat  (char *, const char *, size_t) ; \
Packit b40e2e
int strncmp  (const char *, const char *, size_t) ; \
Packit b40e2e
char *strncpy  (char *, const char *, size_t) ; \
Packit b40e2e
char *strpbrk  (const char *, const char *) ; \
Packit b40e2e
char *strrchr  (const char *, int) ; \
Packit b40e2e
size_t strspn  (const char *, const char *) ; \
Packit b40e2e
char *strstr  (const char *, const char *) ; \
Packit b40e2e
char *strtok  (char *, const char *) ; \
Packit b40e2e
size_t strxfrm  (char *, const char *, size_t) ; \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
int bcmp  (const void *, const void *, size_t) ; \
Packit b40e2e
void bcopy  (const void *, void *, size_t) ; \
Packit b40e2e
void bzero  (void *, size_t) ; \
Packit b40e2e
int ffs  (int) ; \
Packit b40e2e
char *index  (const char *, int) ; \
Packit b40e2e
void *memccpy  (void *, const void *, int, size_t) ; \
Packit b40e2e
char *rindex  (const char *, int) ; \
Packit b40e2e
int strcasecmp  (const char *, const char *) ; \
Packit b40e2e
char *strdup  (const char *) ; \
Packit b40e2e
void strmode  (int, char *) ; \
Packit b40e2e
int strncasecmp  (const char *, const char *, size_t) ; \
Packit b40e2e
char *strsep  (char **, const char *) ; \
Packit b40e2e
void swab  (const void *, void *, size_t) ; \
Packit b40e2e
 \
Packit b40e2e
   \
Packit b40e2e
typedef struct { \
Packit b40e2e
int quot; \
Packit b40e2e
int rem; \
Packit b40e2e
} div_t; \
Packit b40e2e
 \
Packit b40e2e
typedef struct { \
Packit b40e2e
long quot; \
Packit b40e2e
long rem; \
Packit b40e2e
} ldiv_t; \
Packit b40e2e
extern int __mb_cur_max; \
Packit b40e2e
 \
Packit b40e2e
   \
Packit b40e2e
   void \
Packit b40e2e
abort  (void)    ; \
Packit b40e2e
   int \
Packit b40e2e
abs  (int) ; \
Packit b40e2e
int atexit  (void (*)(void)) ; \
Packit b40e2e
double atof  (const char *) ; \
Packit b40e2e
int atoi  (const char *) ; \
Packit b40e2e
long atol  (const char *) ; \
Packit b40e2e
void *bsearch  (const void *, const void *, size_t, size_t, int (*)(const void *, const void *)) ; \
Packit b40e2e
void *calloc  (size_t, size_t) ; \
Packit b40e2e
   div_t \
Packit b40e2e
div  (int, int) ; \
Packit b40e2e
   void \
Packit b40e2e
exit  (int)    ; \
Packit b40e2e
void free  (void *) ; \
Packit b40e2e
char *getenv  (const char *) ; \
Packit b40e2e
   long \
Packit b40e2e
labs  (long) ; \
Packit b40e2e
   ldiv_t \
Packit b40e2e
ldiv  (long, long) ; \
Packit b40e2e
void *malloc  (size_t) ; \
Packit b40e2e
void qsort  (void *, size_t, size_t, int (*)(const void *, const void *)) ; \
Packit b40e2e
int rand  (void) ; \
Packit b40e2e
void *realloc  (void *, size_t) ; \
Packit b40e2e
void srand  (unsigned) ; \
Packit b40e2e
double strtod  (const char *, char **) ; \
Packit b40e2e
long strtol  (const char *, char **, int) ; \
Packit b40e2e
unsigned long \
Packit b40e2e
strtoul  (const char *, char **, int) ; \
Packit b40e2e
int system  (const char *) ; \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
int mblen  (const char *, size_t) ; \
Packit b40e2e
size_t mbstowcs  (wchar_t *, const char *, size_t) ; \
Packit b40e2e
int wctomb  (char *, wchar_t) ; \
Packit b40e2e
int mbtowc  (wchar_t *, const char *, size_t) ; \
Packit b40e2e
size_t wcstombs  (char *, const wchar_t *, size_t) ; \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
int putenv  (const char *) ; \
Packit b40e2e
int setenv  (const char *, const char *, int) ; \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
double drand48  (void) ; \
Packit b40e2e
double erand48  (unsigned short[3]) ; \
Packit b40e2e
long lrand48  (void) ; \
Packit b40e2e
long nrand48  (unsigned short[3]) ; \
Packit b40e2e
long mrand48  (void) ; \
Packit b40e2e
long jrand48  (unsigned short[3]) ; \
Packit b40e2e
void srand48  (long) ; \
Packit b40e2e
unsigned short *seed48  (unsigned short[3]) ; \
Packit b40e2e
void lcong48  (unsigned short[7]) ; \
Packit b40e2e
 \
Packit b40e2e
void *alloca  (size_t) ; \
Packit b40e2e
 \
Packit b40e2e
char *getbsize  (int *, long *) ; \
Packit b40e2e
char *cgetcap  (char *, char *, int) ; \
Packit b40e2e
int cgetclose  (void) ; \
Packit b40e2e
                                                     \
Packit b40e2e
 
Packit b40e2e
#ifndef X0FFF
Packit b40e2e
Packit b40e2e
int cgetent  (char **, char **, char *) ; \
Packit b40e2e
int cgetfirst  (char **, char **) ; \
Packit b40e2e
int cgetmatch  (char *, char *) ; \
Packit b40e2e
int cgetnext  (char **, char **) ; \
Packit b40e2e
int cgetnum  (char *, char *, long *) ; \
Packit b40e2e
int cgetset  (char *) ; \
Packit b40e2e
int cgetstr  (char *, char *, char **) ; \
Packit b40e2e
int cgetustr  (char *, char *, char **) ; \
Packit b40e2e
 \
Packit b40e2e
int daemon  (int, int) ; \
Packit b40e2e
char *devname  (int, int) ; \
Packit b40e2e
int getloadavg  (double [], int) ; \
Packit b40e2e
 \
Packit b40e2e
extern char *optarg; \
Packit b40e2e
extern int opterr, optind, optopt; \
Packit b40e2e
int getopt  (int, char * const *, const char *) ; \
Packit b40e2e
 \
Packit b40e2e
extern char *suboptarg; \
Packit b40e2e
int getsubopt  (char **, char * const *, char **) ; \
Packit b40e2e
 \
Packit b40e2e
char *group_from_gid  (unsigned long, int) ; \
Packit b40e2e
int heapsort  (void *, size_t, size_t, int (*)(const void *, const void *)) ; \
Packit b40e2e
char *initstate  (unsigned, char *, int) ; \
Packit b40e2e
int mergesort  (void *, size_t, size_t, int (*)(const void *, const void *)) ; \
Packit b40e2e
int radixsort  (const unsigned char **, int, const unsigned char *, unsigned) ; \
Packit b40e2e
int sradixsort  (const unsigned char **, int, const unsigned char *, unsigned) ; \
Packit b40e2e
long random  (void) ; \
Packit b40e2e
char *realpath  (const char *, char resolved_path[]) ; \
Packit b40e2e
char *setstate  (char *) ; \
Packit b40e2e
void srandom  (unsigned) ; \
Packit b40e2e
char *user_from_uid  (unsigned long, int) ; \
Packit b40e2e
void unsetenv  (const char *) ; \
Packit b40e2e
 \
Packit b40e2e
   \
Packit b40e2e
typedef  int  ptrdiff_t; \
Packit b40e2e
typedef  unsigned long  clock_t; \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
typedef  long  time_t; \
Packit b40e2e
struct tm { \
Packit b40e2e
int tm_sec; \
Packit b40e2e
int tm_min; \
Packit b40e2e
int tm_hour; \
Packit b40e2e
int tm_mday; \
Packit b40e2e
int tm_mon; \
Packit b40e2e
int tm_year; \
Packit b40e2e
int tm_wday; \
Packit b40e2e
int tm_yday; \
Packit b40e2e
int tm_isdst; \
Packit b40e2e
long tm_gmtoff; \
Packit b40e2e
char *tm_zone; \
Packit b40e2e
}; \
Packit b40e2e
   \
Packit b40e2e
char *asctime  (const struct tm *) ; \
Packit b40e2e
clock_t clock  (void) ; \
Packit b40e2e
char *ctime  (const time_t *) ; \
Packit b40e2e
double difftime  (time_t, time_t) ; \
Packit b40e2e
struct tm *gmtime  (const time_t *) ; \
Packit b40e2e
struct tm *localtime  (const time_t *) ; \
Packit b40e2e
time_t mktime  (struct tm *) ; \
Packit b40e2e
size_t strftime  (char *, size_t, const char *, const struct tm *) ; \
Packit b40e2e
time_t time  (time_t *) ; \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
void tzset  (void) ; \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
char *timezone  (int, int) ; \
Packit b40e2e
void tzsetwall  (void) ; \
Packit b40e2e
 \
Packit b40e2e
   \
Packit b40e2e
extern int getopt( int argc, char * const * argv, const char * opts); \
Packit b40e2e
extern char * stpcpy( char * dest, const char * src); \
Packit b40e2e
typedef struct defbuf { \
Packit b40e2e
struct defbuf * link; \
Packit b40e2e
short nargs; \
Packit b40e2e
 \
Packit b40e2e
char * parmnames; \
Packit b40e2e
 \
Packit b40e2e
char * repl; \
Packit b40e2e
char name[1]; \
Packit b40e2e
} DEFBUF; \
Packit b40e2e
typedef struct fileinfo { \
Packit b40e2e
char * bptr; \
Packit b40e2e
unsigned line; \
Packit b40e2e
FILE * fp; \
Packit b40e2e
long pos; \
Packit b40e2e
struct fileinfo * parent; \
Packit b40e2e
struct ifinfo * initif; \
Packit b40e2e
char * filename; \
Packit b40e2e
char * buffer; \
Packit b40e2e
} FILEINFO; \
Packit b40e2e
typedef struct ifinfo { \
Packit b40e2e
int stat; \
Packit b40e2e
unsigned ifline; \
Packit b40e2e
unsigned elseline; \
Packit b40e2e
} IFINFO; \
Packit b40e2e
typedef struct val_sign { \
Packit b40e2e
long val; \
Packit b40e2e
int sign; \
Packit b40e2e
} VAL_SIGN; \
Packit b40e2e
extern    int cflag; \
Packit b40e2e
extern int eflag; \
Packit b40e2e
extern    int iflag; \
Packit b40e2e
extern    int lflag; \
Packit b40e2e
extern    int pflag; \
Packit b40e2e
extern int qflag; \
Packit b40e2e
 \
Packit b40e2e
extern    int tflag; \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
extern    int digraphs; \
Packit b40e2e
 \
Packit b40e2e
extern    int stdc_val; \
Packit b40e2e
extern long cplus; \
Packit b40e2e
extern int stdc2; \
Packit b40e2e
extern    int has_pragma; \
Packit b40e2e
 \
Packit b40e2e
extern    int std_line_prefix; \
Packit b40e2e
extern    int warn_level; \
Packit b40e2e
extern int errors; \
Packit b40e2e
extern    unsigned line; \
Packit b40e2e
extern    int wrongline; \
Packit b40e2e
extern    int keepcomments; \
Packit b40e2e
extern    int no_output; \
Packit b40e2e
extern    int in_directive; \
Packit b40e2e
extern    int in_define; \
Packit b40e2e
extern    unsigned macro_line; \
Packit b40e2e
extern    int openum; \
Packit b40e2e
extern    IFINFO * ifptr; \
Packit b40e2e
extern    FILEINFO * infile; \
Packit b40e2e
extern int mkdep; \
Packit b40e2e
 \
Packit b40e2e
extern    char * workp; \
Packit b40e2e
extern    char * const work_end; \
Packit b40e2e
extern    char identifier[  0xFF  + 1]; \
Packit b40e2e
extern const char type[]; \
Packit b40e2e
extern IFINFO ifstack[]; \
Packit b40e2e
extern char work[]; \
Packit b40e2e
extern    int debug; \
Packit b40e2e
extern void curfile( void); \
Packit b40e2e
extern int openfile( const char * filename, int local); \
Packit b40e2e
extern void unpredefine( int clearall); \
Packit b40e2e
 \
Packit b40e2e
extern int control( int newlines); \
Packit b40e2e
extern DEFBUF * lookid( const char * name); \
Packit b40e2e
extern DEFBUF * install( const char * name, int nargs, const char * parmnames \
Packit b40e2e
, const char * repl); \
Packit b40e2e
extern int undefine( const char * name); \
Packit b40e2e
extern void dumpadef( const char * why, const DEFBUF * dp, int newdef); \
Packit b40e2e
extern void dumpdef( void); \
Packit b40e2e
 \
Packit b40e2e
extern long eval( void); \
Packit b40e2e
extern VAL_SIGN * evalnum( const char * nump); \
Packit b40e2e
 \
Packit b40e2e
extern DEFBUF * is_macro( char ** cp); \
Packit b40e2e
extern char * expand( DEFBUF * defp, char * out, char * out_end); \
Packit b40e2e
 \
Packit b40e2e
extern int get_unexpandable( int c, int diag); \
Packit b40e2e
extern void skipnl( void); \
Packit b40e2e
extern int skipws( void); \
Packit b40e2e
extern int scantoken( int c, char ** out_pp, char * out_end); \
Packit b40e2e
extern char * scanquote( int delim, char * out, char * out_end, int diag); \
Packit b40e2e
extern int get( void); \
Packit b40e2e
 \
Packit b40e2e
extern int trigraph( char * in); \
Packit b40e2e
extern void unget( void); \
Packit b40e2e
extern FILEINFO * ungetstring( const char * text, const char * name); \
Packit b40e2e
extern char * savestring( const char * text); \
Packit b40e2e
extern FILEINFO * getfile( const char * name, size_t bufsize); \
Packit b40e2e
extern char * (xmalloc)( size_t size); \
Packit b40e2e
extern char * (xrealloc)( char * ptr, size_t size); \
Packit b40e2e
extern void cfatal( const char * format, const char * arg1, int arg2 \
Packit b40e2e
, const char * arg3); \
Packit b40e2e
extern void cerror( const char * format, const char * arg1, int arg2 \
Packit b40e2e
, const char * arg3); \
Packit b40e2e
extern void cwarn( const char * format, const char * arg1, int arg2 \
Packit b40e2e
, const char * arg3); \
Packit b40e2e
 \
Packit b40e2e
extern void dooptions( int argc, char ** argv, char ** in_pp \
Packit b40e2e
, char ** out_pp); \
Packit b40e2e
extern int reopen_stdout( const char * filename); \
Packit b40e2e
extern void setstdin( char * cp); \
Packit b40e2e
extern void put_start_file( char * filename); \
Packit b40e2e
extern void sharp( void); \
Packit b40e2e
extern void putfname( char * filename); \
Packit b40e2e
extern int getredirection( int argc, char ** argv); \
Packit b40e2e
 \
Packit b40e2e
extern void put_depend( const char * filename); \
Packit b40e2e
 \
Packit b40e2e
extern int doinclude( void); \
Packit b40e2e
 \
Packit b40e2e
extern void dopragma( void); \
Packit b40e2e
extern void put_source( const char * src); \
Packit b40e2e
extern void alloc_mem( void); \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
extern void dumpstring( const char * why, const char * text); \
Packit b40e2e
extern void dumpunget( const char * why); \
Packit b40e2e
 \
Packit b40e2e
extern void print_heap( void); \
Packit b40e2e
static void scanid( int c); \
Packit b40e2e
static char * scannumber( int c, char * out, char * out_end); \
Packit b40e2e
static char * scanop( int c, char * out); \
Packit b40e2e
static char * parse_line( void); \
Packit b40e2e
static char * read_a_comment( char * sp); \
Packit b40e2e
static char * getline( int in_comment); \
Packit b40e2e
static void at_eof( int in_comment); \
Packit b40e2e
void dumptoken( int token_type, const char * cp); \
Packit b40e2e
int \
Packit b40e2e
 \
Packit b40e2e
get_unexpandable( int c, int diag) \
Packit b40e2e
{ \
Packit b40e2e
DEFBUF * defp; \
Packit b40e2e
FILEINFO * file; \
Packit b40e2e
FILE * fp =  0 ; \
Packit b40e2e
int token_type =  0 ; \
Packit b40e2e
 \
Packit b40e2e
while (c !=  '\0'  && c != '\n' \
Packit b40e2e
&& (fp = infile->fp, \
Packit b40e2e
(token_type = scantoken( c, (workp = work, &workp), work_end)) ==  65 ) \
Packit b40e2e
&& fp !=  0  \
Packit b40e2e
&& (defp = is_macro( (char **) 0 )) !=  0 ) { \
Packit b40e2e
expand( defp, work, work_end); \
Packit b40e2e
file = ungetstring( work, defp->name); \
Packit b40e2e
c = skipws(); \
Packit b40e2e
if (file != infile && macro_line !=  65535U  && (warn_level & 1)) \
Packit b40e2e
cwarn( "Macro \"%s\" is expanded to 0 token" \
Packit b40e2e
, defp->name, 0,  ((char *)  0 ) ); \
Packit b40e2e
} \
Packit b40e2e
 \
Packit b40e2e
if (c == '\n' || c ==  '\0' ) { \
Packit b40e2e
unget(); \
Packit b40e2e
return  0 ; \
Packit b40e2e
} \
Packit b40e2e
 \
Packit b40e2e
if (diag && fp ==  0  && token_type ==  65 ) { \
Packit b40e2e
 \
Packit b40e2e
if ( (strcmp(identifier, "defined") == 0)  && (warn_level & 1)) \
Packit b40e2e
cwarn( "Macro \"%s\" is expanded to \"defined\"" \
Packit b40e2e
, defp->name, 0,  ((char *)  0 ) ); \
Packit b40e2e
} \
Packit b40e2e
return token_type; \
Packit b40e2e
} \
Packit b40e2e
 \
Packit b40e2e
void \
Packit b40e2e
 \
Packit b40e2e
skipnl( void) \
Packit b40e2e
{ \
Packit b40e2e
while (infile && infile->fp ==  0 ) { \
Packit b40e2e
infile->bptr += strlen( infile->bptr); \
Packit b40e2e
get(); \
Packit b40e2e
} \
Packit b40e2e
if (infile) \
Packit b40e2e
infile->bptr += strlen( infile->bptr); \
Packit b40e2e
} \
Packit b40e2e
 \
Packit b40e2e
int \
Packit b40e2e
 \
Packit b40e2e
skipws( void) \
Packit b40e2e
{ \
Packit b40e2e
   int c; \
Packit b40e2e
 \
Packit b40e2e
do { \
Packit b40e2e
c = get(); \
Packit b40e2e
} \
Packit b40e2e
 \
Packit b40e2e
while (c == ' ' || c ==  0x1F ); \
Packit b40e2e
return c; \
Packit b40e2e
} \
Packit b40e2e
int \
Packit b40e2e
 \
Packit b40e2e
scantoken( int c, char ** out_pp, char * out_end) \
Packit b40e2e
{ \
Packit b40e2e
   char * out = *out_pp; \
Packit b40e2e
int ch_type; \
Packit b40e2e
int token_type = 0; \
Packit b40e2e
int ch; \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
ch_type = type[ c] & (~ ((char)128)  &  255 ); \
Packit b40e2e
switch (ch_type) { \
Packit b40e2e
case  1 : \
Packit b40e2e
switch (c) { \
Packit b40e2e
 \
Packit b40e2e
case 'L': \
Packit b40e2e
ch =  (*infile->bptr++ &  255 ) ; \
Packit b40e2e
if (type[ ch] &  16 ) { \
Packit b40e2e
if (ch == '"') \
Packit b40e2e
token_type =  68 ; \
Packit b40e2e
else \
Packit b40e2e
token_type =  70 ; \
Packit b40e2e
c = ch; \
Packit b40e2e
*out++ = 'L'; \
Packit b40e2e
break; \
Packit b40e2e
} else { \
Packit b40e2e
 (infile->bptr--) ; \
Packit b40e2e
} \
Packit b40e2e
 \
Packit b40e2e
default: \
Packit b40e2e
scanid( c); \
Packit b40e2e
out = stpcpy( out, identifier); \
Packit b40e2e
token_type =  65 ; \
Packit b40e2e
break; \
Packit b40e2e
} \
Packit b40e2e
if (token_type ==  65 ) \
Packit b40e2e
break; \
Packit b40e2e
 \
Packit b40e2e
case  16 : \
Packit b40e2e
out = scanquote( c, out, out_end,  0 ); \
Packit b40e2e
if (token_type == 0) { \
Packit b40e2e
if (c == '"') \
Packit b40e2e
token_type =  67 ; \
Packit b40e2e
else \
Packit b40e2e
token_type =  69 ; \
Packit b40e2e
} \
Packit b40e2e
break; \
Packit b40e2e
case  4 : \
Packit b40e2e
ch =  (*infile->bptr++ &  255 ) ; \
Packit b40e2e
 (infile->bptr--) ; \
Packit b40e2e
if (type[ ch] !=  2 ) \
Packit b40e2e
goto operat; \
Packit b40e2e
 \
Packit b40e2e
case  2 : \
Packit b40e2e
out = scannumber( c, out, out_end); \
Packit b40e2e
token_type =  66 ; \
Packit b40e2e
break; \
Packit b40e2e
case  8 : \
Packit b40e2e
operat: out = scanop( c, out); \
Packit b40e2e
token_type =  71 ; \
Packit b40e2e
break; \
Packit b40e2e
default: \
Packit b40e2e
if \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
((type[ c] &  32 ) || c ==  0x1E  || c ==  0x1D ) \
Packit b40e2e
 \
Packit b40e2e
token_type =  73 ; \
Packit b40e2e
else \
Packit b40e2e
token_type =  72 ; \
Packit b40e2e
*out++ = c; \
Packit b40e2e
*out =  '\0' ; \
Packit b40e2e
break; \
Packit b40e2e
} \
Packit b40e2e
 \
Packit b40e2e
if (out_end < out) \
Packit b40e2e
cfatal( "Buffer overflow scanning token \"%s\"" \
Packit b40e2e
, *out_pp, 0,  ((char *)  0 ) ); \
Packit b40e2e
 \
Packit b40e2e
if (debug &  2 ) \
Packit b40e2e
dumptoken( token_type, *out_pp); \
Packit b40e2e
*out_pp = out; \
Packit b40e2e
 \
Packit b40e2e
return token_type; \
Packit b40e2e
} \
Packit b40e2e
 \
Packit b40e2e
static void \
Packit b40e2e
 \
Packit b40e2e
scanid( int c) \
Packit b40e2e
{ \
Packit b40e2e
static    char * const limit = &identifier[  0xFF ]; \
Packit b40e2e
int long_ident =  0 ; \
Packit b40e2e
   char * bp; \
Packit b40e2e
 \
Packit b40e2e
bp = identifier; \
Packit b40e2e
 \
Packit b40e2e
do { \
Packit b40e2e
*bp++ = c; \
Packit b40e2e
                                                            \
Packit b40e2e
 
Packit b40e2e
#ifndef X1FFF
Packit b40e2e
Packit b40e2e
c =  (*infile->bptr++ &  255 ) ; \
Packit b40e2e
} while ((type[ c] & ( 1  |  2 )) && bp < limit); \
Packit b40e2e
if (type[ c] & ( 1  |  2 )) { \
Packit b40e2e
long_ident =  1 ; \
Packit b40e2e
do { \
Packit b40e2e
c =  (*infile->bptr++ &  255 ) ; \
Packit b40e2e
} while (type[ c] & ( 1  |  2 )); \
Packit b40e2e
} \
Packit b40e2e
 (infile->bptr--) ; \
Packit b40e2e
*bp =  '\0' ; \
Packit b40e2e
 \
Packit b40e2e
if (long_ident && (warn_level & 1)) \
Packit b40e2e
cwarn( "Too long identifier truncated to \"%s\"" \
Packit b40e2e
, identifier, 0,  ((char *)  0 ) ); \
Packit b40e2e
 \
Packit b40e2e
if (infile->fp && bp - identifier >  0x1F  && (warn_level & 2)) \
Packit b40e2e
cwarn( "Identifier longer than %.0s%d bytes \"%s\"" \
Packit b40e2e
,  ((char *)  0 ) ,  0x1F , identifier); \
Packit b40e2e
} \
Packit b40e2e
 \
Packit b40e2e
char * \
Packit b40e2e
 \
Packit b40e2e
scanquote( int delim, char * out, char * out_end, int diag) \
Packit b40e2e
{ \
Packit b40e2e
const char * const skip_line = ", skipped the line"; \
Packit b40e2e
const char * skip; \
Packit b40e2e
   int c; \
Packit b40e2e
int c1; \
Packit b40e2e
char * out_p = out; \
Packit b40e2e
 \
Packit b40e2e
*out_p++ = delim; \
Packit b40e2e
 \
Packit b40e2e
if (delim == '<') \
Packit b40e2e
delim = '>'; \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
while ((c =  (*infile->bptr++ &  255 ) ) !=  '\0' ) { \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
if (type[ c] &  64 ) { \
Packit b40e2e
c1 =  (*infile->bptr++ &  255 ) ; \
Packit b40e2e
if (type[ c1] &  ((char)128) ) { \
Packit b40e2e
*out_p++ = c; \
Packit b40e2e
*out_p++ = c1; \
Packit b40e2e
goto chk_limit; \
Packit b40e2e
} else { \
Packit b40e2e
 (infile->bptr--) ; \
Packit b40e2e
*out_p++ = c; \
Packit b40e2e
if (infile->fp !=  0  &&  ifstack[0].stat  && diag) { \
Packit b40e2e
*out_p = c1; \
Packit b40e2e
*(out_p + 1) =  '\0' ; \
Packit b40e2e
if (warn_level & 1) \
Packit b40e2e
cwarn( \
Packit b40e2e
"Illegal multi-byte character sequence \"%s\" in quotation", \
Packit b40e2e
out_p - 1, 0,  ((char *)  0 ) ); \
Packit b40e2e
} \
Packit b40e2e
continue; \
Packit b40e2e
} \
Packit b40e2e
} \
Packit b40e2e
 \
Packit b40e2e
if (c == delim) { \
Packit b40e2e
break; \
Packit b40e2e
} else if (c == '\\' \
Packit b40e2e
 \
Packit b40e2e
&& delim != '>' \
Packit b40e2e
 \
Packit b40e2e
) { \
Packit b40e2e
*out_p++ = c; \
Packit b40e2e
c =  (*infile->bptr++ &  255 ) ; \
Packit b40e2e
 \
Packit b40e2e
if (type[ c] &  64 ) { \
Packit b40e2e
 (infile->bptr--) ; \
Packit b40e2e
continue; \
Packit b40e2e
} \
Packit b40e2e
} else if (c == ' ' && delim == '>' && infile->fp ==  0 ) { \
Packit b40e2e
continue; \
Packit b40e2e
 \
Packit b40e2e
} else if (c == '\n') { \
Packit b40e2e
break; \
Packit b40e2e
} \
Packit b40e2e
if (diag &&  __istype((c),  0x00000200L )  && ((type[ c] &  32 ) == 0) && (warn_level & 1)) \
Packit b40e2e
cwarn( \
Packit b40e2e
"Illegal control character %.0s0x%02x in quotation" \
Packit b40e2e
,  ((char *)  0 ) , c,  ((char *)  0 ) ); \
Packit b40e2e
*out_p++ = c; \
Packit b40e2e
chk_limit: \
Packit b40e2e
if (out_end < out_p) { \
Packit b40e2e
*out_end =  '\0' ; \
Packit b40e2e
cfatal( "Too long quotation %s", out, 0,  ((char *)  0 ) ); \
Packit b40e2e
} \
Packit b40e2e
} \
Packit b40e2e
 \
Packit b40e2e
if (c == '\n' || c ==  '\0' ) \
Packit b40e2e
 (infile->bptr--) ; \
Packit b40e2e
if (c == delim) \
Packit b40e2e
*out_p++ = delim; \
Packit b40e2e
*out_p =  '\0' ; \
Packit b40e2e
if (diag) { \
Packit b40e2e
skip = (infile->fp ==  0 ) ?  ((char *)  0 )  : skip_line; \
Packit b40e2e
if (c != delim) { \
Packit b40e2e
if (delim == '"') \
Packit b40e2e
cerror( "Unterminated string literal %s%.0d%s" \
Packit b40e2e
, out, 0, skip); \
Packit b40e2e
else if (delim == '\'') \
Packit b40e2e
cerror( "Unterminated character constant %s%.0d%s" \
Packit b40e2e
, out, 0, skip); \
Packit b40e2e
 \
Packit b40e2e
else \
Packit b40e2e
cerror( "Unterminated header name %s%.0d%s" \
Packit b40e2e
, out, 0, skip); \
Packit b40e2e
 \
Packit b40e2e
out_p =  0 ; \
Packit b40e2e
} else if (delim == '\'' && out_p - out <= 2) { \
Packit b40e2e
cerror( "Empty character constant %s%.0d%s" \
Packit b40e2e
, out, 0, skip); \
Packit b40e2e
out_p =  0 ; \
Packit b40e2e
} \
Packit b40e2e
if (out_p - out >  0x1FD  && (warn_level & 2)) \
Packit b40e2e
cwarn( "Quotation longer than %.0s%d bytes %s" \
Packit b40e2e
,  ((char *)  0 ) ,  0x1FD , out); \
Packit b40e2e
 \
Packit b40e2e
} \
Packit b40e2e
 \
Packit b40e2e
return out_p; \
Packit b40e2e
} \
Packit b40e2e
static char * \
Packit b40e2e
 \
Packit b40e2e
scannumber( int c, char * out, char * out_end) \
Packit b40e2e
{ \
Packit b40e2e
char * out_p = out; \
Packit b40e2e
 \
Packit b40e2e
do { \
Packit b40e2e
*out_p++ = c; \
Packit b40e2e
if (c == 'E' || c == 'e') { \
Packit b40e2e
c =  (*infile->bptr++ &  255 ) ; \
Packit b40e2e
if (c == '+' || c == '-') { \
Packit b40e2e
*out_p++ = c; \
Packit b40e2e
c =  (*infile->bptr++ &  255 ) ; \
Packit b40e2e
} \
Packit b40e2e
} else { \
Packit b40e2e
c =  (*infile->bptr++ &  255 ) ; \
Packit b40e2e
} \
Packit b40e2e
} while (type[ c] & ( 2  |  4  |  1 )); \
Packit b40e2e
 \
Packit b40e2e
*out_p =  '\0' ; \
Packit b40e2e
if (out_end < out_p) \
Packit b40e2e
cfatal( "Too long pp-number token \"%s\"" \
Packit b40e2e
, out, 0,  ((char *)  0 ) ); \
Packit b40e2e
 (infile->bptr--) ; \
Packit b40e2e
return out_p; \
Packit b40e2e
} \
Packit b40e2e
static char * \
Packit b40e2e
 \
Packit b40e2e
scanop( int c, char * out) \
Packit b40e2e
{ \
Packit b40e2e
int c2, c3; \
Packit b40e2e
 \
Packit b40e2e
int c4; \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
*out++ = c; \
Packit b40e2e
 \
Packit b40e2e
switch (c) { \
Packit b40e2e
case '~': openum =  5 ; break; \
Packit b40e2e
case '(': openum =  2 ; break; \
Packit b40e2e
case ')': openum =  27 ; break; \
Packit b40e2e
case '?': openum =  25 ; break; \
Packit b40e2e
case ';': case '[': case ']': case '{': \
Packit b40e2e
case '}': case ',': \
Packit b40e2e
openum =  32 ; \
Packit b40e2e
break; \
Packit b40e2e
default: \
Packit b40e2e
openum =  33 ; \
Packit b40e2e
} \
Packit b40e2e
 \
Packit b40e2e
if (openum !=  33 ) { \
Packit b40e2e
*out =  '\0' ; \
Packit b40e2e
return out; \
Packit b40e2e
} \
Packit b40e2e
 \
Packit b40e2e
c2 =  (*infile->bptr++ &  255 ) ; \
Packit b40e2e
*out++ = c2; \
Packit b40e2e
 \
Packit b40e2e
switch (c) { \
Packit b40e2e
case '=': \
Packit b40e2e
openum = ((c2 == '=') ?  18  :  32 ); \
Packit b40e2e
break; \
Packit b40e2e
case '!': \
Packit b40e2e
openum = ((c2 == '=') ?  19  :  6 ); \
Packit b40e2e
break; \
Packit b40e2e
case '&': \
Packit b40e2e
switch (c2) { \
Packit b40e2e
case '&': openum =  23 ; break; \
Packit b40e2e
case '=': break; \
Packit b40e2e
default : openum =  20 ; break; \
Packit b40e2e
} \
Packit b40e2e
break; \
Packit b40e2e
case '|': \
Packit b40e2e
switch (c2) { \
Packit b40e2e
case '|': openum =  24 ; break; \
Packit b40e2e
case '=': break; \
Packit b40e2e
default : openum =  22 ; break; \
Packit b40e2e
} \
Packit b40e2e
break; \
Packit b40e2e
case '<': \
Packit b40e2e
switch (c2) { \
Packit b40e2e
case '<': c3 =  (*infile->bptr++ &  255 ) ; \
Packit b40e2e
if (c3 == '=') { \
Packit b40e2e
openum =  34 ; \
Packit b40e2e
*out++ = c3; \
Packit b40e2e
} else { \
Packit b40e2e
openum =  12 ; \
Packit b40e2e
 (infile->bptr--) ; \
Packit b40e2e
} \
Packit b40e2e
break; \
Packit b40e2e
case '=': openum =  15 ; break; \
Packit b40e2e
 \
Packit b40e2e
case ':': \
Packit b40e2e
if (digraphs) \
Packit b40e2e
openum =  0x42 ; \
Packit b40e2e
else \
Packit b40e2e
openum =  14 ; \
Packit b40e2e
break; \
Packit b40e2e
case '%': \
Packit b40e2e
if (digraphs) \
Packit b40e2e
openum =  0x40 ; \
Packit b40e2e
else \
Packit b40e2e
openum =  14 ; \
Packit b40e2e
break; \
Packit b40e2e
 \
Packit b40e2e
default : openum =  14 ; break; \
Packit b40e2e
} \
Packit b40e2e
break; \
Packit b40e2e
case '>': \
Packit b40e2e
switch (c2) { \
Packit b40e2e
case '>': c3 =  (*infile->bptr++ &  255 ) ; \
Packit b40e2e
if (c3 == '=') { \
Packit b40e2e
openum =  34 ; \
Packit b40e2e
*out++ = c3; \
Packit b40e2e
} else { \
Packit b40e2e
openum =  13 ; \
Packit b40e2e
 (infile->bptr--) ; \
Packit b40e2e
} \
Packit b40e2e
break; \
Packit b40e2e
case '=': openum =  17 ; break; \
Packit b40e2e
default : openum =  16 ; break; \
Packit b40e2e
} \
Packit b40e2e
break; \
Packit b40e2e
case '#': \
Packit b40e2e
 \
Packit b40e2e
if (in_define) \
Packit b40e2e
openum = ((c2 == '#') ?  31  :  30 ); \
Packit b40e2e
else \
Packit b40e2e
 \
Packit b40e2e
openum =  32 ; \
Packit b40e2e
break; \
Packit b40e2e
case '+': \
Packit b40e2e
switch (c2) { \
Packit b40e2e
case '+': \
Packit b40e2e
case '=': break; \
Packit b40e2e
default : openum =  10 ; break; \
Packit b40e2e
} \
Packit b40e2e
break; \
Packit b40e2e
case '-': \
Packit b40e2e
switch (c2) { \
Packit b40e2e
case '-': \
Packit b40e2e
case '=': \
Packit b40e2e
 \
Packit b40e2e
break; \
Packit b40e2e
case '>': \
Packit b40e2e
 \
Packit b40e2e
if (cplus) { \
Packit b40e2e
if ((c3 =  (*infile->bptr++ &  255 ) ) == '*') { \
Packit b40e2e
openum =  34 ; \
Packit b40e2e
*out++ = c3; \
Packit b40e2e
} else { \
Packit b40e2e
 \
Packit b40e2e
 (infile->bptr--) ; \
Packit b40e2e
} \
Packit b40e2e
} \
Packit b40e2e
break; \
Packit b40e2e
default : openum =  11 ; break; \
Packit b40e2e
} \
Packit b40e2e
break; \
Packit b40e2e
case '%': \
Packit b40e2e
switch (c2) { \
Packit b40e2e
case '=': break; \
Packit b40e2e
 \
Packit b40e2e
case '>': \
Packit b40e2e
if (digraphs) \
Packit b40e2e
openum =  0x41 ; \
Packit b40e2e
else \
Packit b40e2e
openum =  9 ; \
Packit b40e2e
break; \
Packit b40e2e
case ':': \
Packit b40e2e
if (! digraphs || ! in_define) { \
Packit b40e2e
openum =  9 ; \
Packit b40e2e
} else if ((c3 =  (*infile->bptr++ &  255 ) ) == '%') { \
Packit b40e2e
if ((c4 =  (*infile->bptr++ &  255 ) ) == ':') { \
Packit b40e2e
openum =  31 ; \
Packit b40e2e
*out++ = c3; \
Packit b40e2e
*out++ = c4; \
Packit b40e2e
} else { \
Packit b40e2e
 (infile->bptr--) ; \
Packit b40e2e
 (infile->bptr--) ; \
Packit b40e2e
openum =  30 ; \
Packit b40e2e
} \
Packit b40e2e
} else { \
Packit b40e2e
 (infile->bptr--) ; \
Packit b40e2e
openum =  30 ; \
Packit b40e2e
} \
Packit b40e2e
break; \
Packit b40e2e
 \
Packit b40e2e
default : openum =  9 ; break; \
Packit b40e2e
} \
Packit b40e2e
break; \
Packit b40e2e
case '*': \
Packit b40e2e
if (c2 != '=') \
Packit b40e2e
openum =  7 ; \
Packit b40e2e
 \
Packit b40e2e
break; \
Packit b40e2e
case '/': \
Packit b40e2e
if (c2 != '=') \
Packit b40e2e
openum =  8 ; \
Packit b40e2e
 \
Packit b40e2e
break; \
Packit b40e2e
case '^': \
Packit b40e2e
if (c2 != '=') \
Packit b40e2e
openum =  21 ; \
Packit b40e2e
 \
Packit b40e2e
break; \
Packit b40e2e
case '.': \
Packit b40e2e
 \
Packit b40e2e
if (c2 == '.') { \
Packit b40e2e
c3 =  (*infile->bptr++ &  255 ) ; \
Packit b40e2e
if (c3 == '.') { \
Packit b40e2e
openum =  34 ; \
Packit b40e2e
*out++ = c3; \
Packit b40e2e
break; \
Packit b40e2e
} else { \
Packit b40e2e
 (infile->bptr--) ; \
Packit b40e2e
openum =  32 ; \
Packit b40e2e
} \
Packit b40e2e
} \
Packit b40e2e
 \
Packit b40e2e
else if (cplus && c2 == '*') \
Packit b40e2e
; \
Packit b40e2e
 \
Packit b40e2e
else \
Packit b40e2e
openum =  32 ; \
Packit b40e2e
break; \
Packit b40e2e
case ':': \
Packit b40e2e
 \
Packit b40e2e
if (stdc2 && c2 == ':') \
Packit b40e2e
; \
Packit b40e2e
 \
Packit b40e2e
else if (c2 == '>' && digraphs) \
Packit b40e2e
openum =  0x43 ; \
Packit b40e2e
 \
Packit b40e2e
else \
Packit b40e2e
openum =  26 ; \
Packit b40e2e
break; \
Packit b40e2e
default: \
Packit b40e2e
 \
Packit b40e2e
cfatal( "Bug: Punctuator is mis-implemented %.0s0x%x" \
Packit b40e2e
,  ((char *)  0 ) , c,  ((char *)  0 ) ); \
Packit b40e2e
 \
Packit b40e2e
openum =  32 ; \
Packit b40e2e
break; \
Packit b40e2e
} \
Packit b40e2e
 \
Packit b40e2e
switch (openum) { \
Packit b40e2e
 \
Packit b40e2e
case  30 : \
Packit b40e2e
 \
Packit b40e2e
if (c == '%') break; \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
case  32 : \
Packit b40e2e
case  6 : case  20 : case  22 : case  14 : \
Packit b40e2e
case  16 : case  10 : case  11 : case  9 : \
Packit b40e2e
case  7 : case  8 : case  21 : case  5 : \
Packit b40e2e
case  26 : \
Packit b40e2e
 \
Packit b40e2e
 (infile->bptr--) ; \
Packit b40e2e
out--; \
Packit b40e2e
break; \
Packit b40e2e
default: \
Packit b40e2e
break; \
Packit b40e2e
} \
Packit b40e2e
 \
Packit b40e2e
*out =  '\0' ; \
Packit b40e2e
return out; \
Packit b40e2e
} \
Packit b40e2e
int \
Packit b40e2e
 \
Packit b40e2e
get( void) \
Packit b40e2e
{ \
Packit b40e2e
int len; \
Packit b40e2e
   int c; \
Packit b40e2e
   FILEINFO * file; \
Packit b40e2e
 \
Packit b40e2e
if ((file = infile) ==  0 ) \
Packit b40e2e
return  0 ; \
Packit b40e2e
if (debug &  32 ) { \
Packit b40e2e
printf( "get(%s), line %u, bptr = %d, buffer" \
Packit b40e2e
, file->filename ? file->filename : "NULL" \
Packit b40e2e
, line, (int) (file->bptr - file->buffer)); \
Packit b40e2e
dumpstring(  ((char *)  0 ) , file->buffer); \
Packit b40e2e
dumpunget( "get entrance"); \
Packit b40e2e
} \
Packit b40e2e
if ((c = (*file->bptr++ &  255 )) !=  '\0' ) { \
Packit b40e2e
 \
Packit b40e2e
return c; \
Packit b40e2e
} \
Packit b40e2e
if (file->fp && \
Packit b40e2e
parse_line() !=  0 ) \
Packit b40e2e
return get(); \
Packit b40e2e
infile = file->parent; \
Packit b40e2e
if (infile ==  0 ) \
Packit b40e2e
return  0 ; \
Packit b40e2e
free(( char *)file->buffer); \
Packit b40e2e
if (file->filename) \
Packit b40e2e
free( file->filename); \
Packit b40e2e
if (file->fp) { \
Packit b40e2e
fclose( file->fp); \
Packit b40e2e
if (!  (strcmp("stdin", infile->filename) == 0) ) { \
Packit b40e2e
infile->fp = fopen( infile->filename, "r"); \
Packit b40e2e
fseek( infile->fp, infile->pos,  0 ); \
Packit b40e2e
} \
Packit b40e2e
len = (int) (infile->bptr - infile->buffer); \
Packit b40e2e
infile->buffer = xrealloc( infile->buffer,  0x4000 ); \
Packit b40e2e
 \
Packit b40e2e
infile->bptr = infile->buffer + len; \
Packit b40e2e
line = infile->line; \
Packit b40e2e
wrongline =  1 ; \
Packit b40e2e
} \
Packit b40e2e
free(( char *)file); \
Packit b40e2e
return get(); \
Packit b40e2e
} \
Packit b40e2e
 \
Packit b40e2e
static char * \
Packit b40e2e
 \
Packit b40e2e
parse_line( void) \
Packit b40e2e
{ \
Packit b40e2e
char * temp; \
Packit b40e2e
char * limit; \
Packit b40e2e
char * tp; \
Packit b40e2e
char * sp; \
Packit b40e2e
   int c; \
Packit b40e2e
 \
Packit b40e2e
if ((sp = getline(  0 )) ==  0 ) \
Packit b40e2e
return  0 ; \
Packit b40e2e
tp = temp = xmalloc( (size_t)  0x4000 ); \
Packit b40e2e
limit = temp +  0x4000  - 2; \
Packit b40e2e
 \
Packit b40e2e
while ((c = *sp++ &  255 ) != '\n') { \
Packit b40e2e
 \
Packit b40e2e
switch (c) { \
Packit b40e2e
case '/': \
Packit b40e2e
switch (*sp++) { \
Packit b40e2e
case '*': \
Packit b40e2e
if ((sp = read_a_comment( sp)) ==  0 ) { \
Packit b40e2e
free( temp); \
Packit b40e2e
return  0 ; \
Packit b40e2e
} \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
if (temp < tp && *(tp - 1) != ' ') \
Packit b40e2e
*tp++ = ' '; \
Packit b40e2e
break; \
Packit b40e2e
 \
Packit b40e2e
case '/': \
Packit b40e2e
if (stdc2) { \
Packit b40e2e
 \
Packit b40e2e
if (keepcomments) { \
Packit b40e2e
   (--((&__sF[1]))->_w < 0 ? ((&__sF[1]))->_w >= ((&__sF[1]))->_lbfsize ? (*((&__sF[1]))->_p = ('/')), *((&__sF[1]))->_p != '\n' ? (int)*((&__sF[1]))->_p++ : __swbuf('\n', (&__sF[1])) : __swbuf((int)('/'), (&__sF[1])) : (*((&__sF[1]))->_p = ('/'), (int)*((&__sF[1]))->_p++))   ; \
Packit b40e2e
   (--((&__sF[1]))->_w < 0 ? ((&__sF[1]))->_w >= ((&__sF[1]))->_lbfsize ? (*((&__sF[1]))->_p = ('*')), *((&__sF[1]))->_p != '\n' ? (int)*((&__sF[1]))->_p++ : __swbuf('\n', (&__sF[1])) : __swbuf((int)('*'), (&__sF[1])) : (*((&__sF[1]))->_p = ('*'), (int)*((&__sF[1]))->_p++))   ; \
Packit b40e2e
while ((c = *sp++) != '\n') \
Packit b40e2e
   (--((&__sF[1]))->_w < 0 ? ((&__sF[1]))->_w >= ((&__sF[1]))->_lbfsize ? (*((&__sF[1]))->_p = (c)), *((&__sF[1]))->_p != '\n' ? (int)*((&__sF[1]))->_p++ : __swbuf('\n', (&__sF[1])) : __swbuf((int)(c), (&__sF[1])) : (*((&__sF[1]))->_p = (c), (int)*((&__sF[1]))->_p++))   ; \
Packit b40e2e
   (--((&__sF[1]))->_w < 0 ? ((&__sF[1]))->_w >= ((&__sF[1]))->_lbfsize ? (*((&__sF[1]))->_p = ('*')), *((&__sF[1]))->_p != '\n' ? (int)*((&__sF[1]))->_p++ : __swbuf('\n', (&__sF[1])) : __swbuf((int)('*'), (&__sF[1])) : (*((&__sF[1]))->_p = ('*'), (int)*((&__sF[1]))->_p++))   ; \
Packit b40e2e
   (--((&__sF[1]))->_w < 0 ? ((&__sF[1]))->_w >= ((&__sF[1]))->_lbfsize ? (*((&__sF[1]))->_p = ('/')), *((&__sF[1]))->_p != '\n' ? (int)*((&__sF[1]))->_p++ : __swbuf('\n', (&__sF[1])) : __swbuf((int)('/'), (&__sF[1])) : (*((&__sF[1]))->_p = ('/'), (int)*((&__sF[1]))->_p++))   ; \
Packit b40e2e
} \
Packit b40e2e
goto end_line; \
Packit b40e2e
} \
Packit b40e2e
 \
Packit b40e2e
default: \
Packit b40e2e
*tp++ = '/'; \
Packit b40e2e
sp--; \
Packit b40e2e
break; \
Packit b40e2e
} \
Packit b40e2e
break; \
Packit b40e2e
case '\r': \
Packit b40e2e
case '\f': \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
case '\v': \
Packit b40e2e
 \
Packit b40e2e
if (warn_level & 1) \
Packit b40e2e
cwarn( "Converted %.0s0x%02x to a space" \
Packit b40e2e
,  ((char *)  0 ) , c,  ((char *)  0 ) ); \
Packit b40e2e
case '\t': \
Packit b40e2e
case ' ': \
Packit b40e2e
 \
Packit b40e2e
if (temp < tp && *(tp - 1) != ' ') \
Packit b40e2e
*tp++ = ' '; \
Packit b40e2e
break; \
Packit b40e2e
case '"': \
Packit b40e2e
case '\'': \
Packit b40e2e
infile->bptr = sp; \
Packit b40e2e
 \
Packit b40e2e
tp = scanquote( c, tp, limit,  1 ); \
Packit b40e2e
if (tp ==  0 ) { \
Packit b40e2e
free( temp); \
Packit b40e2e
return parse_line(); \
Packit b40e2e
} \
Packit b40e2e
sp = infile->bptr; \
Packit b40e2e
break; \
Packit b40e2e
default: \
Packit b40e2e
if ( __istype((c),  0x00000200L ) ) { \
Packit b40e2e
cerror( \
Packit b40e2e
"Illegal control character %.0s0x%x, skipped the character" \
Packit b40e2e
,  ((char *)  0 ) , c,  ((char *)  0 ) ); \
Packit b40e2e
} else { \
Packit b40e2e
*tp++ = c; \
Packit b40e2e
} \
Packit b40e2e
break; \
Packit b40e2e
} \
Packit b40e2e
 \
Packit b40e2e
if (limit < tp) { \
Packit b40e2e
*tp =  '\0' ; \
Packit b40e2e
cfatal( "Too long line spliced by comments :%s" \
Packit b40e2e
, temp, 0,  ((char *)  0 ) ); \
Packit b40e2e
} \
Packit b40e2e
} \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
end_line: \
Packit b40e2e
 \
Packit b40e2e
if (temp < tp && *(tp - 1) == ' ') \
Packit b40e2e
tp--; \
Packit b40e2e
*tp++ = '\n'; \
Packit b40e2e
*tp =  '\0' ; \
Packit b40e2e
infile->bptr = strcpy( infile->buffer, temp); \
Packit b40e2e
free( temp); \
Packit b40e2e
if (macro_line != 0 && macro_line !=  65535U ) { \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
if (*(infile->buffer) == '#' \
Packit b40e2e
 \
Packit b40e2e
|| (*(infile->buffer) == '%' && *(infile->buffer + 1) == ':') \
Packit b40e2e
 \
Packit b40e2e
) \
Packit b40e2e
 \
Packit b40e2e
if (warn_level & 1) \
Packit b40e2e
cwarn( \
Packit b40e2e
"Macro started at line %.0s%u swallowed directive-like line" \
Packit b40e2e
,  ((char *)  0 ) , macro_line,  ((char *)  0 ) ); \
Packit b40e2e
} \
Packit b40e2e
return infile->buffer; \
Packit b40e2e
} \
Packit b40e2e
 \
Packit b40e2e
static char * \
Packit b40e2e
 \
Packit b40e2e
read_a_comment( char * sp) \
Packit b40e2e
{ \
Packit b40e2e
   int c; \
Packit b40e2e
 \
Packit b40e2e
if (keepcomments) { \
Packit b40e2e
   (--((&__sF[1]))->_w < 0 ? ((&__sF[1]))->_w >= ((&__sF[1]))->_lbfsize ? (*((&__sF[1]))->_p = ('/')), *((&__sF[1]))->_p != '\n' ? (int)*((&__sF[1]))->_p++ : __swbuf('\n', (&__sF[1])) : __swbuf((int)('/'), (&__sF[1])) : (*((&__sF[1]))->_p = ('/'), (int)*((&__sF[1]))->_p++))   ; \
Packit b40e2e
   (--((&__sF[1]))->_w < 0 ? ((&__sF[1]))->_w >= ((&__sF[1]))->_lbfsize ? (*((&__sF[1]))->_p = ('*')), *((&__sF[1]))->_p != '\n' ? (int)*((&__sF[1]))->_p++ : __swbuf('\n', (&__sF[1])) : __swbuf((int)('*'), (&__sF[1])) : (*((&__sF[1]))->_p = ('*'), (int)*((&__sF[1]))->_p++))   ; \
Packit b40e2e
} \
Packit b40e2e
c = *sp++; \
Packit b40e2e
 \
Packit b40e2e
while (1) { \
Packit b40e2e
if (keepcomments) \
Packit b40e2e
   (--((&__sF[1]))->_w < 0 ? ((&__sF[1]))->_w >= ((&__sF[1]))->_lbfsize ? (*((&__sF[1]))->_p = (c)), *((&__sF[1]))->_p != '\n' ? (int)*((&__sF[1]))->_p++ : __swbuf('\n', (&__sF[1])) : __swbuf((int)(c), (&__sF[1])) : (*((&__sF[1]))->_p = (c), (int)*((&__sF[1]))->_p++))   ; \
Packit b40e2e
 \
Packit b40e2e
switch (c) { \
Packit b40e2e
case '/': \
Packit b40e2e
if ((c = *sp++) != '*') \
Packit b40e2e
continue; \
Packit b40e2e
if (warn_level & 1) \
Packit b40e2e
cwarn( "\"/*\" in comment",  ((char *)  0 ) , 0,  ((char *)  0 ) ); \
Packit b40e2e
if (keepcomments) \
Packit b40e2e
   (--((&__sF[1]))->_w < 0 ? ((&__sF[1]))->_w >= ((&__sF[1]))->_lbfsize ? (*((&__sF[1]))->_p = (c)), *((&__sF[1]))->_p != '\n' ? (int)*((&__sF[1]))->_p++ : __swbuf('\n', (&__sF[1])) : __swbuf((int)(c), (&__sF[1])) : (*((&__sF[1]))->_p = (c), (int)*((&__sF[1]))->_p++))   ; \
Packit b40e2e
 \
Packit b40e2e
case '*': \
Packit b40e2e
if ((c = *sp++) != '/') \
Packit b40e2e
continue; \
Packit b40e2e
if (keepcomments) \
Packit b40e2e
   (--((&__sF[1]))->_w < 0 ? ((&__sF[1]))->_w >= ((&__sF[1]))->_lbfsize ? (*((&__sF[1]))->_p = (c)), *((&__sF[1]))->_p != '\n' ? (int)*((&__sF[1]))->_p++ : __swbuf('\n', (&__sF[1])) : __swbuf((int)(c), (&__sF[1])) : (*((&__sF[1]))->_p = (c), (int)*((&__sF[1]))->_p++))   ; \
Packit b40e2e
return sp; \
Packit b40e2e
case '\n': \
Packit b40e2e
if (! keepcomments) \
Packit b40e2e
wrongline =  1 ; \
Packit b40e2e
if ((sp = getline(  1 )) ==  0 ) \
Packit b40e2e
return  0 ; \
Packit b40e2e
break; \
Packit b40e2e
default: \
Packit b40e2e
break; \
Packit b40e2e
} \
Packit b40e2e
 \
Packit b40e2e
c = *sp++; \
Packit b40e2e
} \
Packit b40e2e
 \
Packit b40e2e
return sp; \
Packit b40e2e
} \
Packit b40e2e
 \
Packit b40e2e
static char * \
Packit b40e2e
 \
Packit b40e2e
getline( int in_comment) \
Packit b40e2e
{ \
Packit b40e2e
 \
Packit b40e2e
int converted =  0 ; \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
int esc; \
Packit b40e2e
 \
Packit b40e2e
int len; \
Packit b40e2e
char * ptr; \
Packit b40e2e
 \
Packit b40e2e
if (infile ==  0 ) \
Packit b40e2e
return  0 ; \
Packit b40e2e
ptr = infile->bptr = infile->buffer; \
Packit b40e2e
 \
Packit b40e2e
while (fgets( ptr, (int) (infile->buffer +  0x4000  - ptr), infile->fp) \
Packit b40e2e
!=  0 ) { \
Packit b40e2e
 \
Packit b40e2e
line++; \
Packit b40e2e
if (line ==  32768U  && (warn_level & 1)) \
Packit b40e2e
cwarn( "Line number %.0s\"%u\" got beyond range" \
Packit b40e2e
,  ((char *)  0 ) , line,  ((char *)  0 ) ); \
Packit b40e2e
 \
Packit b40e2e
if (debug & ( 2  |  32 )) { \
Packit b40e2e
printf( "\n#line %u (%s)", line \
Packit b40e2e
, infile->filename ? infile->filename : "NULL"); \
Packit b40e2e
dumpstring(  ((char *)  0 ) , ptr); \
Packit b40e2e
} \
Packit b40e2e
 \
Packit b40e2e
len = strlen( ptr); \
Packit b40e2e
if ( 0x4000  - 1 <= ptr - infile->buffer + len \
Packit b40e2e
&& *(ptr + len - 1) != '\n') { \
Packit b40e2e
if ( 0x4000  - 1 <= len) \
Packit b40e2e
cfatal( "Too long source line" \
Packit b40e2e
,  ((char *)  0 ) , 0,  ((char *)  0 ) ); \
Packit b40e2e
else \
Packit b40e2e
cfatal( "Too long logical line" \
Packit b40e2e
,  ((char *)  0 ) , 0,  ((char *)  0 ) ); \
Packit b40e2e
} \
Packit b40e2e
if (*(ptr + len - 1) != '\n') \
Packit b40e2e
break; \
Packit b40e2e
if (lflag) \
Packit b40e2e
put_source( ptr); \
Packit b40e2e
 \
Packit b40e2e
if (tflag) \
Packit b40e2e
converted = trigraph( ptr); \
Packit b40e2e
if (converted) \
Packit b40e2e
len = strlen( ptr); \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
len -= 2; \
Packit b40e2e
if (len >= 0) { \
Packit b40e2e
esc = (*(ptr + len) == '\\'); \
Packit b40e2e
if (esc) { \
Packit b40e2e
ptr = infile->bptr += len; \
Packit b40e2e
wrongline =  1 ; \
Packit b40e2e
continue; \
Packit b40e2e
} \
Packit b40e2e
} \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
if (ptr - infile->buffer + len + 2 >  0x1FD  + 1 && (warn_level & 2)) \
Packit b40e2e
 \
Packit b40e2e
cwarn( "Logical source line longer than %.0s%d bytes" \
Packit b40e2e
,  ((char *)  0 ) ,  0x1FD ,  ((char *)  0 ) ); \
Packit b40e2e
 \
Packit b40e2e
return infile->bptr = infile->buffer; \
Packit b40e2e
} \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
if (  (((infile->fp)->_flags &  0x0040 ) != 0)  ) \
Packit b40e2e
cfatal( "File read error",  ((char *)  0 ) , 0,  ((char *)  0 ) ); \
Packit b40e2e
at_eof( in_comment); \
Packit b40e2e
if (iflag) { \
Packit b40e2e
no_output--; \
Packit b40e2e
keepcomments = cflag &&  ifstack[0].stat  && !no_output; \
Packit b40e2e
} \
Packit b40e2e
return  0 ; \
Packit b40e2e
} \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
int \
Packit b40e2e
 \
Packit b40e2e
trigraph( char * in) \
Packit b40e2e
{ \
Packit b40e2e
const char * const tritext = "=(/)'-\0#[\\]^{|}~"; \
Packit b40e2e
int count = 0; \
Packit b40e2e
   const char * tp; \
Packit b40e2e
 \
Packit b40e2e
while ((in = strchr( in, '?')) !=  0 ) { \
Packit b40e2e
if (*++in != '?') \
Packit b40e2e
continue; \
Packit b40e2e
while (*++in == '?') \
Packit b40e2e
; \
Packit b40e2e
if ((tp = strchr( tritext, *in)) ==  0 ) \
Packit b40e2e
continue; \
Packit b40e2e
in[ -2] = tp[  10 ]; \
Packit b40e2e
in--; \
Packit b40e2e
memmove( in, in + 2, strlen( in + 1)); \
Packit b40e2e
count++; \
Packit b40e2e
} \
Packit b40e2e
 \
Packit b40e2e
if (count && (warn_level & 8)) \
Packit b40e2e
cwarn( "%.0s%d trigraph(s) converted" \
Packit b40e2e
,  ((char *)  0 ) , count,  ((char *)  0 ) ); \
Packit b40e2e
return count; \
Packit b40e2e
} \
Packit b40e2e
static void \
Packit b40e2e
 \
Packit b40e2e
at_eof( int in_comment) \
Packit b40e2e
{ \
Packit b40e2e
   const char * const format \
Packit b40e2e
= "End of %s with %.0d%s"; \
Packit b40e2e
const char * const unterm_if_format \
Packit b40e2e
= "End of %s within #if (#ifdef) section started at line %u"; \
Packit b40e2e
const char * const unterm_macro_format \
Packit b40e2e
= "End of %s within macro call started at line %u"; \
Packit b40e2e
const char * const input \
Packit b40e2e
= infile->parent ? "file" : "input"; \
Packit b40e2e
const char * const no_newline \
Packit b40e2e
= "no newline, skipped the line"; \
Packit b40e2e
const char * const unterm_com \
Packit b40e2e
= "unterminated comment, skipped the line"; \
Packit b40e2e
 \
Packit b40e2e
const char * const backsl = "\\, skipped the line"; \
Packit b40e2e
int len; \
Packit b40e2e
char * cp = infile->buffer; \
Packit b40e2e
IFINFO * ifp; \
Packit b40e2e
 \
Packit b40e2e
len = strlen( cp); \
Packit b40e2e
if (len && *(cp += (len - 1)) != '\n') { \
Packit b40e2e
line++; \
Packit b40e2e
*++cp = '\n'; \
Packit b40e2e
*++cp =  '\0' ; \
Packit b40e2e
cerror( format, input, 0, no_newline); \
Packit b40e2e
} \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
if (infile->buffer < infile->bptr) \
Packit b40e2e
cerror( format, input, 0, backsl); \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
if (in_comment) \
Packit b40e2e
cerror( format, input, 0, unterm_com); \
Packit b40e2e
 \
Packit b40e2e
if (infile->initif < ifptr) { \
Packit b40e2e
ifp = infile->initif + 1; \
Packit b40e2e
 \
Packit b40e2e
cerror( unterm_if_format, input, ifp->ifline,  ((char *)  0 ) ); \
Packit b40e2e
ifptr = infile->initif; \
Packit b40e2e
 ifstack[0].stat  = ifptr->stat; \
Packit b40e2e
} \
Packit b40e2e
 \
Packit b40e2e
if (macro_line != 0 && macro_line !=  65535U ) { \
Packit b40e2e
 \
Packit b40e2e
cerror( unterm_macro_format, input, macro_line,  ((char *)  0 ) ); \
Packit b40e2e
macro_line =  65535U ; \
Packit b40e2e
} \
Packit b40e2e
} \
Packit b40e2e
 \
Packit b40e2e
void \
Packit b40e2e
 \
Packit b40e2e
unget( void) \
Packit b40e2e
{ \
Packit b40e2e
if (infile !=  0 ) { \
Packit b40e2e
--infile->bptr; \
Packit b40e2e
 \
Packit b40e2e
if (infile->bptr < infile->buffer) \
Packit b40e2e
cfatal( "Bug: Too much pushback",  ((char *)  0 ) , 0,  ((char *)  0 ) ); \
Packit b40e2e
 \
Packit b40e2e
} \
Packit b40e2e
 \
Packit b40e2e
 \
Packit b40e2e
if (debug &  32 ) \
Packit b40e2e
dumpunget( "after unget"); \
Packit b40e2e
 \
Packit b40e2e
} \
Packit b40e2e
 \
Packit b40e2e
FILEINFO * \
Packit b40e2e
 \
Packit b40e2e
ungetstring( const char * text, const char * name) \
Packit b40e2e
{ \
Packit b40e2e
   FILEINFO * file; \
Packit b40e2e
size_t size; \
Packit b40e2e
 \
Packit b40e2e
if (text) \
Packit b40e2e
size = strlen( text) + 1; \
Packit b40e2e
else \
Packit b40e2e
size = 1; \
Packit b40e2e
file = getfile( name, size); \
Packit b40e2e
if (text) \
Packit b40e2e
memcpy( file->buffer, text, size); \
Packit b40e2e
else \
Packit b40e2e
*file->buffer =  '\0' ; \
Packit b40e2e
return file; \
Packit b40e2e
} \
Packit b40e2e
 \
Packit b40e2e
char * \
Packit b40e2e
 \
Packit b40e2e
savestring( const char * text) \
Packit b40e2e
{ \
Packit b40e2e
   char * result; \
Packit b40e2e
size_t size; \
Packit b40e2e
 \
Packit b40e2e
size = strlen( text) + 1; \
Packit b40e2e
result = xmalloc( size); \
Packit b40e2e
memcpy( result, text, size); \
Packit b40e2e
return result; \
Packit b40e2e
} \
Packit b40e2e
 \
Packit b40e2e
FILEINFO * \
Packit b40e2e
 \
Packit b40e2e
getfile( const char * name, size_t bufsize) \
Packit b40e2e
{ \
Packit b40e2e
   FILEINFO * file; \
Packit b40e2e
size_t s_name; \
Packit b40e2e
 \
Packit b40e2e
file = (FILEINFO *) xmalloc( sizeof (FILEINFO)); \
Packit b40e2e
file->buffer = xmalloc( bufsize); \
Packit b40e2e
if (name) { \
Packit b40e2e
s_name = strlen( name) + 1; \
Packit b40e2e
file->filename = (char *) xmalloc( s_name); \
Packit b40e2e
memcpy( file->filename, name, s_name); \
Packit b40e2e
} else { \
Packit b40e2e
file->filename =  0 ; \
Packit b40e2e
} \
Packit b40e2e
 \
Packit b40e2e
file->bptr = file->buffer; \
Packit b40e2e
return file; }                       \
Packit b40e2e
Packit b40e2e
#endif
Packit b40e2e
#endif
Packit b40e2e
#endif
Packit b40e2e
#endif
Packit b40e2e