# 1 "lev_main.c" # 1 "" # 1 "" # 1 "lev_main.c" # 14 "lev_main.c" # 1 "../include/hack.h" 1 # 11 "../include/hack.h" # 1 "../include/config.h" 1 # 39 "../include/config.h" # 1 "../include/config1.h" 1 # 40 "../include/config.h" 2 # 345 "../include/config.h" # 1 "../include/tradstdc.h" 1 # 88 "../include/tradstdc.h" # 1 "/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h" 1 3 4 # 43 "/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h" 3 4 typedef __builtin_va_list __gnuc_va_list; # 105 "/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/stdarg.h" 3 4 typedef __gnuc_va_list va_list; # 89 "../include/tradstdc.h" 2 # 222 "../include/tradstdc.h" typedef void * genericptr_t; # 346 "../include/config.h" 2 # 359 "../include/config.h" typedef signed char schar; # 373 "../include/config.h" typedef unsigned char uchar; # 443 "../include/config.h" # 1 "../include/global.h" 1 # 9 "../include/global.h" # 1 "/usr/include/stdio.h" 1 3 4 # 64 "/usr/include/stdio.h" 3 4 # 1 "/usr/include/_types.h" 1 3 4 # 27 "/usr/include/_types.h" 3 4 # 1 "/usr/include/sys/_types.h" 1 3 4 # 32 "/usr/include/sys/_types.h" 3 4 # 1 "/usr/include/sys/cdefs.h" 1 3 4 # 33 "/usr/include/sys/_types.h" 2 3 4 # 1 "/usr/include/machine/_types.h" 1 3 4 # 34 "/usr/include/machine/_types.h" 3 4 # 1 "/usr/include/i386/_types.h" 1 3 4 # 37 "/usr/include/i386/_types.h" 3 4 typedef signed char __int8_t; typedef unsigned char __uint8_t; typedef short __int16_t; typedef unsigned short __uint16_t; typedef int __int32_t; typedef unsigned int __uint32_t; typedef long long __int64_t; typedef unsigned long long __uint64_t; typedef long __darwin_intptr_t; typedef unsigned int __darwin_natural_t; # 70 "/usr/include/i386/_types.h" 3 4 typedef int __darwin_ct_rune_t; typedef union { char __mbstate8[128]; long long _mbstateL; } __mbstate_t; typedef __mbstate_t __darwin_mbstate_t; typedef int __darwin_ptrdiff_t; typedef long unsigned int __darwin_size_t; typedef __builtin_va_list __darwin_va_list; typedef int __darwin_wchar_t; typedef __darwin_wchar_t __darwin_rune_t; typedef int __darwin_wint_t; typedef unsigned long __darwin_clock_t; typedef __uint32_t __darwin_socklen_t; typedef long __darwin_ssize_t; typedef long __darwin_time_t; # 35 "/usr/include/machine/_types.h" 2 3 4 # 34 "/usr/include/sys/_types.h" 2 3 4 # 58 "/usr/include/sys/_types.h" 3 4 struct __darwin_pthread_handler_rec { void (*__routine)(void *); void *__arg; struct __darwin_pthread_handler_rec *__next; }; struct _opaque_pthread_attr_t { long __sig; char __opaque[36]; }; struct _opaque_pthread_cond_t { long __sig; char __opaque[24]; }; struct _opaque_pthread_condattr_t { long __sig; char __opaque[4]; }; struct _opaque_pthread_mutex_t { long __sig; char __opaque[40]; }; struct _opaque_pthread_mutexattr_t { long __sig; char __opaque[8]; }; struct _opaque_pthread_once_t { long __sig; char __opaque[4]; }; struct _opaque_pthread_rwlock_t { long __sig; char __opaque[124]; }; struct _opaque_pthread_rwlockattr_t { long __sig; char __opaque[12]; }; struct _opaque_pthread_t { long __sig; struct __darwin_pthread_handler_rec *__cleanup_stack; char __opaque[596]; }; # 94 "/usr/include/sys/_types.h" 3 4 typedef __int64_t __darwin_blkcnt_t; typedef __int32_t __darwin_blksize_t; typedef __int32_t __darwin_dev_t; typedef unsigned int __darwin_fsblkcnt_t; typedef unsigned int __darwin_fsfilcnt_t; typedef __uint32_t __darwin_gid_t; typedef __uint32_t __darwin_id_t; typedef __uint64_t __darwin_ino64_t; typedef __uint32_t __darwin_ino_t; typedef __darwin_natural_t __darwin_mach_port_name_t; typedef __darwin_mach_port_name_t __darwin_mach_port_t; typedef __uint16_t __darwin_mode_t; typedef __int64_t __darwin_off_t; typedef __int32_t __darwin_pid_t; typedef struct _opaque_pthread_attr_t __darwin_pthread_attr_t; typedef struct _opaque_pthread_cond_t __darwin_pthread_cond_t; typedef struct _opaque_pthread_condattr_t __darwin_pthread_condattr_t; typedef unsigned long __darwin_pthread_key_t; typedef struct _opaque_pthread_mutex_t __darwin_pthread_mutex_t; typedef struct _opaque_pthread_mutexattr_t __darwin_pthread_mutexattr_t; typedef struct _opaque_pthread_once_t __darwin_pthread_once_t; typedef struct _opaque_pthread_rwlock_t __darwin_pthread_rwlock_t; typedef struct _opaque_pthread_rwlockattr_t __darwin_pthread_rwlockattr_t; typedef struct _opaque_pthread_t *__darwin_pthread_t; typedef __uint32_t __darwin_sigset_t; typedef __int32_t __darwin_suseconds_t; typedef __uint32_t __darwin_uid_t; typedef __uint32_t __darwin_useconds_t; typedef unsigned char __darwin_uuid_t[16]; # 28 "/usr/include/_types.h" 2 3 4 typedef int __darwin_nl_item; typedef int __darwin_wctrans_t; typedef unsigned long __darwin_wctype_t; # 65 "/usr/include/stdio.h" 2 3 4 # 75 "/usr/include/stdio.h" 3 4 typedef __darwin_off_t off_t; typedef __darwin_size_t size_t; typedef __darwin_off_t fpos_t; # 98 "/usr/include/stdio.h" 3 4 struct __sbuf { unsigned char *_base; int _size; }; struct __sFILEX; # 132 "/usr/include/stdio.h" 3 4 typedef struct __sFILE { unsigned char *_p; int _r; int _w; short _flags; short _file; struct __sbuf _bf; int _lbfsize; void *_cookie; int (*_close)(void *); int (*_read) (void *, char *, int); fpos_t (*_seek) (void *, fpos_t, int); int (*_write)(void *, const char *, int); struct __sbuf _ub; struct __sFILEX *_extra; int _ur; unsigned char _ubuf[3]; unsigned char _nbuf[1]; struct __sbuf _lb; int _blksize; fpos_t _offset; } FILE; extern FILE *__stdinp; extern FILE *__stdoutp; extern FILE *__stderrp; # 248 "/usr/include/stdio.h" 3 4 void clearerr(FILE *); int fclose(FILE *); int feof(FILE *); int ferror(FILE *); int fflush(FILE *); int fgetc(FILE *); int fgetpos(FILE * , fpos_t *); char *fgets(char * , int, FILE *); FILE *fopen(const char * , const char * ); int fprintf(FILE * , const char * , ...) ; int fputc(int, FILE *); int fputs(const char * , FILE * ) __asm("_" "fputs" "$UNIX2003"); size_t fread(void * , size_t, size_t, FILE * ); FILE *freopen(const char * , const char * , FILE * ) __asm("_" "freopen" "$UNIX2003"); int fscanf(FILE * , const char * , ...) ; int fseek(FILE *, long, int); int fsetpos(FILE *, const fpos_t *); long ftell(FILE *); size_t fwrite(const void * , size_t, size_t, FILE * ) __asm("_" "fwrite" "$UNIX2003"); int getc(FILE *); int getchar(void); char *gets(char *); extern const int sys_nerr; extern const char *const sys_errlist[]; void perror(const char *); int printf(const char * , ...) ; int putc(int, FILE *); int putchar(int); int puts(const char *); int remove(const char *); int rename (const char *, const char *); void rewind(FILE *); int scanf(const char * , ...) ; void setbuf(FILE * , char * ); int setvbuf(FILE * , char * , int, size_t); int sprintf(char * , const char * , ...) ; int sscanf(const char * , const char * , ...) ; FILE *tmpfile(void); char *tmpnam(char *); int ungetc(int, FILE *); int vfprintf(FILE * , const char * , va_list) ; int vprintf(const char * , va_list) ; int vsprintf(char * , const char * , va_list) ; int asprintf(char **, const char *, ...) ; int vasprintf(char **, const char *, va_list) ; char *ctermid(char *); char *ctermid_r(char *); FILE *fdopen(int, const char *); char *fgetln(FILE *, size_t *); int fileno(FILE *); void flockfile(FILE *); const char *fmtcheck(const char *, const char *); int fpurge(FILE *); int fseeko(FILE *, off_t, int); off_t ftello(FILE *); int ftrylockfile(FILE *); void funlockfile(FILE *); int getc_unlocked(FILE *); int getchar_unlocked(void); int getw(FILE *); int pclose(FILE *); FILE *popen(const char *, const char *); int putc_unlocked(int, FILE *); int putchar_unlocked(int); int putw(int, FILE *); void setbuffer(FILE *, char *, int); int setlinebuf(FILE *); int snprintf(char * , size_t, const char * , ...) ; char *tempnam(const char *, const char *) __asm("_" "tempnam" "$UNIX2003"); int vfscanf(FILE * , const char * , va_list) ; int vscanf(const char * , va_list) ; int vsnprintf(char * , size_t, const char * , va_list) ; int vsscanf(const char * , const char * , va_list) ; FILE *zopen(const char *, const char *, int); FILE *funopen(const void *, int (*)(void *, char *, int), int (*)(void *, const char *, int), fpos_t (*)(void *, fpos_t, int), int (*)(void *)); # 371 "/usr/include/stdio.h" 3 4 int __srget(FILE *); int __svfscanf(FILE *, const char *, va_list) ; int __swbuf(int, FILE *); static __inline int __sputc(int _c, FILE *_p) { if (--_p->_w >= 0 || (_p->_w >= _p->_lbfsize && (char)_c != '\n')) return (*_p->_p++ = _c); else return (__swbuf(_c, _p)); } # 10 "../include/global.h" 2 # 61 "../include/global.h" typedef schar xchar; typedef xchar boolean; # 74 "../include/global.h" typedef uchar nhsym; # 110 "../include/global.h" # 1 "../include/coord.h" 1 # 9 "../include/coord.h" typedef struct nhcoord { xchar x,y; } coord; # 111 "../include/global.h" 2 # 121 "../include/global.h" # 1 "../include/unixconf.h" 1 # 285 "../include/unixconf.h" # 1 "/usr/include/time.h" 1 3 4 # 69 "/usr/include/time.h" 3 4 # 1 "/usr/include/_structs.h" 1 3 4 # 24 "/usr/include/_structs.h" 3 4 # 1 "/usr/include/sys/_structs.h" 1 3 4 # 88 "/usr/include/sys/_structs.h" 3 4 struct timespec { __darwin_time_t tv_sec; long tv_nsec; }; # 25 "/usr/include/_structs.h" 2 3 4 # 70 "/usr/include/time.h" 2 3 4 typedef __darwin_clock_t clock_t; # 87 "/usr/include/time.h" 3 4 typedef __darwin_time_t time_t; struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; long tm_gmtoff; char *tm_zone; }; # 113 "/usr/include/time.h" 3 4 extern char *tzname[]; extern int getdate_err; extern long timezone __asm("_" "timezone" "$UNIX2003"); extern int daylight; char *asctime(const struct tm *); clock_t clock(void) __asm("_" "clock" "$UNIX2003"); char *ctime(const time_t *); double difftime(time_t, time_t); struct tm *getdate(const char *); struct tm *gmtime(const time_t *); struct tm *localtime(const time_t *); time_t mktime(struct tm *) __asm("_" "mktime" "$UNIX2003"); size_t strftime(char * , size_t, const char * , const struct tm * ) __asm("_" "strftime" "$UNIX2003"); char *strptime(const char * , const char * , struct tm * ) __asm("_" "strptime" "$UNIX2003"); time_t time(time_t *); void tzset(void); char *asctime_r(const struct tm * , char * ); char *ctime_r(const time_t *, char *); struct tm *gmtime_r(const time_t * , struct tm * ); struct tm *localtime_r(const time_t * , struct tm * ); time_t posix2time(time_t); void tzsetwall(void); time_t time2posix(time_t); time_t timelocal(struct tm * const); time_t timegm(struct tm * const); int nanosleep(const struct timespec *, struct timespec *) __asm("_" "nanosleep" "$UNIX2003"); # 286 "../include/unixconf.h" 2 # 296 "../include/unixconf.h" # 1 "../include/system.h" 1 # 21 "../include/system.h" # 1 "/usr/include/sys/types.h" 1 3 4 # 72 "/usr/include/sys/types.h" 3 4 # 1 "/usr/include/sys/appleapiopts.h" 1 3 4 # 73 "/usr/include/sys/types.h" 2 3 4 # 1 "/usr/include/machine/types.h" 1 3 4 # 37 "/usr/include/machine/types.h" 3 4 # 1 "/usr/include/i386/types.h" 1 3 4 # 78 "/usr/include/i386/types.h" 3 4 typedef signed char int8_t; typedef unsigned char u_int8_t; typedef short int16_t; typedef unsigned short u_int16_t; typedef int int32_t; typedef unsigned int u_int32_t; typedef long long int64_t; typedef unsigned long long u_int64_t; typedef int32_t register_t; typedef __darwin_intptr_t intptr_t; typedef unsigned long int uintptr_t; typedef u_int64_t user_addr_t; typedef u_int64_t user_size_t; typedef int64_t user_ssize_t; typedef int64_t user_long_t; typedef u_int64_t user_ulong_t; typedef int64_t user_time_t; typedef u_int64_t syscall_arg_t; # 38 "/usr/include/machine/types.h" 2 3 4 # 79 "/usr/include/sys/types.h" 2 3 4 # 1 "/usr/include/machine/endian.h" 1 3 4 # 37 "/usr/include/machine/endian.h" 3 4 # 1 "/usr/include/i386/endian.h" 1 3 4 # 99 "/usr/include/i386/endian.h" 3 4 # 1 "/usr/include/sys/_endian.h" 1 3 4 # 124 "/usr/include/sys/_endian.h" 3 4 # 1 "/usr/include/libkern/_OSByteOrder.h" 1 3 4 # 66 "/usr/include/libkern/_OSByteOrder.h" 3 4 # 1 "/usr/include/libkern/i386/_OSByteOrder.h" 1 3 4 # 44 "/usr/include/libkern/i386/_OSByteOrder.h" 3 4 static __inline__ __uint16_t _OSSwapInt16( __uint16_t _data ) { return ((_data << 8) | (_data >> 8)); } static __inline__ __uint32_t _OSSwapInt32( __uint32_t _data ) { __asm__ ("bswap %0" : "+r" (_data)); return _data; } static __inline__ __uint64_t _OSSwapInt64( __uint64_t _data ) { __asm__ ("bswap %%eax\n\t" "bswap %%edx\n\t" "xchgl %%eax, %%edx" : "+A" (_data)); return _data; } # 67 "/usr/include/libkern/_OSByteOrder.h" 2 3 4 # 125 "/usr/include/sys/_endian.h" 2 3 4 # 100 "/usr/include/i386/endian.h" 2 3 4 # 38 "/usr/include/machine/endian.h" 2 3 4 # 82 "/usr/include/sys/types.h" 2 3 4 typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef unsigned int uint; typedef u_int64_t u_quad_t; typedef int64_t quad_t; typedef quad_t * qaddr_t; typedef char * caddr_t; typedef int32_t daddr_t; typedef __darwin_dev_t dev_t; typedef u_int32_t fixpt_t; typedef __darwin_blkcnt_t blkcnt_t; typedef __darwin_blksize_t blksize_t; typedef __darwin_gid_t gid_t; typedef __uint32_t in_addr_t; typedef __uint16_t in_port_t; typedef __darwin_ino_t ino_t; typedef __darwin_ino64_t ino64_t; typedef __int32_t key_t; typedef __darwin_mode_t mode_t; typedef __uint16_t nlink_t; typedef __darwin_id_t id_t; typedef __darwin_pid_t pid_t; # 176 "/usr/include/sys/types.h" 3 4 typedef int32_t segsz_t; typedef int32_t swblk_t; typedef __darwin_uid_t uid_t; # 235 "/usr/include/sys/types.h" 3 4 typedef __darwin_ssize_t ssize_t; # 245 "/usr/include/sys/types.h" 3 4 typedef __darwin_useconds_t useconds_t; typedef __darwin_suseconds_t suseconds_t; # 260 "/usr/include/sys/types.h" 3 4 # 1 "/usr/include/sys/_structs.h" 1 3 4 # 183 "/usr/include/sys/_structs.h" 3 4 typedef struct fd_set { __int32_t fds_bits[(((1024) + (((sizeof(__int32_t) * 8)) - 1)) / ((sizeof(__int32_t) * 8)))]; } fd_set; static __inline int __darwin_fd_isset(int _n, struct fd_set *_p) { return (_p->fds_bits[_n/(sizeof(__int32_t) * 8)] & (1<<(_n % (sizeof(__int32_t) * 8)))); } # 261 "/usr/include/sys/types.h" 2 3 4 typedef __int32_t fd_mask; # 318 "/usr/include/sys/types.h" 3 4 typedef __darwin_pthread_attr_t pthread_attr_t; typedef __darwin_pthread_cond_t pthread_cond_t; typedef __darwin_pthread_condattr_t pthread_condattr_t; typedef __darwin_pthread_mutex_t pthread_mutex_t; typedef __darwin_pthread_mutexattr_t pthread_mutexattr_t; typedef __darwin_pthread_once_t pthread_once_t; typedef __darwin_pthread_rwlock_t pthread_rwlock_t; typedef __darwin_pthread_rwlockattr_t pthread_rwlockattr_t; typedef __darwin_pthread_t pthread_t; typedef __darwin_pthread_key_t pthread_key_t; typedef __darwin_fsblkcnt_t fsblkcnt_t; typedef __darwin_fsfilcnt_t fsfilcnt_t; # 22 "../include/system.h" 2 # 92 "../include/system.h" extern long lrand48(); extern void srand48(); extern void exit (int); # 118 "../include/system.h" extern void free (genericptr_t); # 127 "../include/system.h" extern void perror (const char *); extern void qsort (genericptr_t,size_t,size_t, int(*)(const void *,const void *)); # 301 "../include/system.h" # 1 "/usr/include/string.h" 1 3 4 # 80 "/usr/include/string.h" 3 4 void *memchr(const void *, int, size_t); int memcmp(const void *, const void *, size_t); void *memcpy(void *, const void *, size_t); void *memmove(void *, const void *, size_t); void *memset(void *, int, size_t); char *stpcpy(char *, const char *); char *strcasestr(const char *, const char *); char *strcat(char *, const char *); char *strchr(const char *, int); int strcmp(const char *, const char *); int strcoll(const char *, const char *); char *strcpy(char *, const char *); size_t strcspn(const char *, const char *); char *strerror(int) __asm("_" "strerror" "$UNIX2003"); int strerror_r(int, char *, size_t); size_t strlen(const char *); char *strncat(char *, const char *, size_t); int strncmp(const char *, const char *, size_t); char *strncpy(char *, const char *, size_t); char *strnstr(const char *, const char *, size_t); char *strpbrk(const char *, const char *); char *strrchr(const char *, int); size_t strspn(const char *, const char *); char *strstr(const char *, const char *); char *strtok(char *, const char *); size_t strxfrm(char *, const char *, size_t); void *memccpy(void *, const void *, int, size_t); char *strtok_r(char *, const char *, char **); char *strdup(const char *); int bcmp(const void *, const void *, size_t); void bcopy(const void *, void *, size_t); void bzero(void *, size_t); int ffs(int); int ffsl(long); int fls(int); int flsl(long); char *index(const char *, int); void memset_pattern4(void *, const void *, size_t); void memset_pattern8(void *, const void *, size_t); void memset_pattern16(void *, const void *, size_t); char *rindex(const char *, int); int strcasecmp(const char *, const char *); size_t strlcat(char *, const char *, size_t); size_t strlcpy(char *, const char *, size_t); void strmode(int, char *); int strncasecmp(const char *, const char *, size_t); char *strsep(char **, const char *); char *strsignal(int sig); void swab(const void * , void * , ssize_t); # 302 "../include/system.h" 2 # 353 "../include/system.h" extern unsigned sleep(); # 362 "../include/system.h" extern char *getenv (const char *); extern char *getlogin(); extern pid_t getpid(void); extern uid_t getuid(void); extern gid_t getgid(void); # 507 "../include/system.h" extern int tgetent (char *,const char *); extern void tputs (const char *,int,int (*)()); extern int tgetnum (const char *); extern int tgetflag (const char *); extern char *tgetstr (const char *,char **); extern char *tgoto (const char *,int,int); # 524 "../include/system.h" extern struct tm *localtime (const time_t *); extern time_t time (time_t *); # 297 "../include/unixconf.h" 2 # 1 "/usr/include/stdlib.h" 1 3 4 # 61 "/usr/include/stdlib.h" 3 4 # 1 "/usr/include/available.h" 1 3 4 # 62 "/usr/include/stdlib.h" 2 3 4 # 1 "/usr/include/sys/wait.h" 1 3 4 # 79 "/usr/include/sys/wait.h" 3 4 typedef enum { P_ALL, P_PID, P_PGID } idtype_t; # 116 "/usr/include/sys/wait.h" 3 4 # 1 "/usr/include/sys/signal.h" 1 3 4 # 81 "/usr/include/sys/signal.h" 3 4 # 1 "/usr/include/machine/signal.h" 1 3 4 # 34 "/usr/include/machine/signal.h" 3 4 # 1 "/usr/include/i386/signal.h" 1 3 4 # 39 "/usr/include/i386/signal.h" 3 4 typedef int sig_atomic_t; # 55 "/usr/include/i386/signal.h" 3 4 # 1 "/usr/include/i386/_structs.h" 1 3 4 # 56 "/usr/include/i386/signal.h" 2 3 4 # 35 "/usr/include/machine/signal.h" 2 3 4 # 82 "/usr/include/sys/signal.h" 2 3 4 # 154 "/usr/include/sys/signal.h" 3 4 # 1 "/usr/include/sys/_structs.h" 1 3 4 # 57 "/usr/include/sys/_structs.h" 3 4 # 1 "/usr/include/machine/_structs.h" 1 3 4 # 31 "/usr/include/machine/_structs.h" 3 4 # 1 "/usr/include/i386/_structs.h" 1 3 4 # 38 "/usr/include/i386/_structs.h" 3 4 # 1 "/usr/include/mach/i386/_structs.h" 1 3 4 # 43 "/usr/include/mach/i386/_structs.h" 3 4 struct __darwin_i386_thread_state { unsigned int __eax; unsigned int __ebx; unsigned int __ecx; unsigned int __edx; unsigned int __edi; unsigned int __esi; unsigned int __ebp; unsigned int __esp; unsigned int __ss; unsigned int __eflags; unsigned int __eip; unsigned int __cs; unsigned int __ds; unsigned int __es; unsigned int __fs; unsigned int __gs; }; # 89 "/usr/include/mach/i386/_structs.h" 3 4 struct __darwin_fp_control { unsigned short __invalid :1, __denorm :1, __zdiv :1, __ovrfl :1, __undfl :1, __precis :1, :2, __pc :2, __rc :2, :1, :3; }; typedef struct __darwin_fp_control __darwin_fp_control_t; # 147 "/usr/include/mach/i386/_structs.h" 3 4 struct __darwin_fp_status { unsigned short __invalid :1, __denorm :1, __zdiv :1, __ovrfl :1, __undfl :1, __precis :1, __stkflt :1, __errsumm :1, __c0 :1, __c1 :1, __c2 :1, __tos :3, __c3 :1, __busy :1; }; typedef struct __darwin_fp_status __darwin_fp_status_t; # 191 "/usr/include/mach/i386/_structs.h" 3 4 struct __darwin_mmst_reg { char __mmst_reg[10]; char __mmst_rsrv[6]; }; # 210 "/usr/include/mach/i386/_structs.h" 3 4 struct __darwin_xmm_reg { char __xmm_reg[16]; }; # 232 "/usr/include/mach/i386/_structs.h" 3 4 struct __darwin_i386_float_state { int __fpu_reserved[2]; struct __darwin_fp_control __fpu_fcw; struct __darwin_fp_status __fpu_fsw; __uint8_t __fpu_ftw; __uint8_t __fpu_rsrv1; __uint16_t __fpu_fop; __uint32_t __fpu_ip; __uint16_t __fpu_cs; __uint16_t __fpu_rsrv2; __uint32_t __fpu_dp; __uint16_t __fpu_ds; __uint16_t __fpu_rsrv3; __uint32_t __fpu_mxcsr; __uint32_t __fpu_mxcsrmask; struct __darwin_mmst_reg __fpu_stmm0; struct __darwin_mmst_reg __fpu_stmm1; struct __darwin_mmst_reg __fpu_stmm2; struct __darwin_mmst_reg __fpu_stmm3; struct __darwin_mmst_reg __fpu_stmm4; struct __darwin_mmst_reg __fpu_stmm5; struct __darwin_mmst_reg __fpu_stmm6; struct __darwin_mmst_reg __fpu_stmm7; struct __darwin_xmm_reg __fpu_xmm0; struct __darwin_xmm_reg __fpu_xmm1; struct __darwin_xmm_reg __fpu_xmm2; struct __darwin_xmm_reg __fpu_xmm3; struct __darwin_xmm_reg __fpu_xmm4; struct __darwin_xmm_reg __fpu_xmm5; struct __darwin_xmm_reg __fpu_xmm6; struct __darwin_xmm_reg __fpu_xmm7; char __fpu_rsrv4[14*16]; int __fpu_reserved1; }; # 308 "/usr/include/mach/i386/_structs.h" 3 4 struct __darwin_i386_exception_state { unsigned int __trapno; unsigned int __err; unsigned int __faultvaddr; }; # 326 "/usr/include/mach/i386/_structs.h" 3 4 struct __darwin_x86_debug_state32 { unsigned int __dr0; unsigned int __dr1; unsigned int __dr2; unsigned int __dr3; unsigned int __dr4; unsigned int __dr5; unsigned int __dr6; unsigned int __dr7; }; # 358 "/usr/include/mach/i386/_structs.h" 3 4 struct __darwin_x86_thread_state64 { __uint64_t __rax; __uint64_t __rbx; __uint64_t __rcx; __uint64_t __rdx; __uint64_t __rdi; __uint64_t __rsi; __uint64_t __rbp; __uint64_t __rsp; __uint64_t __r8; __uint64_t __r9; __uint64_t __r10; __uint64_t __r11; __uint64_t __r12; __uint64_t __r13; __uint64_t __r14; __uint64_t __r15; __uint64_t __rip; __uint64_t __rflags; __uint64_t __cs; __uint64_t __fs; __uint64_t __gs; }; # 413 "/usr/include/mach/i386/_structs.h" 3 4 struct __darwin_x86_float_state64 { int __fpu_reserved[2]; struct __darwin_fp_control __fpu_fcw; struct __darwin_fp_status __fpu_fsw; __uint8_t __fpu_ftw; __uint8_t __fpu_rsrv1; __uint16_t __fpu_fop; __uint32_t __fpu_ip; __uint16_t __fpu_cs; __uint16_t __fpu_rsrv2; __uint32_t __fpu_dp; __uint16_t __fpu_ds; __uint16_t __fpu_rsrv3; __uint32_t __fpu_mxcsr; __uint32_t __fpu_mxcsrmask; struct __darwin_mmst_reg __fpu_stmm0; struct __darwin_mmst_reg __fpu_stmm1; struct __darwin_mmst_reg __fpu_stmm2; struct __darwin_mmst_reg __fpu_stmm3; struct __darwin_mmst_reg __fpu_stmm4; struct __darwin_mmst_reg __fpu_stmm5; struct __darwin_mmst_reg __fpu_stmm6; struct __darwin_mmst_reg __fpu_stmm7; struct __darwin_xmm_reg __fpu_xmm0; struct __darwin_xmm_reg __fpu_xmm1; struct __darwin_xmm_reg __fpu_xmm2; struct __darwin_xmm_reg __fpu_xmm3; struct __darwin_xmm_reg __fpu_xmm4; struct __darwin_xmm_reg __fpu_xmm5; struct __darwin_xmm_reg __fpu_xmm6; struct __darwin_xmm_reg __fpu_xmm7; struct __darwin_xmm_reg __fpu_xmm8; struct __darwin_xmm_reg __fpu_xmm9; struct __darwin_xmm_reg __fpu_xmm10; struct __darwin_xmm_reg __fpu_xmm11; struct __darwin_xmm_reg __fpu_xmm12; struct __darwin_xmm_reg __fpu_xmm13; struct __darwin_xmm_reg __fpu_xmm14; struct __darwin_xmm_reg __fpu_xmm15; char __fpu_rsrv4[6*16]; int __fpu_reserved1; }; # 517 "/usr/include/mach/i386/_structs.h" 3 4 struct __darwin_x86_exception_state64 { unsigned int __trapno; unsigned int __err; __uint64_t __faultvaddr; }; # 535 "/usr/include/mach/i386/_structs.h" 3 4 struct __darwin_x86_debug_state64 { __uint64_t __dr0; __uint64_t __dr1; __uint64_t __dr2; __uint64_t __dr3; __uint64_t __dr4; __uint64_t __dr5; __uint64_t __dr6; __uint64_t __dr7; }; # 39 "/usr/include/i386/_structs.h" 2 3 4 # 48 "/usr/include/i386/_structs.h" 3 4 struct __darwin_mcontext32 { struct __darwin_i386_exception_state __es; struct __darwin_i386_thread_state __ss; struct __darwin_i386_float_state __fs; }; # 68 "/usr/include/i386/_structs.h" 3 4 struct __darwin_mcontext64 { struct __darwin_x86_exception_state64 __es; struct __darwin_x86_thread_state64 __ss; struct __darwin_x86_float_state64 __fs; }; # 94 "/usr/include/i386/_structs.h" 3 4 typedef struct __darwin_mcontext32 *mcontext_t; # 32 "/usr/include/machine/_structs.h" 2 3 4 # 58 "/usr/include/sys/_structs.h" 2 3 4 # 75 "/usr/include/sys/_structs.h" 3 4 struct __darwin_sigaltstack { void *ss_sp; __darwin_size_t ss_size; int ss_flags; }; # 128 "/usr/include/sys/_structs.h" 3 4 struct __darwin_ucontext { int uc_onstack; __darwin_sigset_t uc_sigmask; struct __darwin_sigaltstack uc_stack; struct __darwin_ucontext *uc_link; __darwin_size_t uc_mcsize; struct __darwin_mcontext32 *uc_mcontext; }; # 218 "/usr/include/sys/_structs.h" 3 4 typedef struct __darwin_sigaltstack stack_t; # 227 "/usr/include/sys/_structs.h" 3 4 typedef struct __darwin_ucontext ucontext_t; # 155 "/usr/include/sys/signal.h" 2 3 4 # 168 "/usr/include/sys/signal.h" 3 4 typedef __darwin_sigset_t sigset_t; # 181 "/usr/include/sys/signal.h" 3 4 union sigval { int sival_int; void *sival_ptr; }; struct sigevent { int sigev_notify; int sigev_signo; union sigval sigev_value; void (*sigev_notify_function)(union sigval); pthread_attr_t *sigev_notify_attributes; }; typedef struct __siginfo { int si_signo; int si_errno; int si_code; pid_t si_pid; uid_t si_uid; int si_status; void *si_addr; union sigval si_value; long si_band; unsigned long __pad[7]; } siginfo_t; # 292 "/usr/include/sys/signal.h" 3 4 union __sigaction_u { void (*__sa_handler)(int); void (*__sa_sigaction)(int, struct __siginfo *, void *); }; struct __sigaction { union __sigaction_u __sigaction_u; void (*sa_tramp)(void *, int, int, siginfo_t *, void *); sigset_t sa_mask; int sa_flags; }; struct sigaction { union __sigaction_u __sigaction_u; sigset_t sa_mask; int sa_flags; }; # 354 "/usr/include/sys/signal.h" 3 4 typedef void (*sig_t)(int); # 371 "/usr/include/sys/signal.h" 3 4 struct sigvec { void (*sv_handler)(int); int sv_mask; int sv_flags; }; # 390 "/usr/include/sys/signal.h" 3 4 struct sigstack { char *ss_sp; int ss_onstack; }; # 412 "/usr/include/sys/signal.h" 3 4 void (*signal(int, void (*)(int)))(int); # 117 "/usr/include/sys/wait.h" 2 3 4 # 1 "/usr/include/sys/resource.h" 1 3 4 # 76 "/usr/include/sys/resource.h" 3 4 # 1 "/usr/include/sys/_structs.h" 1 3 4 # 100 "/usr/include/sys/_structs.h" 3 4 struct timeval { __darwin_time_t tv_sec; __darwin_suseconds_t tv_usec; }; # 77 "/usr/include/sys/resource.h" 2 3 4 # 88 "/usr/include/sys/resource.h" 3 4 typedef __uint64_t rlim_t; # 142 "/usr/include/sys/resource.h" 3 4 struct rusage { struct timeval ru_utime; struct timeval ru_stime; # 153 "/usr/include/sys/resource.h" 3 4 long ru_maxrss; long ru_ixrss; long ru_idrss; long ru_isrss; long ru_minflt; long ru_majflt; long ru_nswap; long ru_inblock; long ru_oublock; long ru_msgsnd; long ru_msgrcv; long ru_nsignals; long ru_nvcsw; long ru_nivcsw; }; # 213 "/usr/include/sys/resource.h" 3 4 struct rlimit { rlim_t rlim_cur; rlim_t rlim_max; }; # 235 "/usr/include/sys/resource.h" 3 4 int getpriority(int, id_t); int getiopolicy_np(int, int); int getrlimit(int, struct rlimit *) __asm("_" "getrlimit" "$UNIX2003"); int getrusage(int, struct rusage *); int setpriority(int, id_t, int); int setiopolicy_np(int, int, int); int setrlimit(int, const struct rlimit *) __asm("_" "setrlimit" "$UNIX2003"); # 118 "/usr/include/sys/wait.h" 2 3 4 # 201 "/usr/include/sys/wait.h" 3 4 union wait { int w_status; struct { unsigned int w_Termsig:7, w_Coredump:1, w_Retcode:8, w_Filler:16; } w_T; struct { unsigned int w_Stopval:8, w_Stopsig:8, w_Filler:16; } w_S; }; # 254 "/usr/include/sys/wait.h" 3 4 pid_t wait(int *) __asm("_" "wait" "$UNIX2003"); pid_t waitpid(pid_t, int *, int) __asm("_" "waitpid" "$UNIX2003"); int waitid(idtype_t, id_t, siginfo_t *, int) __asm("_" "waitid" "$UNIX2003"); pid_t wait3(int *, int, struct rusage *); pid_t wait4(pid_t, int *, int, struct rusage *); # 66 "/usr/include/stdlib.h" 2 3 4 # 1 "/usr/include/alloca.h" 1 3 4 # 35 "/usr/include/alloca.h" 3 4 void *alloca(size_t); # 68 "/usr/include/stdlib.h" 2 3 4 # 81 "/usr/include/stdlib.h" 3 4 typedef __darwin_ct_rune_t ct_rune_t; typedef __darwin_rune_t rune_t; typedef __darwin_wchar_t wchar_t; typedef struct { int quot; int rem; } div_t; typedef struct { long quot; long rem; } ldiv_t; typedef struct { long long quot; long long rem; } lldiv_t; # 134 "/usr/include/stdlib.h" 3 4 extern int __mb_cur_max; # 144 "/usr/include/stdlib.h" 3 4 void abort(void) __attribute__((__noreturn__)); int abs(int) __attribute__((__const__)); int atexit(void (*)(void)); double atof(const char *); int atoi(const char *); long atol(const char *); long long atoll(const char *); void *bsearch(const void *, const void *, size_t, size_t, int (*)(const void *, const void *)); void *calloc(size_t, size_t); div_t div(int, int) __attribute__((__const__)); void exit(int) __attribute__((__noreturn__)); void free(void *); char *getenv(const char *); long labs(long) __attribute__((__const__)); ldiv_t ldiv(long, long) __attribute__((__const__)); long long llabs(long long); lldiv_t lldiv(long long, long long); void *malloc(size_t); int mblen(const char *, size_t); size_t mbstowcs(wchar_t * , const char * , size_t); int mbtowc(wchar_t * , const char * , size_t); void qsort(void *, size_t, size_t, int (*)(const void *, const void *)); int rand(void); void *realloc(void *, size_t); void srand(unsigned); double strtod(const char *, char **) __asm("_" "strtod" "$UNIX2003"); float strtof(const char *, char **) __asm("_" "strtof" "$UNIX2003"); long strtol(const char *, char **, int); long double strtold(const char *, char **) ; long long strtoll(const char *, char **, int); unsigned long strtoul(const char *, char **, int); unsigned long long strtoull(const char *, char **, int); int system(const char *) __asm("_" "system" "$UNIX2003"); size_t wcstombs(char * , const wchar_t * , size_t); int wctomb(char *, wchar_t); void _Exit(int) __attribute__((__noreturn__)); long a64l(const char *); double drand48(void); char *ecvt(double, int, int *, int *); double erand48(unsigned short[3]); char *fcvt(double, int, int *, int *); char *gcvt(double, int, char *); int getsubopt(char **, char * const *, char **); int grantpt(int); char *initstate(unsigned, char *, size_t); long jrand48(unsigned short[3]); char *l64a(long); void lcong48(unsigned short[7]); long lrand48(void); char *mktemp(char *); int mkstemp(char *); long mrand48(void); long nrand48(unsigned short[3]); int posix_openpt(int); char *ptsname(int); int putenv(char *) __asm("_" "putenv" "$UNIX2003"); long random(void); int rand_r(unsigned *); char *realpath(const char * , char * ) __asm("_" "realpath" "$DARWIN_EXTSN"); unsigned short *seed48(unsigned short[3]); int setenv(const char *, const char *, int) __asm("_" "setenv" "$UNIX2003"); void setkey(const char *) __asm("_" "setkey" "$UNIX2003"); char *setstate(const char *); void srand48(long); void srandom(unsigned); int unlockpt(int); int unsetenv(const char *) __asm("_" "unsetenv" "$UNIX2003"); # 266 "/usr/include/stdlib.h" 3 4 u_int32_t arc4random(void); void arc4random_addrandom(unsigned char *dat, int datlen); void arc4random_stir(void); char *cgetcap(char *, const char *, int); int cgetclose(void); int cgetent(char **, char **, const char *); int cgetfirst(char **, char **); int cgetmatch(const char *, const char *); int cgetnext(char **, char **); int cgetnum(char *, const char *, long *); int cgetset(const char *); int cgetstr(char *, const char *, char **); int cgetustr(char *, const char *, char **); int daemon(int, int) __asm("_" "daemon" "$1050") __attribute__((deprecated)); char *devname(dev_t, mode_t); char *devname_r(dev_t, mode_t, char *buf, int len); char *getbsize(int *, long *); int getloadavg(double [], int); const char *getprogname(void); int heapsort(void *, size_t, size_t, int (*)(const void *, const void *)); int mergesort(void *, size_t, size_t, int (*)(const void *, const void *)); void qsort_r(void *, size_t, size_t, void *, int (*)(void *, const void *, const void *)); int radixsort(const unsigned char **, int, const unsigned char *, unsigned); void setprogname(const char *); int sradixsort(const unsigned char **, int, const unsigned char *, unsigned); void sranddev(void); void srandomdev(void); void *reallocf(void *, size_t); long long strtoq(const char *, char **, int); unsigned long long strtouq(const char *, char **, int); extern char *suboptarg; void *valloc(size_t); # 300 "../include/unixconf.h" 2 # 1 "/usr/include/unistd.h" 1 3 4 # 72 "/usr/include/unistd.h" 3 4 # 1 "/usr/include/sys/unistd.h" 1 3 4 # 138 "/usr/include/sys/unistd.h" 3 4 struct accessx_descriptor { unsigned int ad_name_offset; int ad_flags; int ad_pad[2]; }; # 73 "/usr/include/unistd.h" 2 3 4 # 133 "/usr/include/unistd.h" 3 4 typedef __darwin_uuid_t uuid_t; # 414 "/usr/include/unistd.h" 3 4 void _exit(int) __attribute__((__noreturn__)); int access(const char *, int); unsigned int alarm(unsigned int); int chdir(const char *); int chown(const char *, uid_t, gid_t); int close(int) __asm("_" "close" "$UNIX2003"); size_t confstr(int, char *, size_t) __asm("_" "confstr" "$UNIX2003"); char *crypt(const char *, const char *); char *ctermid(char *); int dup(int); int dup2(int, int); void encrypt(char *, int) __asm("_" "encrypt" "$UNIX2003"); int execl(const char *, const char *, ...); int execle(const char *, const char *, ...); int execlp(const char *, const char *, ...); int execv(const char *, char * const *); int execve(const char *, char * const *, char * const *); int execvp(const char *, char * const *); int fchown(int, uid_t, gid_t); int fchdir(int); pid_t fork(void); long fpathconf(int, int); int fsync(int) __asm("_" "fsync" "$UNIX2003"); int ftruncate(int, off_t); char *getcwd(char *, size_t); gid_t getegid(void); uid_t geteuid(void); gid_t getgid(void); int getgroups(int, gid_t []); long gethostid(void); int gethostname(char *, size_t); char *getlogin(void); int getlogin_r(char *, size_t); int getopt(int, char * const [], const char *) __asm("_" "getopt" "$UNIX2003"); pid_t getpgid(pid_t); pid_t getpgrp(void); pid_t getpid(void); pid_t getppid(void); pid_t getsid(pid_t); uid_t getuid(void); char *getwd(char *); int isatty(int); int lchown(const char *, uid_t, gid_t) __asm("_" "lchown" "$UNIX2003"); int link(const char *, const char *); int lockf(int, int, off_t) __asm("_" "lockf" "$UNIX2003"); off_t lseek(int, off_t, int); int nice(int) __asm("_" "nice" "$UNIX2003"); long pathconf(const char *, int); int pause(void) __asm("_" "pause" "$UNIX2003"); int pipe(int [2]); ssize_t pread(int, void *, size_t, off_t) __asm("_" "pread" "$UNIX2003"); ssize_t pwrite(int, const void *, size_t, off_t) __asm("_" "pwrite" "$UNIX2003"); ssize_t read(int, void *, size_t) __asm("_" "read" "$UNIX2003"); ssize_t readlink(const char * , char * , size_t); int rmdir(const char *); int setegid(gid_t); int seteuid(uid_t); int setgid(gid_t); int setpgid(pid_t, pid_t); pid_t setpgrp(void) __asm("_" "setpgrp" "$UNIX2003"); int setregid(gid_t, gid_t) __asm("_" "setregid" "$UNIX2003"); int setreuid(uid_t, uid_t) __asm("_" "setreuid" "$UNIX2003"); pid_t setsid(void); int setuid(uid_t); unsigned int sleep(unsigned int) __asm("_" "sleep" "$UNIX2003"); void swab(const void * , void * , ssize_t); int symlink(const char *, const char *); void sync(void); long sysconf(int); pid_t tcgetpgrp(int); int tcsetpgrp(int, pid_t); int truncate(const char *, off_t); char *ttyname(int); int ttyname_r(int, char *, size_t) __asm("_" "ttyname_r" "$UNIX2003"); useconds_t ualarm(useconds_t, useconds_t); int unlink(const char *); int usleep(useconds_t) __asm("_" "usleep" "$UNIX2003"); pid_t vfork(void); ssize_t write(int, const void *, size_t) __asm("_" "write" "$UNIX2003"); extern char *optarg; extern int optind, opterr, optopt; # 1 "/usr/include/sys/select.h" 1 3 4 # 78 "/usr/include/sys/select.h" 3 4 # 1 "/usr/include/sys/_structs.h" 1 3 4 # 79 "/usr/include/sys/select.h" 2 3 4 # 134 "/usr/include/sys/select.h" 3 4 int pselect(int, fd_set * , fd_set * , fd_set * , const struct timespec * , const sigset_t * ) __asm("_" "pselect" "$UNIX2003") ; # 1 "/usr/include/sys/_select.h" 1 3 4 # 39 "/usr/include/sys/_select.h" 3 4 int select(int, fd_set * , fd_set * , fd_set * , struct timeval * ) __asm("_" "select" "$UNIX2003") ; # 153 "/usr/include/sys/select.h" 2 3 4 # 516 "/usr/include/unistd.h" 2 3 4 void _Exit(int) __attribute__((__noreturn__)); int accessx_np(const struct accessx_descriptor *, size_t, int *, uid_t); int acct(const char *); int add_profil(char *, size_t, unsigned long, unsigned int); void *brk(const void *); int chroot(const char *); void endusershell(void); int execvP(const char *, const char *, char * const *); char *fflagstostr(unsigned long); int getdtablesize(void); int getdomainname(char *, int); int getgrouplist(const char *, int, int *, int *); mode_t getmode(const void *, mode_t); int getpagesize(void) __attribute__((__const__)); char *getpass(const char *); int getpeereid(int, uid_t *, gid_t *); int getpgid(pid_t _pid); int getsgroups_np(int *, uuid_t); int getsid(pid_t _pid); char *getusershell(void); int getwgroups_np(int *, uuid_t); int initgroups(const char *, int); int iruserok(unsigned long, int, const char *, const char *); int iruserok_sa(const void *, int, int, const char *, const char *); int issetugid(void); char *mkdtemp(char *); int mknod(const char *, mode_t, dev_t); int mkstemp(char *); int mkstemps(char *, int); char *mktemp(char *); int nfssvc(int, void *); int profil(char *, size_t, unsigned long, unsigned int); int pthread_setugid_np(uid_t, gid_t); int pthread_getugid_np( uid_t *, gid_t *); int rcmd(char **, int, const char *, const char *, const char *, int *); int rcmd_af(char **, int, const char *, const char *, const char *, int *, int); int reboot(int); int revoke(const char *); int rresvport(int *); int rresvport_af(int *, int); int ruserok(const char *, int, const char *, const char *); void *sbrk(int); int setdomainname(const char *, int); int setgroups(int, const gid_t *); void sethostid(long); int sethostname(const char *, int); void setkey(const char *) __asm("_" "setkey" "$UNIX2003"); int setlogin(const char *); void *setmode(const char *); int setrgid(gid_t); int setruid(uid_t); int setsgroups_np(int, const uuid_t); void setusershell(void); int setwgroups_np(int, const uuid_t); int strtofflags(char **, unsigned long *, unsigned long *); int swapon(const char *); int syscall(int, ...); int ttyslot(void); int undelete(const char *); int unwhiteout(const char *); void *valloc(size_t); extern char *suboptarg; int getsubopt(char **, char * const *, char **); # 597 "/usr/include/unistd.h" 3 4 int getattrlist(const char*,void*,void*,size_t,unsigned long) __asm("_" "getattrlist" "$UNIX2003"); int setattrlist(const char*,void*,void*,size_t,unsigned long) __asm("_" "setattrlist" "$UNIX2003"); int exchangedata(const char*,const char*,unsigned long); int getdirentriesattr(int,void*,void*,size_t,unsigned long*,unsigned long*,unsigned long*,unsigned long); int searchfs(const char*,void*,void*,unsigned long,unsigned long,void*); int fsctl(const char *,unsigned long,void*,unsigned long); extern int optreset; # 301 "../include/unixconf.h" 2 # 122 "../include/global.h" 2 # 274 "../include/global.h" extern long *alloc (unsigned int); extern char *dupstr (const char *); struct version_info { unsigned long incarnation; unsigned long feature_set; unsigned long entity_count; unsigned long struct_sizes1; unsigned long struct_sizes2; }; struct savefile_info { unsigned long sfi1; unsigned long sfi2; unsigned long sfi3; }; # 444 "../include/config.h" 2 # 12 "../include/hack.h" 2 # 1 "../include/lint.h" 1 # 14 "../include/hack.h" 2 # 120 "../include/hack.h" # 1 "../include/align.h" 1 # 10 "../include/align.h" typedef schar aligntyp; typedef struct align { aligntyp type; int record; } align; # 121 "../include/hack.h" 2 # 1 "../include/dungeon.h" 1 # 9 "../include/dungeon.h" typedef struct d_flags { unsigned town:1; unsigned hellish:1; unsigned maze_like:1; unsigned rogue_like:1; unsigned align:3; unsigned unused:1; } d_flags; typedef struct d_level { xchar dnum; xchar dlevel; } d_level; typedef struct s_level { struct s_level *next; d_level dlevel; char proto[15]; char boneid; uchar rndlevs; d_flags flags; } s_level; typedef struct stairway { xchar sx, sy; d_level tolev; char up; } stairway; # 47 "../include/dungeon.h" typedef struct dest_area { xchar lx, ly; xchar hx, hy; xchar nlx, nly; xchar nhx, nhy; } dest_area; typedef struct dungeon { char dname[24]; char proto[15]; char boneid; d_flags flags; xchar entry_lev; xchar num_dunlevs; xchar dunlev_ureached; int ledger_start, depth_start; } dungeon; typedef struct branch { struct branch *next; int id; int type; d_level end1; d_level end2; boolean end1_up; } branch; # 153 "../include/dungeon.h" struct linfo { unsigned char flags; # 172 "../include/dungeon.h" }; # 197 "../include/dungeon.h" typedef struct mapseen { struct mapseen *next; branch *br; d_level lev; struct mapseen_feat { unsigned nfount:2; unsigned nsink:2; unsigned naltar:2; unsigned nthrone:2; unsigned ngrave:2; unsigned ntree:2; unsigned water:2; unsigned lava:2; unsigned ice:2; unsigned nshop:2; unsigned ntemple:2; unsigned msalign:2; unsigned shoptype:5; } feat; struct mapseen_flags { unsigned unreachable:1; unsigned forgot:1; unsigned knownbones:1; unsigned oracle:1; unsigned sokosolved:1; unsigned bigroom:1; unsigned castle:1; unsigned castletune:1; unsigned valley:1; unsigned msanctum:1; unsigned ludios:1; unsigned roguelevel:1; } flags; char *custom; unsigned custom_lth; struct mapseen_rooms { unsigned seen:1; unsigned untended:1; } msrooms[(40 +1)*2]; struct cemetery *final_resting_place; } mapseen; # 122 "../include/hack.h" 2 # 1 "../include/monsym.h" 1 # 123 "../include/hack.h" 2 # 1 "../include/mkroom.h" 1 # 11 "../include/mkroom.h" struct mkroom { schar lx,hx,ly,hy; schar rtype; schar orig_rtype; schar rlit; schar needfill; schar needjoining; schar doorct; schar fdoor; schar nsubrooms; boolean irregular; struct mkroom *sbrooms[24]; struct monst *resident; }; struct shclass { const char *name; char symb; int prob; schar shdist; struct itp { int iprob; int itype; } iprobs[6]; const char * const *shknms; }; extern struct mkroom rooms[(40 +1)*2]; extern struct mkroom* subrooms; extern struct mkroom *dnstairs_room, *upstairs_room, *sstairs_room; extern coord doors[120]; # 124 "../include/hack.h" 2 # 1 "../include/objclass.h" 1 # 12 "../include/objclass.h" struct objclass { short oc_name_idx; short oc_descr_idx; char * oc_uname; unsigned oc_name_known:1; unsigned oc_merge:1; unsigned oc_uses_known:1; unsigned oc_pre_discovered:1; unsigned oc_magic:1; unsigned oc_charged:1; unsigned oc_unique:1; unsigned oc_nowish:1; unsigned oc_big:1; unsigned oc_tough:1; unsigned oc_dir:2; # 45 "../include/objclass.h" unsigned oc_material:5; # 82 "../include/objclass.h" schar oc_subtyp; # 93 "../include/objclass.h" uchar oc_oprop; char oc_class; schar oc_delay; uchar oc_color; short oc_prob; unsigned short oc_weight; short oc_cost; schar oc_wsdam, oc_wldam; schar oc_oc1, oc_oc2; unsigned short oc_nutrition; }; struct class_sym { char sym; const char *name; const char *explain; }; struct objdescr { const char *oc_name; const char *oc_descr; }; extern struct objclass objects[]; extern struct objdescr obj_descr[]; # 184 "../include/objclass.h" struct fruit { char fname[32]; int fid; struct fruit *nextf; }; # 125 "../include/hack.h" 2 # 1 "../include/youprop.h" 1 # 9 "../include/youprop.h" # 1 "../include/prop.h" 1 # 89 "../include/prop.h" struct prop { long extrinsic; # 118 "../include/prop.h" long blocked; long intrinsic; # 132 "../include/prop.h" }; # 10 "../include/youprop.h" 2 # 1 "../include/permonst.h" 1 # 22 "../include/permonst.h" struct attack { uchar aatyp; uchar adtyp, damn, damd; }; # 40 "../include/permonst.h" # 1 "../include/monattk.h" 1 # 41 "../include/permonst.h" 2 # 1 "../include/monflag.h" 1 # 42 "../include/permonst.h" 2 struct permonst { const char *mname; char mlet; schar mlevel, mmove, ac, mr; aligntyp maligntyp; unsigned short geno; struct attack mattk[6]; unsigned short cwt, cnutrit; uchar msound; uchar msize; uchar mresists; uchar mconveys; unsigned long mflags1, mflags2; unsigned short mflags3; uchar mcolor; }; extern struct permonst mons[]; # 11 "../include/youprop.h" 2 # 1 "../include/mondata.h" 1 # 12 "../include/youprop.h" 2 # 1 "../include/pm.h" 1 # 13 "../include/youprop.h" 2 # 126 "../include/hack.h" 2 # 1 "../include/wintype.h" 1 # 10 "../include/wintype.h" typedef int winid; typedef union any { genericptr_t a_void; struct obj *a_obj; struct monst *a_monst; int a_int; char a_char; schar a_schar; unsigned int a_uint; long a_long; unsigned long a_ulong; int *a_iptr; long *a_lptr; unsigned long *a_ulptr; unsigned *a_uptr; } anything; # 51 "../include/wintype.h" typedef struct mi { anything item; long count; } menu_item; # 127 "../include/hack.h" 2 # 1 "../include/context.h" 1 # 23 "../include/context.h" struct dig_info { int effort; d_level level; coord pos; long lastdigtime; boolean down, chew, warned, quiet; }; struct tin_info { struct obj *tin; unsigned o_id; int usedtime, reqtime; }; struct book_info { struct obj *book; unsigned o_id; schar delay; }; struct takeoff_info { long mask; long what; int delay; boolean cancelled_don; char disrobing[30 +1]; }; struct victual_info { struct obj *piece; unsigned o_id; int usedtime, reqtime; int nmod; unsigned canchoke:1; unsigned fullwarn:1; unsigned eating:1; unsigned doreset:1; }; struct warntype_info { unsigned long obj; unsigned long polyd; struct permonst *species; short speciesidx; }; struct polearm_info { struct monst *hitmon; unsigned m_id; }; struct tribute_info { size_t tributesz; boolean enabled; unsigned bookstock:1; }; struct context_info { unsigned ident; unsigned no_of_wizards; unsigned run; unsigned startingpet_mid; int current_fruit; int warnlevel; int rndencode; long next_attrib_check; long stethoscope_move; short stethoscope_movement; boolean travel; boolean travel1; boolean forcefight; boolean nopick; boolean made_amulet; boolean mon_moving; boolean move; boolean mv; boolean bypasses; boolean botl; boolean botlx; boolean door_opened; struct dig_info digging; struct victual_info victual; struct tin_info tin; struct book_info spbook; struct takeoff_info takeoff; struct warntype_info warntype; struct polearm_info polearm; struct tribute_info tribute; }; extern struct context_info context; # 128 "../include/hack.h" 2 # 1 "../include/decl.h" 1 # 11 "../include/decl.h" extern int (*occupation)(void); extern int (*afternmv)(void); extern const char *hname; extern int hackpid; extern int locknum; extern char SAVEF[]; extern int bases[18]; extern int multi; extern const char *multi_reason; extern int nroom; extern int nsubroom; extern int occtime; extern nhsym warnsyms[6]; extern int warn_obj_cnt; extern int x_maze_max, y_maze_max; extern int otg_temp; extern int in_doagain; extern struct dgn_topology { d_level d_oracle_level; d_level d_bigroom_level; d_level d_rogue_level; d_level d_medusa_level; d_level d_stronghold_level; d_level d_valley_level; d_level d_wiz1_level; d_level d_wiz2_level; d_level d_wiz3_level; d_level d_juiblex_level; d_level d_orcus_level; d_level d_baalzebub_level; d_level d_asmodeus_level; d_level d_portal_level; d_level d_sanctum_level; d_level d_earth_level; d_level d_water_level; d_level d_fire_level; d_level d_air_level; d_level d_astral_level; xchar d_tower_dnum; xchar d_sokoban_dnum; xchar d_mines_dnum, d_quest_dnum; d_level d_qstart_level, d_qlocate_level, d_nemesis_level; d_level d_knox_level; d_level d_mineend_level; d_level d_sokoend_level; } dungeon_topology; # 106 "../include/decl.h" extern stairway dnstair, upstair; extern stairway dnladder, upladder; extern stairway sstairs; extern dest_area updest, dndest; extern coord inv_pos; extern dungeon dungeons[]; extern s_level *sp_levchn; # 1 "../include/quest.h" 1 # 10 "../include/quest.h" struct q_score { unsigned first_start:1; unsigned met_leader:1; unsigned not_ready:3; unsigned pissed_off:1; unsigned got_quest:1; unsigned first_locate:1; unsigned met_intermed:1; unsigned got_final:1; unsigned made_goal:3; unsigned met_nemesis:1; unsigned killed_nemesis:1; unsigned in_battle:1; unsigned cheater:1; unsigned touched_artifact:1; unsigned offered_artifact:1; unsigned got_thanks:1; unsigned ldrgend:2; unsigned nemgend:2; unsigned godgend:2; unsigned leader_is_dead:1; unsigned leader_m_id; }; # 128 "../include/decl.h" 2 extern struct q_score quest_status; extern char pl_character[32]; extern char pl_race; extern char pl_fruit[32]; extern struct fruit *ffruit; extern char tune[6]; extern struct linfo level_info[(16 * 32)]; extern struct sinfo { int gameover; int stopprint; volatile int done_hup; int preserve_locks; int something_worth_saving; int panicking; int exiting; int in_moveloop; int in_impossible; int in_paniclog; int wizkit_wishing; } program_state; extern boolean restoring; extern const char quitchars[]; extern const char vowels[]; extern const char ynchars[]; extern const char ynqchars[]; extern const char ynaqchars[]; extern const char ynNaqchars[]; extern long yn_number; extern const char disclosure_options[]; extern int smeq[]; extern int doorindex; extern char *save_cm; extern struct kinfo { struct kinfo *next; int id; int format; char name[256]; } killer; extern long done_money; extern const char *configfile; extern char lastconfigfile[256]; extern char plname[32]; extern char dogname[]; extern char catname[]; extern char horsename[]; extern char preferred_pet; extern const char *occtxt; extern const char *nomovemsg; extern char lock[]; extern const schar xdir[], ydir[], zdir[]; extern schar tbx, tby; extern struct multishot { int n, i; short o; boolean s; } m_shot; extern long moves, monstermoves; extern long wailmsg; extern boolean in_mklev; extern boolean stoned; extern boolean unweapon; extern boolean mrg_to_wielded; extern boolean defer_see_monsters; extern boolean in_steed_dismounting; extern const int shield_static[]; # 1 "../include/spell.h" 1 # 15 "../include/spell.h" struct spell { short sp_id; xchar sp_lev; int sp_know; }; # 218 "../include/decl.h" 2 extern struct spell spl_book[]; # 1 "../include/color.h" 1 # 54 "../include/color.h" struct menucoloring { struct nhregex *match; char *origstr; int color, attr; struct menucoloring *next; }; # 221 "../include/decl.h" 2 extern const int zapcolors[]; extern const struct class_sym def_oc_syms[18]; extern uchar oc_syms[18]; extern const struct class_sym def_monsyms[61]; extern uchar monsyms[61]; # 1 "../include/obj.h" 1 # 12 "../include/obj.h" union vptrs { struct obj *v_nexthere; struct obj *v_ocontainer; struct monst *v_ocarry; }; struct oextra { char *oname; struct monst *omonst; unsigned *omid; long *olong; char *omailcmd; }; struct obj { struct obj *nobj; union vptrs v; struct obj *cobj; unsigned o_id; xchar ox,oy; short otyp; unsigned owt; long quan; schar spe; # 54 "../include/obj.h" char oclass; char invlet; char oartifact; xchar where; # 68 "../include/obj.h" xchar timed; unsigned cursed:1; unsigned blessed:1; unsigned unpaid:1; unsigned no_charge:1; unsigned known:1; unsigned dknown:1; unsigned bknown:1; unsigned rknown:1; unsigned oeroded:2; unsigned oeroded2:2; unsigned oerodeproof:1; unsigned olocked:1; unsigned obroken:1; unsigned otrapped:1; unsigned recharged:3; unsigned lamplit:1; unsigned globby:1; unsigned greased:1; unsigned nomerge:1; unsigned was_thrown:1; unsigned in_use:1; unsigned bypass:1; unsigned cknown:1; unsigned lknown:1; int corpsenm; int usecount; unsigned oeaten; long age; long owornmask; struct oextra *oextra; }; # 231 "../include/decl.h" 2 extern struct obj *invent, *uarm, *uarmc, *uarmh, *uarms, *uarmg, *uarmf, *uarmu, *uskin, *uamul, *uleft, *uright, *ublindf, *uwep, *uswapwep, *uquiver; extern struct obj *uchain; extern struct obj *uball; extern struct obj *migrating_objs; extern struct obj *billobjs; extern struct obj *current_wand, *thrownobj, *kickedobj; extern struct obj zeroobj; extern anything zeroany; # 1 "../include/you.h" 1 # 9 "../include/you.h" # 1 "../include/attrib.h" 1 # 39 "../include/attrib.h" struct attribs { schar a[6]; }; # 10 "../include/you.h" 2 # 1 "../include/monst.h" 1 # 39 "../include/monst.h" # 1 "../include/mextra.h" 1 # 66 "../include/mextra.h" struct fakecorridor { xchar fx, fy, ftyp; }; struct egd { int fcbeg, fcend; int vroom; xchar gdx, gdy; xchar ogx, ogy; d_level gdlevel; xchar warncnt; unsigned gddone:1; unsigned witness:2; unsigned unused:5; struct fakecorridor fakecorr[(21 +80)]; }; struct epri { aligntyp shralign; schar shroom; coord shrpos; d_level shrlevel; long intone_time, enter_time, hostile_time, peaceful_time; }; # 105 "../include/mextra.h" struct bill_x { unsigned bo_id; boolean useup; long price; long bquan; }; struct eshk { long robbed; long credit; long debit; long loan; int shoptype; schar shoproom; schar unused; boolean following; boolean surcharge; boolean dismiss_kops; coord shk; coord shd; d_level shoplevel; int billct; struct bill_x bill[200]; struct bill_x *bill_p; int visitct; char customer[32]; char shknam[32]; }; struct emin { aligntyp min_align; boolean renegade; }; # 155 "../include/mextra.h" struct edog { long droptime; unsigned dropdist; int apport; long whistletime; long hungrytime; coord ogoal; int abuse; int revivals; int mhpmax_penalty; unsigned killed_by_u:1; }; struct mextra { char *mname; struct egd *egd; struct epri *epri; struct eshk *eshk; struct emin *emin; struct edog *edog; int mcorpsenm; }; # 40 "../include/monst.h" 2 struct monst { struct monst *nmon; struct permonst *data; unsigned m_id; short mnum; short cham; short movement; uchar m_lev; aligntyp malign; xchar mx, my; xchar mux, muy; coord mtrack[4]; int mhp, mhpmax; unsigned mappearance; uchar m_ap_type; schar mtame; unsigned short mintrinsics; int mspec_used; unsigned female:1; unsigned minvis:1; unsigned invis_blkd:1; unsigned perminvis:1; unsigned mcan:1; unsigned mburied:1; unsigned mundetected:1; unsigned mcansee:1; unsigned mspeed:2; unsigned permspeed:2; unsigned mrevived:1; unsigned mcloned:1; unsigned mavenge:1; unsigned mflee:1; unsigned mfleetim:7; unsigned msleeping:1; unsigned mblinded:7; unsigned mstun:1; unsigned mfrozen:7; unsigned mcanmove:1; unsigned mconf:1; unsigned mpeaceful:1; unsigned mtrapped:1; unsigned mleashed:1; unsigned isshk:1; unsigned isminion:1; unsigned isgd:1; unsigned ispriest:1; unsigned iswiz:1; unsigned wormno:5; unsigned long mstrategy; # 135 "../include/monst.h" long mtrapseen; long mlstmv; long mspare1; struct obj *minvent; struct obj *mw; long misc_worn_check; xchar weapon_check; int meating; struct mextra *mextra; }; # 11 "../include/you.h" 2 # 1 "../include/skills.h" 1 # 99 "../include/skills.h" struct skills { xchar skill; xchar max_skill; unsigned short advance; }; # 113 "../include/skills.h" struct def_skill { xchar skill; xchar skmax; }; # 15 "../include/you.h" 2 struct RoleName { const char *m; const char *f; }; struct RoleAdvance { xchar infix, inrnd; xchar lofix, lornd; xchar hifix, hirnd; }; struct u_have { unsigned amulet:1; unsigned bell:1; unsigned book:1; unsigned menorah:1; unsigned questart:1; unsigned unused:3; }; struct u_event { unsigned minor_oracle:1; unsigned major_oracle:1; unsigned read_tribute:1; unsigned qcalled:1; unsigned qexpelled:1; unsigned qcompleted:1; unsigned uheard_tune:2; unsigned uopened_dbridge:1; unsigned invoked:1; unsigned gehennom_entered:1; unsigned uhand_of_elbereth:2; unsigned udemigod:1; unsigned uvibrated:1; unsigned ascended:1; }; struct u_achieve { unsigned amulet:1; unsigned bell:1; unsigned book:1; unsigned menorah:1; unsigned enter_gehennom:1; unsigned ascended:1; unsigned mines_luckstone:1; unsigned finish_sokoban:1; unsigned killed_medusa:1; }; struct u_realtime { long realtime; time_t restored; time_t endtime; }; struct u_conduct { long unvegetarian; long unvegan; long food; long gnostic; long weaphit; long killer; long literate; long polypiles; long polyselfs; long wishes; long wisharti; }; struct u_roleplay { boolean blind; boolean nudist; long numbones; }; struct Role { struct RoleName name; struct RoleName rank[9]; const char *lgod, *ngod, *cgod; const char *filecode; const char *homebase; const char *intermed; short malenum, femalenum, petnum, ldrnum, guardnum, neminum, enemy1num, enemy2num; char enemy1sym, enemy2sym; short questarti; short allow; # 138 "../include/you.h" xchar attrbase[6]; xchar attrdist[6]; struct RoleAdvance hpadv; struct RoleAdvance enadv; xchar xlev; xchar initrecord; int spelbase; int spelheal; int spelshld; int spelarmr; int spelstat; int spelspec; int spelsbon; # 165 "../include/you.h" }; extern const struct Role roles[]; extern struct Role urole; # 179 "../include/you.h" struct Race { const char *noun; const char *adj; const char *coll; const char *filecode; struct RoleName individual; short malenum, femalenum, mummynum, zombienum; short allow; short selfmask, lovemask, hatemask; xchar attrmin[6]; xchar attrmax[6]; struct RoleAdvance hpadv; struct RoleAdvance enadv; # 217 "../include/you.h" }; extern const struct Race races[]; extern struct Race urace; struct Gender { const char *adj; const char *he; const char *him; const char *his; const char *filecode; short allow; }; extern const struct Gender genders[]; # 246 "../include/you.h" struct Align { const char *noun; const char *adj; const char *filecode; short allow; aligntyp value; }; extern const struct Align aligns[]; struct you { xchar ux, uy; schar dx, dy, dz; schar di; xchar tx, ty; xchar ux0, uy0; d_level uz, uz0; d_level utolev; uchar utotype; boolean umoved; int last_str_turn; int ulevel; int ulevelmax; unsigned utrap; unsigned utraptype; char urooms[5]; char urooms0[5]; char uentered[5]; char ushops[5]; char ushops0[5]; char ushops_entered[5]; char ushops_left[5]; int uhunger; unsigned uhs; struct prop uprops[(67)+1]; unsigned umconf; unsigned usick_type:2; int nv_range; int xray_range; int bglyph; int cglyph; int bc_order; int bc_felt; int umonster; int umonnum; int mh, mhmax, mtimedone; struct attribs macurr, mamax; int ulycn; unsigned ucreamed; unsigned uswldtim; unsigned uswallow:1; unsigned uinwater:1; unsigned uundetected:1; unsigned mfemale:1; unsigned uinvulnerable:1; unsigned uburied:1; unsigned uedibility:1; unsigned udg_cnt; struct u_achieve uachieve; struct u_event uevent; struct u_have uhave; struct u_conduct uconduct; struct u_roleplay uroleplay; struct attribs acurr, aexe, abon, amax, atemp, atime; align ualign; aligntyp ualignbase[2]; schar uluck, moreluck; schar uhitinc; schar udaminc; schar uac; uchar uspellprot; uchar usptime; uchar uspmtime; int uhp,uhpmax; int uen, uenmax; xchar uhpinc[30], ueninc[30]; int ugangr; int ugifts; int ublessed, ublesscnt; long umoney0; long uspare1; long uexp, urexp; long ucleansed; long usleep; int uinvault; struct monst *ustuck; struct monst *usteed; long ugallop; int urideturns; int umortality; int ugrave_arise; int weapon_slots; int skills_advanced; xchar skill_record[60]; struct skills weapon_skills[(38 +1)]; boolean twoweap; }; # 247 "../include/decl.h" 2 extern struct you u; extern time_t ubirthday; extern struct u_realtime urealtime; # 1 "../include/onames.h" 1 # 252 "../include/decl.h" 2 extern struct monst youmonst; extern struct monst *mydogs, *migrating_mons; extern struct mvitals { uchar born; uchar died; uchar mvflags; } mvitals[381]; extern struct c_color_names { const char *const c_black, *const c_amber, *const c_golden, *const c_light_blue,*const c_red, *const c_green, *const c_silver, *const c_blue, *const c_purple, *const c_white, *const c_orange; } c_color_names; # 284 "../include/decl.h" extern const char *c_obj_colors[]; extern struct c_common_strings { const char *const c_nothing_happens, *const c_thats_enough_tries, *const c_silly_thing_to, *const c_shudder_for_moment, *const c_something, *const c_Something, *const c_You_can_move_again, *const c_Never_mind, *c_vision_clears, *const c_the_your[2]; } c_common_strings; # 306 "../include/decl.h" extern const char *materialnm[]; # 322 "../include/decl.h" extern boolean vision_full_recalc; extern char **viz_array; extern winid WIN_MESSAGE; extern winid WIN_MAP, WIN_INVEN; # 341 "../include/decl.h" extern char toplines[]; extern struct tc_gbl_data { char *tc_AS, *tc_AE; int tc_LI, tc_CO; } tc_gbl_data; extern const char * const monexplain[], invisexplain[], * const oclass_names[]; # 384 "../include/decl.h" extern char *fqn_prefix[10]; extern struct savefile_info sfcap, sfrestinfo, sfsaveinfo; struct autopickup_exception { char *pattern; boolean grab; struct autopickup_exception *next; }; extern char *ARGV0; # 129 "../include/hack.h" 2 # 1 "../include/timeout.h" 1 # 11 "../include/timeout.h" typedef void (*timeout_proc) (union any *, long); # 37 "../include/timeout.h" typedef struct fe { struct fe *next; long timeout; unsigned long tid; short kind; short func_index; anything arg; unsigned needs_fixup:1; } timer_element; # 130 "../include/hack.h" 2 extern coord bhitpos; # 155 "../include/hack.h" # 1 "../include/trap.h" 1 # 12 "../include/trap.h" union vlaunchinfo { short v_launch_otyp; coord v_launch2; uchar v_conjoined; short v_tnote; }; struct trap { struct trap *ntrap; xchar tx,ty; d_level dst; coord launch; unsigned ttyp:5; unsigned tseen:1; unsigned once:1; unsigned madeby_u:1; union vlaunchinfo vl; }; extern struct trap *ftrap; # 156 "../include/hack.h" 2 # 1 "../include/flag.h" 1 # 18 "../include/flag.h" struct flag { boolean acoustics; boolean autodig; boolean autoquiver; boolean autoopen; boolean beginner; boolean biff; boolean bones; boolean confirm; boolean dark_room; boolean debug; boolean end_own; boolean explore; boolean female; boolean friday13; boolean help; boolean ignintr; boolean ins_chkpt; boolean invlet_constant; boolean legacy; boolean lit_corridor; boolean nap; boolean null; boolean perm_invent; boolean pickup; boolean pickup_thrown; boolean pushweapon; boolean rest_on_space; boolean safe_dog; boolean showexp; boolean showscore; boolean silent; boolean sortloot; boolean sortpack; boolean sparkle; boolean standout; boolean time; boolean tombstone; boolean verbose; int end_top, end_around; unsigned moonphase; unsigned long suppress_alert; int paranoia_bits; int pickup_burden; int pile_limit; char inv_order[18]; char pickup_types[18]; char end_disclose[6 + 1]; char menu_style; boolean made_fruit; # 112 "../include/flag.h" int initrole; int initrace; int initgend; int initalign; int randomall; int pantheon; boolean lootabc; boolean showrace; boolean travelcmd; int runmode; }; # 167 "../include/flag.h" struct instance_flags { int in_lava_effects; int last_msg; int purge_monsters; int override_ID; int suppress_price; coord travelcc; boolean window_inited; boolean vision_inited; boolean sanity_check; boolean mon_polycontrol; unsigned msg_history; int menu_headings; int *opt_booldup; int *opt_compdup; boolean altmeta; boolean cbreak; boolean deferred_X; boolean num_pad; boolean news; boolean mention_walls; boolean menu_tab_sep; boolean menu_head_objsym; boolean menu_requested; boolean renameallowed; boolean renameinprogress; boolean toptenwin; boolean zerocomp; boolean rlecomp; uchar num_pad_mode; boolean echo; boolean use_menu_color; # 216 "../include/flag.h" uchar bouldersym; char prevmsg_window; boolean extmenu; # 257 "../include/flag.h" boolean wc_color; boolean wc_hilite_pet; boolean wc_ascii_map; boolean wc_tiled_map; boolean wc_preload_tiles; int wc_tile_width; int wc_tile_height; char *wc_tile_file; boolean wc_inverse; int wc_align_status; int wc_align_message; int wc_vary_msgcount; char *wc_foregrnd_menu; char *wc_backgrnd_menu; char *wc_foregrnd_message; char *wc_backgrnd_message; char *wc_foregrnd_status; char *wc_backgrnd_status; char *wc_foregrnd_text; char *wc_backgrnd_text; char *wc_font_map; char *wc_font_message; char *wc_font_status; char *wc_font_menu; char *wc_font_text; int wc_fontsiz_map; int wc_fontsiz_message; int wc_fontsiz_status; int wc_fontsiz_menu; int wc_fontsiz_text; int wc_scroll_amount; int wc_scroll_margin; int wc_map_mode; int wc_player_selection; boolean wc_splash_screen; boolean wc_popup_dialog; boolean wc_eight_bit_input; boolean wc_mouse_support; boolean wc2_fullscreen; boolean wc2_softkeyboard; boolean wc2_wraptext; boolean wc2_selectsaved; boolean wc2_darkgray; boolean cmdassist; boolean clicklook; boolean obsolete; struct autopickup_exception *autopickup_exceptions[2]; # 316 "../include/flag.h" unsigned save_uinwater:1; unsigned save_uburied:1; }; # 339 "../include/flag.h" extern struct flag flags; extern struct instance_flags iflags; # 381 "../include/flag.h" struct func_tab; # 391 "../include/flag.h" struct cmd { unsigned serialno; boolean num_pad; boolean pcHack_compat; boolean phone_layout; boolean swap_yz; char move_W, move_NW, move_N, move_NE, move_E, move_SE, move_S, move_SW; const char *dirchars; const char *alphadirchars; const struct func_tab *commands[256]; }; extern struct cmd Cmd; # 157 "../include/hack.h" 2 # 1 "../include/rm.h" 1 # 227 "../include/rm.h" struct symdef { uchar sym; const char *explanation; uchar color; }; struct symparse { unsigned range; int idx; const char *name; }; struct symsetentry { struct symsetentry *next; char *name; char *desc; int idx; int handling; unsigned nocolor:1; unsigned primary:1; unsigned rogue:1; }; # 281 "../include/rm.h" extern const struct symdef defsyms[95]; extern const struct symdef def_warnsyms[6]; extern int currentgraphics; extern nhsym showsyms[]; extern struct symsetentry symset[2]; # 388 "../include/rm.h" struct rm { int glyph; schar typ; uchar seenv; unsigned flags:5; unsigned horizontal:1; unsigned lit:1; unsigned waslit:1; unsigned roomno:6; unsigned edge:1; unsigned candig:1; }; # 507 "../include/rm.h" struct damage { struct damage *next; long when, cost; coord place; schar typ; }; struct cemetery { struct cemetery *next; char who[32 + 4*(1+3) + 1]; char how[100 + 1]; char when[4+2+2 + 2+2+2 + 1]; schar frpx, frpy; boolean bonesknown; }; struct levelflags { uchar nfountains; uchar nsinks; unsigned has_shop:1; unsigned has_vault:1; unsigned has_zoo:1; unsigned has_court:1; unsigned has_morgue:1; unsigned has_beehive:1; unsigned has_barracks:1; unsigned has_temple:1; unsigned has_swamp:1; unsigned noteleport:1; unsigned hardfloor:1; unsigned nommap:1; unsigned hero_memory:1; unsigned shortsighted:1; unsigned graveyard:1; unsigned sokoban_rules:1; unsigned is_maze_lev:1; unsigned is_cavernous_lev:1; unsigned arboreal:1; unsigned wizard_bones:1; unsigned corrmaze:1; }; typedef struct { struct rm locations[80][21]; struct obj *objects[80][21]; struct monst *monsters[80][21]; struct obj *objlist; struct obj *buriedobjlist; struct monst *monlist; struct damage *damagelist; struct cemetery *bonesinfo; struct levelflags flags; } dlevel_t; extern schar lastseentyp[80][21]; extern dlevel_t level; # 158 "../include/hack.h" 2 # 1 "../include/vision.h" 1 # 159 "../include/hack.h" 2 # 1 "../include/display.h" 1 # 160 "../include/hack.h" 2 # 1 "../include/engrave.h" 1 # 10 "../include/engrave.h" struct engr { struct engr *nxt_engr; char *engr_txt; xchar engr_x, engr_y; unsigned engr_lth; long engr_time; xchar engr_type; }; # 161 "../include/hack.h" 2 # 1 "../include/rect.h" 1 # 10 "../include/rect.h" typedef struct nhrect { xchar lx, ly; xchar hx, hy; } NhRect; # 162 "../include/hack.h" 2 # 1 "../include/region.h" 1 # 12 "../include/region.h" typedef boolean (*callback_proc) (genericptr_t, genericptr_t); # 34 "../include/region.h" typedef struct { NhRect bounding_box; NhRect *rects; short nrects; boolean attach_2_u; unsigned int attach_2_m; const char* enter_msg; const char* leave_msg; long ttl; short expire_f; short can_enter_f; short enter_f; short can_leave_f; short leave_f; short inside_f; unsigned int player_flags; unsigned int* monsters; short n_monst; short max_monst; boolean visible; int glyph; anything arg; } NhRegion; # 163 "../include/hack.h" 2 # 177 "../include/hack.h" # 1 "../include/extern.h" 1 # 15 "../include/extern.h" extern char *fmt_ptr (const void *); extern void moveloop (int); extern void stop_occupation(void); extern void display_gamewindows(void); extern void newgame(void); extern void welcome (int); extern time_t get_realtime(void); extern int doapply(void); extern int dorub(void); extern int dojump(void); extern int jump (int); extern int number_leashed(void); extern void o_unleash (struct obj *); extern void m_unleash (struct monst *,int); extern void unleash_all(void); extern boolean next_to_u(void); extern struct obj *get_mleash (struct monst *); extern const char *beautiful(void); extern void check_leash (int,int); extern boolean um_dist (int,int,int); extern boolean snuff_candle (struct obj *); extern boolean snuff_lit (struct obj *); extern boolean catch_lit (struct obj *); extern void use_unicorn_horn (struct obj *); extern boolean tinnable (struct obj *); extern void reset_trapset(void); extern void fig_transform (union any *, long); extern int unfixable_trouble_count (int); extern void init_artifacts(void); extern void save_artifacts (int); extern void restore_artifacts (int); extern const char *artiname (int); extern struct obj *mk_artifact (struct obj *,int); extern const char *artifact_name (const char *,short *); extern boolean exist_artifact (int,const char *); extern void artifact_exists (struct obj *,const char *,int); extern int nartifact_exist(void); extern boolean arti_immune (struct obj *,int); extern boolean spec_ability (struct obj *,unsigned long); extern boolean confers_luck (struct obj *); extern boolean arti_reflects (struct obj *); extern boolean shade_glare (struct obj *); extern boolean restrict_name (struct obj *,const char *); extern boolean defends (int,struct obj *); extern boolean defends_when_carried (int,struct obj *); extern boolean protects (struct obj *,int); extern void set_artifact_intrinsic (struct obj *,int,long); extern int touch_artifact (struct obj *,struct monst *); extern int spec_abon (struct obj *,struct monst *); extern int spec_dbon (struct obj *,struct monst *,int); extern void discover_artifact (int); extern boolean undiscovered_artifact (int); extern int disp_artifact_discoveries (winid); extern boolean artifact_hit (struct monst *,struct monst *, struct obj *,int *,int); extern int doinvoke(void); extern boolean finesse_ahriman (struct obj *); extern void arti_speak (struct obj *); extern boolean artifact_light (struct obj *); extern long spec_m2 (struct obj *); extern boolean artifact_has_invprop (struct obj *,int); extern long arti_cost (struct obj *); extern struct obj *what_gives (long *); extern void Sting_effects (int); extern int retouch_object (struct obj **,int); extern void retouch_equipment (int); extern boolean adjattrib (int,int,int); extern void gainstr (struct obj *,int,int); extern void losestr (int); extern void poisontell (int,int); extern void poisoned (const char *,int,const char *,int,int); extern void change_luck (int); extern int stone_luck (int); extern void set_moreluck(void); extern void restore_attrib(void); extern void exercise (int,int); extern void exerchk(void); extern void init_attr (int); extern void redist_attr(void); extern void adjabil (int,int); extern int newhp(void); extern schar acurr (int); extern schar acurrstr(void); extern boolean extremeattr (int); extern void adjalign (int); extern int is_innate (int); extern char *from_what (int); extern void uchangealign (int,int); extern void ballrelease (int); extern void ballfall(void); extern void placebc(void); extern void unplacebc(void); extern void set_bc (int); extern void move_bc (int,int,int,int,int,int); extern boolean drag_ball (int,int, int *,xchar *,xchar *,xchar *,xchar *, boolean *,int); extern void drop_ball (int,int); extern void drag_down(void); extern void sanitize_name (char *); extern void drop_upon_death (struct monst *,struct obj *,int,int); extern boolean can_make_bones(void); extern void savebones (int,time_t,struct obj *); extern int getbones(void); extern int xlev_to_rank (int); extern int title_to_mon (const char *,int *,int *); extern void max_rank_sz(void); extern int describe_level (char *); extern const char *rank_of (int,int,int); extern void bot(void); extern void status_initialize (int); extern void status_finish(void); extern void genl_status_init(void); extern void genl_status_finish(void); extern void genl_status_update (int, genericptr_t, int, int); extern void genl_status_enablefield (int, const char *, const char *,int); extern void genl_status_threshold (int,int,anything,int,int,int); extern boolean set_status_hilites (char *op); extern void clear_status_hilites(void); extern char *get_status_hilites (char *, int); extern boolean status_hilite_menu(void); extern boolean redraw_cmd (int); # 185 "../include/extern.h" extern void reset_occupations(void); extern void set_occupation (int (*)(void),const char *,int); extern char pgetchar(void); extern void pushch (int); extern void savech (int); extern void add_debug_extended_commands(void); extern void reset_commands (int); extern void rhack (char *); extern int doextlist(void); extern int extcmd_via_menu(void); extern int enter_explore_mode(void); extern void enlightenment (int,int); extern void youhiding (int,int); extern void show_conduct (int); extern int xytod (int,int); extern void dtoxy (coord *,int); extern int movecmd (int); extern int dxdy_moveok(void); extern int getdir (const char *); extern void confdir(void); extern const char *directionname (int); extern int isok (int,int); extern int get_adjacent_loc (const char *, const char *, int, int, coord *); extern const char *click_to_cmd (int,int,int); extern void hangup (int); extern void end_of_input(void); extern char readchar(void); extern void sanity_check(void); extern char yn_function (const char *, const char *, int); extern boolean paranoid_query (int,const char *); extern boolean is_pool (int,int); extern boolean is_lava (int,int); extern boolean is_pool_or_lava (int,int); extern boolean is_ice (int,int); extern boolean is_moat (int,int); extern schar db_under_typ (int); extern int is_drawbridge_wall (int,int); extern boolean is_db_wall (int,int); extern boolean find_drawbridge (int *,int*); extern boolean create_drawbridge (int,int,int,int); extern void open_drawbridge (int,int); extern void close_drawbridge (int,int); extern void destroy_drawbridge (int,int); extern void decl_init(void); extern struct obj *o_in (struct obj*,int); extern struct obj *o_material (struct obj*,unsigned); extern int gold_detect (struct obj *); extern int food_detect (struct obj *); extern int object_detect (struct obj *,int); extern int monster_detect (struct obj *,int); extern int trap_detect (struct obj *); extern const char *level_distance (d_level *); extern void use_crystal_ball (struct obj *); extern void do_mapping(void); extern void do_vicinity_map(void); extern void cvt_sdoor_to_door (struct rm *); extern int findit(void); extern int openit(void); extern boolean detecting (void (*)(int,int,void *)); extern void find_trap (struct trap *); extern int dosearch0 (int); extern int dosearch(void); extern void sokoban_detect(void); extern void reveal_terrain (int); extern int dig_typ (struct obj *,int,int); extern boolean is_digging(void); extern int holetime(void); extern boolean dig_check (struct monst *, int, int, int); extern void digactualhole (int,int,struct monst *,int); extern boolean dighole (int,int,coord *); extern int use_pick_axe (struct obj *); extern int use_pick_axe2 (struct obj *); extern boolean mdig_tunnel (struct monst *); extern void watch_dig (struct monst *,int,int,int); extern void zap_dig(void); extern struct obj *bury_an_obj (struct obj *, boolean *); extern void bury_objs (int,int); extern void unearth_objs (int,int); extern void rot_organic (union any *, long); extern void rot_corpse (union any *, long); extern struct obj *buried_ball (coord *); extern void buried_ball_to_punishment(void); extern void buried_ball_to_freedom(void); extern schar fillholetyp (int,int,int); extern void liquid_flow (int,int,int,struct trap *, const char *); extern boolean conjoined_pits (struct trap *,struct trap *,int); # 302 "../include/extern.h" extern void magic_map_background (int,int,int); extern void map_background (int,int,int); extern void map_trap (struct trap *,int); extern void map_object (struct obj *,int); extern void map_invisible (int,int); extern void unmap_object (int,int); extern void map_location (int,int,int); extern void feel_location (int,int); extern void newsym (int,int); extern void shieldeff (int,int); extern void tmp_at (int,int); extern void swallowed (int); extern void under_ground (int); extern void under_water (int); extern void see_monsters(void); extern void set_mimic_blocking(void); extern void see_objects(void); extern void see_traps(void); extern void curs_on_u(void); extern int doredraw(void); extern void docrt(void); extern void show_glyph (int,int,int); extern void clear_glyph_buffer(void); extern void row_refresh (int,int,int); extern void cls(void); extern void flush_screen (int); extern int back_to_glyph (int,int); extern int zapdir_to_glyph (int,int,int); extern int glyph_at (int,int); extern void set_wall_state(void); extern void unset_seenv (struct rm *,int,int,int,int); extern int dodrop(void); extern boolean boulder_hits_pool (struct obj *,int,int,int); extern boolean flooreffects (struct obj *,int,int,const char *); extern void doaltarobj (struct obj *); extern boolean canletgo (struct obj *,const char *); extern void dropx (struct obj *); extern void dropy (struct obj *); extern void dropz (struct obj *,int); extern void obj_no_longer_held (struct obj *); extern int doddrop(void); extern int dodown(void); extern int doup(void); extern void save_currentstate(void); extern void goto_level (d_level *,int,int,int); extern void schedule_goto (d_level *,int,int,int, const char *,const char *); extern void deferred_goto(void); extern boolean revive_corpse (struct obj *); extern void revive_mon (union any *, long); extern int donull(void); extern int dowipe(void); extern void set_wounded_legs (long,int); extern void heal_legs(void); extern int getpos (coord *,int,const char *); extern void getpos_sethilite (void (*f)(int) ); extern void new_mname (struct monst *,int); extern void free_mname (struct monst *); extern void new_oname (struct obj *,int); extern void free_oname (struct obj *); extern const char *safe_oname (struct obj *); extern struct monst *christen_monst (struct monst *,const char *); extern struct obj *oname (struct obj *,const char *); extern boolean objtyp_is_callable (int); extern int docallcmd(void); extern void docall (struct obj *); extern const char *rndghostname(void); extern char *x_monnam (struct monst *,int,const char *,int,int); extern char *l_monnam (struct monst *); extern char *mon_nam (struct monst *); extern char *noit_mon_nam (struct monst *); extern char *Monnam (struct monst *); extern char *noit_Monnam (struct monst *); extern char *m_monnam (struct monst *); extern char *y_monnam (struct monst *); extern char *Adjmonnam (struct monst *,const char *); extern char *Amonnam (struct monst *); extern char *a_monnam (struct monst *); extern char *distant_monnam (struct monst *,int,char *); extern char *rndmonnam (char *); extern const char *hcolor (const char *); extern const char *rndcolor(void); extern const char *roguename(void); extern struct obj *realloc_obj (struct obj *, int, genericptr_t, int, const char *); extern char *coyotename (struct monst *,char *); extern const char *noveltitle (int *); extern const char *lookup_novel (const char *, int *); # 413 "../include/extern.h" extern void off_msg (struct obj *); extern void set_wear (struct obj *); extern boolean donning (struct obj *); extern boolean doffing (struct obj *); extern void cancel_don(void); extern int stop_donning (struct obj *); extern int Armor_off(void); extern int Armor_gone(void); extern int Helmet_off(void); extern int Gloves_off(void); extern int Boots_off(void); extern int Cloak_off(void); extern int Shield_off(void); extern int Shirt_off(void); extern void Amulet_off(void); extern void Ring_on (struct obj *); extern void Ring_off (struct obj *); extern void Ring_gone (struct obj *); extern void Blindf_on (struct obj *); extern void Blindf_off (struct obj *); extern int dotakeoff(void); extern int doremring(void); extern int cursed (struct obj *); extern int armoroff (struct obj *); extern int canwearobj (struct obj *, long *, int); extern int dowear(void); extern int doputon(void); extern void find_ac(void); extern void glibr(void); extern struct obj *some_armor (struct monst *); extern struct obj *stuck_ring (struct obj *,int); extern struct obj *unchanger(void); extern void reset_remarm(void); extern int doddoremarm(void); extern int destroy_arm (struct obj *); extern void adj_abon (struct obj *,int); extern boolean inaccessible_equipment (struct obj *,const char *,int); extern void newedog (struct monst *); extern void free_edog (struct monst *); extern void initedog (struct monst *); extern struct monst *make_familiar (struct obj *,int,int,int); extern struct monst *makedog(void); extern void update_mlstmv(void); extern void losedogs(void); extern void mon_arrive (struct monst *,int); extern void mon_catchup_elapsed_time (struct monst *,long); extern void keepdogs (int); extern void migrate_to_level (struct monst *,int,int,coord *); extern int dogfood (struct monst *,struct obj *); extern boolean tamedog (struct monst *,struct obj *); extern void abuse_dog (struct monst *); extern void wary_dog (struct monst *, int); extern struct obj *droppables (struct monst *); extern int dog_nutrition (struct monst *,struct obj *); extern int dog_eat (struct monst *,struct obj *,int,int,int); extern int dog_move (struct monst *,int); extern void finish_meating (struct monst *); extern boolean ghitm (struct monst *,struct obj *); extern void container_impact_dmg (struct obj *,int,int); extern int dokick(void); extern boolean ship_object (struct obj *,int,int,int); extern void obj_delivery (int); extern schar down_gate (int,int); extern void impact_drop (struct obj *,int,int,int); extern int dothrow(void); extern int dofire(void); extern void endmultishot (int); extern void hitfloor (struct obj *); extern void hurtle (int,int,int,int); extern void mhurtle (struct monst *,int,int,int); extern void throwit (struct obj *,long,int); extern int omon_adj (struct monst *,struct obj *,int); extern int thitmonst (struct monst *,struct obj *); extern int hero_breaks (struct obj *,int,int,int); extern int breaks (struct obj *,int,int); extern void release_camera_demon (struct obj *, int,int); extern void breakobj (struct obj *,int,int,int,int); extern boolean breaktest (struct obj *); extern boolean walk_path (coord *, coord *, boolean (*)(genericptr_t,int,int), genericptr_t); extern boolean hurtle_step (genericptr_t, int, int); extern int def_char_to_objclass (int); extern int def_char_to_monclass (int); extern void switch_symbols (int); extern void assign_graphics (int); extern void init_r_symbols(void); extern void init_symbols(void); extern void update_bouldersym(void); extern void init_showsyms(void); extern void init_l_symbols(void); extern void clear_symsetentry (int,int); extern void update_l_symset (struct symparse *,int); extern void update_r_symset (struct symparse *,int); extern boolean cursed_object_at (int, int); extern void save_dungeon (int,int,int); extern void restore_dungeon (int); extern void insert_branch (branch *,int); extern void init_dungeons(void); extern s_level *find_level (const char *); extern s_level *Is_special (d_level *); extern branch *Is_branchlev (d_level *); extern xchar ledger_no (d_level *); extern xchar maxledgerno(void); extern schar depth (d_level *); extern xchar dunlev (d_level *); extern xchar dunlevs_in_dungeon (d_level *); extern xchar ledger_to_dnum (int); extern xchar ledger_to_dlev (int); extern xchar deepest_lev_reached (int); extern boolean on_level (d_level *,d_level *); extern void next_level (int); extern void prev_level (int); extern void u_on_newpos (int,int); extern void u_on_rndspot (int); extern void u_on_sstairs (int); extern void u_on_upstairs(void); extern void u_on_dnstairs(void); extern boolean On_stairs (int,int); extern void get_level (d_level *,int); extern boolean Is_botlevel (d_level *); extern boolean Can_fall_thru (d_level *); extern boolean Can_dig_down (d_level *); extern boolean Can_rise_up (int,int,d_level *); extern boolean has_ceiling (d_level *); extern boolean In_quest (d_level *); extern boolean In_mines (d_level *); extern branch *dungeon_branch (const char *); extern boolean at_dgn_entrance (const char *); extern boolean In_hell (d_level *); extern boolean In_V_tower (d_level *); extern boolean On_W_tower_level (d_level *); extern boolean In_W_tower (int,int,d_level *); extern void find_hell (d_level *); extern void goto_hell (int,int); extern void assign_level (d_level *,d_level *); extern void assign_rnd_level (d_level *,d_level *,int); extern int induced_align (int); extern boolean Invocation_lev (d_level *); extern xchar level_difficulty(void); extern schar lev_by_name (const char *); extern schar print_dungeon (int,schar *,xchar *); extern char *get_annotation (d_level *); extern int donamelevel(void); extern int dooverview(void); extern void show_overview (int,int); extern void forget_mapseen (int); extern void init_mapseen (d_level *); extern void recalc_mapseen(void); extern void mapseen_temple (struct monst *); extern void room_discovered (int); extern void recbranch_mapseen (d_level *, d_level *); extern void remdun_mapseen (int); # 595 "../include/extern.h" extern void eatmupdate(void); extern boolean is_edible (struct obj *); extern void init_uhunger(void); extern int Hear_again(void); extern void reset_eat(void); extern int doeat(void); extern void gethungry(void); extern void morehungry (int); extern void lesshungry (int); extern boolean is_fainted(void); extern void reset_faint(void); extern void violated_vegetarian(void); extern void newuhs (int); extern struct obj *floorfood (const char *,int); extern void vomit(void); extern int eaten_stat (int,struct obj *); extern void food_disappears (struct obj *); extern void food_substitution (struct obj *,struct obj *); extern void eating_conducts (struct permonst *); extern int eat_brains (struct monst *,struct monst *,int,int *); extern void fix_petrification(void); extern void consume_oeaten (struct obj *,int); extern boolean maybe_finished_meal (int); extern void set_tin_variety (struct obj *,int); extern int tin_variety_txt (char *,int *); extern void tin_details (struct obj *,int,char *); extern boolean Popeye (int); extern void done1 (int); extern int done2(void); extern void done_in_by (struct monst *,int); extern void panic (const char *,...) __attribute__ ((format (printf, 1, 2))); extern void done (int); extern void container_contents (struct obj *,int,int,int); extern void terminate (int); extern int dovanquished(void); extern int num_genocides(void); extern void delayed_killer (int, int, const char*); extern struct kinfo *find_delayed_killer (int); extern void dealloc_killer (struct kinfo*); extern void save_killers (int,int); extern void restore_killers (int); extern char *build_english_list (char *); extern void panictrace_setsignals (int); extern char *random_engraving (char *); extern void wipeout_text (char *,int,unsigned); extern boolean can_reach_floor (int); extern void cant_reach_floor (int,int,int,int); extern const char *surface (int,int); extern const char *ceiling (int,int); extern struct engr *engr_at (int,int); extern int sengr_at (const char *,int,int,int); extern void u_wipe_engr (int); extern void wipe_engr_at (int,int,int,int); extern void read_engr_at (int,int); extern void make_engr_at (int,int,const char *,long,int); extern void del_engr_at (int,int); extern int freehand(void); extern int doengrave(void); extern void sanitize_engravings(void); extern void save_engravings (int,int); extern void rest_engravings (int); extern void del_engr (struct engr *); extern void rloc_engr (struct engr *); extern void make_grave (int,int,const char *); extern int newpw(void); extern int experience (struct monst *,int); extern void more_experienced (int,int); extern void losexp (const char *); extern void newexplevel(void); extern void pluslvl (int); extern long rndexp (int); extern void explode (int,int,int,int,int,int); extern long scatter (int, int, int, unsigned int, struct obj *); extern void splatter_burning_oil (int, int); extern void explode_oil (struct obj *,int,int); extern void makeroguerooms(void); extern void corr (int,int); extern void makerogueghost(void); extern char *fname_encode (const char *, int, char *, char *, int); extern char *fname_decode (int, char *, char *, int); extern const char *fqname (const char *, int, int); extern FILE *fopen_datafile (const char *,const char *,int); extern void set_levelfile_name (char *,int); extern int create_levelfile (int,char *); extern int open_levelfile (int,char *); extern void delete_levelfile (int); extern void clearlocks(void); extern int create_bonesfile (d_level*,char **, char *); extern void commit_bonesfile (d_level *); extern int open_bonesfile (d_level*,char **); extern int delete_bonesfile (d_level*); extern void compress_bonesfile(void); extern void set_savefile_name (int); extern void save_savefile_name (int); extern void set_error_savefile(void); extern int create_savefile(void); extern int open_savefile(void); extern int delete_savefile(void); extern int restore_saved_game(void); extern void nh_compress (const char *); extern void nh_uncompress (const char *); extern boolean lock_file (const char *,int,int); extern void unlock_file (const char *); extern boolean read_config_file (const char *, int); extern void check_recordfile (const char *); extern void read_wizkit(void); extern int read_sym_file (int); extern int parse_sym_line (char *,int); extern void paniclog (const char *, const char *); extern int validate_prefix_locations (char *); extern char** get_saved_games(void); extern void free_saved_games (char**); extern void assure_syscf_file(void); extern int nhclose (int); extern boolean debugcore (const char *, int); extern boolean read_tribute (const char *,const char *,int); extern void floating_above (const char *); extern void dogushforth (int); extern void dryup (int,int, int); extern void drinkfountain(void); extern void dipfountain (struct obj *); extern void breaksink (int,int); extern void drinksink(void); extern anything *uint_to_any (unsigned); extern anything *long_to_any (long); extern anything *monst_to_any (struct monst *); extern anything *obj_to_any (struct obj *); extern boolean revive_nasty (int,int,const char*); extern void movobj (struct obj *,int,int); extern boolean may_dig (int,int); extern boolean may_passwall (int,int); extern boolean bad_rock (struct permonst *,int,int); extern int cant_squeeze_thru (struct monst *); extern boolean invocation_pos (int,int); extern boolean test_move (int, int, int, int, int); extern boolean u_rooted(void); extern void domove(void); extern boolean overexertion(void); extern void invocation_message(void); extern boolean pooleffects (int); extern void spoteffects (int); extern char *in_rooms (int,int,int); extern boolean in_town (int,int); extern void check_special_room (int); extern int dopickup(void); extern void lookaround(void); extern boolean crawl_destination (int,int); extern int monster_nearby(void); extern void nomul (int); extern void unmul (const char *); extern void losehp (int,const char *,int); extern int weight_cap(void); extern int inv_weight(void); extern int near_capacity(void); extern int calc_capacity (int); extern int max_capacity(void); extern boolean check_capacity (const char *); extern int inv_cnt (int); extern long money_cnt (struct obj *); extern boolean digit (int); extern boolean letter (int); extern char highc (int); extern char lowc (int); extern char *lcase (char *); extern char *ucase (char *); extern char *upstart (char *); extern char *mungspaces (char *); extern char *eos (char *); extern char *strkitten (char *,int); extern void copynchars (char *,const char *,int); extern char chrcasecpy (int,int); extern char *strcasecpy (char *,const char *); extern char *s_suffix (const char *); extern char *ing_suffix (const char *); extern char *xcrypt (const char *,char *); extern boolean onlyspace (const char *); extern char *tabexpand (char *); extern char *visctrl (int); extern char *strsubst (char *,const char *,const char *); extern const char *ordin (int); extern char *sitoa (int); extern int sgn (int); extern int rounddiv (long,int); extern int dist2 (int,int,int,int); extern int isqrt (int); extern int distmin (int,int,int,int); extern boolean online2 (int,int,int,int); extern boolean pmatch (const char *,const char *); extern boolean pmatchi (const char *,const char *); extern boolean pmatchz (const char *,const char *); extern int strncmpi (const char *,const char *,int); extern char *strstri (const char *,const char *); extern boolean fuzzymatch (const char *,const char *,const char *,int); extern void setrandom(void); extern time_t getnow(void); extern int getyear(void); extern long yyyymmdd (time_t); extern long hhmmss (time_t); extern char *yyyymmddhhmmss (time_t); extern time_t time_from_yyyymmddhhmmss (char *); extern int phase_of_the_moon(void); extern boolean friday_13th(void); extern int night(void); extern int midnight(void); extern struct obj **objarr_init (int); extern void objarr_set (struct obj *, int, struct obj **, int); extern void assigninvlet (struct obj *); extern struct obj *merge_choice (struct obj *,struct obj *); extern int merged (struct obj **,struct obj **); extern void addinv_core1 (struct obj *); extern void addinv_core2 (struct obj *); extern struct obj *addinv (struct obj *); extern struct obj *hold_another_object (struct obj *,const char *,const char *,const char *); extern void useupall (struct obj *); extern void useup (struct obj *); extern void consume_obj_charge (struct obj *,int); extern void freeinv_core (struct obj *); extern void freeinv (struct obj *); extern void delallobj (int,int); extern void delobj (struct obj *); extern struct obj *sobj_at (int,int,int); extern struct obj *nxtobj (struct obj *,int,int); extern struct obj *carrying (int); extern boolean have_lizard(void); extern struct obj *o_on (unsigned int,struct obj *); extern boolean obj_here (struct obj *,int,int); extern boolean wearing_armor(void); extern boolean is_worn (struct obj *); extern struct obj *g_at (int,int); extern struct obj *getobj (const char *,const char *); extern int ggetobj (const char *,int (*)(struct obj *),int,int,unsigned *); extern int askchain (struct obj **,const char *,int,int (*)(struct obj *), int (*)(struct obj *),int,const char *); extern void fully_identify_obj (struct obj *); extern int identify (struct obj *); extern void identify_pack (int,int); extern void learn_unseen_invent(void); extern void prinv (const char *,struct obj *,long); extern char *xprname (struct obj *,const char *,int,int,long,long); extern int ddoinv(void); extern char display_inventory (const char *,int); extern int display_binventory (int,int,int); extern struct obj *display_cinventory (struct obj *); extern struct obj *display_minventory (struct monst *,int,char *); extern int dotypeinv(void); extern const char *dfeature_at (int,int,char *); extern int look_here (int,int); extern int dolook(void); extern boolean will_feel_cockatrice (struct obj *,int); extern void feel_cockatrice (struct obj *,int); extern void stackobj (struct obj *); extern int doprgold(void); extern int doprwep(void); extern int doprarm(void); extern int doprring(void); extern int dopramulet(void); extern int doprtool(void); extern int doprinuse(void); extern void useupf (struct obj *,long); extern char *let_to_name (int,int,int); extern void free_invbuf(void); extern void reassign(void); extern int doorganize(void); extern int count_unpaid (struct obj *); extern int count_buc (struct obj *,int); extern long count_contents (struct obj *,int,int,int); extern void carry_obj_effects (struct obj *); extern const char *currency (long); extern void silly_thing (const char *,struct obj *); extern void getwindowsz(void); extern void getioctls(void); extern void setioctls(void); extern int dosuspend(void); extern void new_light_source (int, int, int, int, union any *); extern void del_light_source (int, union any *); extern void do_light_sources (char **); extern struct monst *find_mid (unsigned, unsigned); extern void save_light_sources (int, int, int); extern void restore_light_sources (int); extern void relink_light_sources (int); extern void obj_move_light_source (struct obj *, struct obj *); extern boolean any_light_source(void); extern void snuff_light_source (int, int); extern boolean obj_sheds_light (struct obj *); extern boolean obj_is_burning (struct obj *); extern void obj_split_light_source (struct obj *, struct obj *); extern void obj_merge_light_sources (struct obj *,struct obj *); extern void obj_adjust_light_radius (struct obj *,int); extern int candle_light_range (struct obj *); extern int arti_light_radius (struct obj *); extern const char *arti_light_description (struct obj *); extern int wiz_light_sources(void); extern boolean picking_lock (int *,int *); extern boolean picking_at (int,int); extern void breakchestlock (struct obj *,int); extern void reset_pick(void); extern int pick_lock (struct obj *); extern int doforce(void); extern boolean boxlock (struct obj *,struct obj *); extern boolean doorlock (struct obj *,int,int); extern int doopen(void); extern boolean stumble_on_door_mimic (int,int); extern int doopen_indir (int,int); extern int doclose(void); # 1042 "../include/extern.h" extern void getmailstatus(void); extern void ckmailstatus(void); extern void readmail (struct obj *); extern void dealloc_monst (struct monst *); extern boolean is_home_elemental (struct permonst *); extern struct monst *clone_mon (struct monst *,int,int); extern int monhp_per_lvl (struct monst *); extern void newmonhp (struct monst *,int); extern struct mextra *newmextra(void); extern void copy_mextra (struct monst *,struct monst *); extern struct monst *makemon (struct permonst *,int,int,int); extern boolean create_critters (int,struct permonst *,int); extern struct permonst *rndmonst(void); extern void reset_rndmonst (int); extern struct permonst *mkclass (int,int); extern int mkclass_poly (int); extern int adj_lev (struct permonst *); extern struct permonst *grow_up (struct monst *,struct monst *); extern int mongets (struct monst *,int); extern int golemhp (int); extern boolean peace_minded (struct permonst *); extern void set_malign (struct monst *); extern void newmcorpsenm (struct monst *); extern void freemcorpsenm (struct monst *); extern void set_mimic_sym (struct monst *); extern int mbirth_limit (int); extern void mimic_hit_msg (struct monst *, int); extern void mkmonmoney (struct monst *, long); extern int bagotricks (struct obj *,int,int *); extern boolean propagate (int, int,int); extern boolean usmellmon (struct permonst *); extern int mapglyph (int, int *, int *, unsigned *, int, int); extern char *encglyph (int); extern void genl_putmixed (winid, int, const char *); extern int castmu (struct monst *,struct attack *,int,int); extern int buzzmu (struct monst *,struct attack *); extern int fightm (struct monst *); extern int mattackm (struct monst *,struct monst *); extern boolean engulf_target (struct monst *,struct monst *); extern int mdisplacem (struct monst *,struct monst *,int); extern void paralyze_monst (struct monst *,int); extern int sleep_monst (struct monst *,int,int); extern void slept_monst (struct monst *); extern void xdrainenergym (struct monst *,int); extern long attk_protection (int); extern void rustm (struct monst *,struct obj *); extern const char *mpoisons_subj (struct monst *,struct attack *); extern void u_slow_down(void); extern struct monst *cloneu(void); extern void expels (struct monst *,struct permonst *,int); extern struct attack *getmattk (struct permonst *,int,int *,struct attack *); extern int mattacku (struct monst *); extern int magic_negation (struct monst *); extern boolean gulp_blnd_check(void); extern int gazemu (struct monst *,struct attack *); extern void mdamageu (struct monst *,int); extern int could_seduce (struct monst *,struct monst *,struct attack *); extern int doseduce (struct monst *); extern void newemin (struct monst *); extern void free_emin (struct monst *); extern int monster_census (int); extern int msummon (struct monst *); extern void summon_minion (int,int); extern int demon_talk (struct monst *); extern long bribe (struct monst *); extern int dprince (int); extern int dlord (int); extern int llord(void); extern int ndemon (int); extern int lminion(void); extern void lose_guardian_angel (struct monst *); extern void gain_guardian_angel(void); extern void sort_rooms(void); extern void add_room (int,int,int,int,int,int,int); extern void add_subroom (struct mkroom *,int,int,int,int, int,int,int); extern void makecorridors(void); extern void add_door (int,int,struct mkroom *); extern void mklev(void); extern void topologize (struct mkroom *); extern void place_branch (branch *,int,int); extern boolean occupied (int,int); extern int okdoor (int,int); extern void dodoor (int,int,struct mkroom *); extern void mktrap (int,int,struct mkroom *,coord*); extern void mkstairs (int,int,int,struct mkroom *); extern void mkinvokearea(void); extern void mineralize (int, int, int, int, int); void flood_fill_rm (int,int,int,int,int); void remove_rooms (int,int,int,int); extern void wallification (int,int,int,int); extern void walkfrom (int,int,int); extern void makemaz (const char *); extern void mazexy (coord *); extern void bound_digging(void); extern void mkportal (int,int,int,int); extern boolean bad_location (int,int,int,int,int,int); extern void place_lregion (int,int,int,int, int,int,int,int, int,d_level *); extern void fumaroles(void); extern void movebubbles(void); extern void water_friction(void); extern void save_waterlevel (int,int); extern void restore_waterlevel (int); extern const char *waterbody_name (int,int); extern struct oextra *newoextra(void); extern void copy_oextra (struct obj *,struct obj *); extern void dealloc_oextra (struct oextra *); extern void newomonst (struct obj *); extern void free_omonst (struct obj *); extern void newomid (struct obj *); extern void free_omid (struct obj *); extern void newolong (struct obj *); extern void free_olong (struct obj *); extern void new_omailcmd (struct obj *,const char *); extern void free_omailcmd (struct obj *); extern struct obj *mkobj_at (int,int,int,int); extern struct obj *mksobj_at (int,int,int,int,int); extern struct obj *mkobj (int,int); extern int rndmonnum(void); extern boolean bogon_is_pname (int); extern struct obj *splitobj (struct obj *,long); extern void replace_object (struct obj *,struct obj *); extern void bill_dummy_object (struct obj *); extern void costly_alteration (struct obj *,int); extern struct obj *mksobj (int,int,int); extern int bcsign (struct obj *); extern int weight (struct obj *); extern struct obj *mkgold (long,int,int); extern struct obj *mkcorpstat (int,struct monst *,struct permonst *,int,int,unsigned); extern int corpse_revive_type (struct obj *); extern struct obj *obj_attach_mid (struct obj *, unsigned); extern struct monst *get_mtraits (struct obj *, int); extern struct obj *mk_tt_object (int,int,int); extern struct obj *mk_named_object (int,struct permonst *,int,int,const char *); extern struct obj *rnd_treefruit_at (int, int); extern void set_corpsenm (struct obj *, int); extern void start_corpse_timeout (struct obj *); extern void bless (struct obj *); extern void unbless (struct obj *); extern void curse (struct obj *); extern void uncurse (struct obj *); extern void blessorcurse (struct obj *,int); extern boolean is_flammable (struct obj *); extern boolean is_rottable (struct obj *); extern void place_object (struct obj *,int,int); extern void remove_object (struct obj *); extern void discard_minvent (struct monst *); extern void obj_extract_self (struct obj *); extern void extract_nobj (struct obj *, struct obj **); extern void extract_nexthere (struct obj *, struct obj **); extern int add_to_minv (struct monst *, struct obj *); extern struct obj *add_to_container (struct obj *, struct obj *); extern void add_to_migration (struct obj *); extern void add_to_buried (struct obj *); extern void dealloc_obj (struct obj *); extern void obj_ice_effects (int, int, int); extern long peek_at_iced_corpse_age (struct obj *); extern int hornoplenty (struct obj *,int); extern void obj_sanity_check(void); extern struct obj* obj_nexto (struct obj*); extern struct obj* obj_nexto_xy (int, int, int, unsigned); extern struct obj* obj_absorb (struct obj**, struct obj**); extern struct obj* obj_meld (struct obj**, struct obj**); extern void mkroom (int); extern void fill_zoo (struct mkroom *); extern struct permonst *antholemon(void); extern boolean nexttodoor (int,int); extern boolean has_dnstairs (struct mkroom *); extern boolean has_upstairs (struct mkroom *); extern int somex (struct mkroom *); extern int somey (struct mkroom *); extern boolean inside_room (struct mkroom *,int,int); extern boolean somexy (struct mkroom *,coord *); extern void mkundead (coord *,int,int); extern struct permonst *courtmon(void); extern void save_rooms (int); extern void rest_rooms (int); extern struct mkroom *search_special (int); extern int cmap_to_type (int); extern int undead_to_corpse (int); extern int genus (int,int); extern int pm_to_cham (int); extern int minliquid (struct monst *); extern int movemon(void); extern int meatmetal (struct monst *); extern int meatobj (struct monst *); extern void mpickgold (struct monst *); extern boolean mpickstuff (struct monst *,const char *); extern int curr_mon_load (struct monst *); extern int max_mon_load (struct monst *); extern boolean can_carry (struct monst *,struct obj *); extern int mfndpos (struct monst *,coord *,long *,long); extern boolean monnear (struct monst *,int,int); extern void dmonsfree(void); extern int mcalcmove (struct monst*); extern void mcalcdistress(void); extern void replmon (struct monst *,struct monst *); extern void relmon (struct monst *,struct monst **); extern struct obj *mlifesaver (struct monst *); extern boolean corpse_chance (struct monst *,struct monst *,int); extern void mondead (struct monst *); extern void mondied (struct monst *); extern void mongone (struct monst *); extern void monstone (struct monst *); extern void monkilled (struct monst *,const char *,int); extern void unstuck (struct monst *); extern void killed (struct monst *); extern void xkilled (struct monst *,int); extern void mon_to_stone (struct monst*); extern void mnexto (struct monst *); extern void maybe_mnexto (struct monst *); extern boolean mnearto (struct monst *,int,int,int); extern void m_respond (struct monst *); extern void setmangry (struct monst *); extern void wakeup (struct monst *); extern void wake_nearby(void); extern void wake_nearto (int,int,int); extern void seemimic (struct monst *); extern void rescham(void); extern void restartcham(void); extern void restore_cham (struct monst *); extern boolean hideunder (struct monst*); extern void hide_monst (struct monst *); extern void mon_animal_list (int); extern int select_newcham_form (struct monst *); extern void mgender_from_permonst (struct monst *, struct permonst *); extern int newcham (struct monst *,struct permonst *,int,int); extern int can_be_hatched (int); extern int egg_type_from_parent (int,int); extern boolean dead_species (int,int); extern void kill_genocided_monsters(void); extern void golemeffects (struct monst *,int,int); extern boolean angry_guards (int); extern void pacify_guards(void); extern void decide_to_shapeshift (struct monst *,int); extern void set_mon_data (struct monst *,struct permonst *,int); extern struct attack *attacktype_fordmg (struct permonst *,int,int); extern boolean attacktype (struct permonst *,int); extern boolean noattacks (struct permonst *); extern boolean poly_when_stoned (struct permonst *); extern boolean resists_drli (struct monst *); extern boolean resists_magm (struct monst *); extern boolean resists_blnd (struct monst *); extern boolean can_blnd (struct monst *,struct monst *,int,struct obj *); extern boolean ranged_attk (struct permonst *); extern boolean hates_silver (struct permonst *); extern boolean mon_hates_silver (struct monst *); extern boolean passes_bars (struct permonst *); extern boolean can_blow (struct monst *); extern boolean can_be_strangled (struct monst *); extern boolean can_track (struct permonst *); extern boolean breakarm (struct permonst *); extern boolean sliparm (struct permonst *); extern boolean sticks (struct permonst *); extern boolean cantvomit (struct permonst *); extern int num_horns (struct permonst *); extern struct attack *dmgtype_fromattack (struct permonst *,int,int); extern boolean dmgtype (struct permonst *,int); extern int max_passive_dmg (struct monst *,struct monst *); extern boolean same_race (struct permonst *,struct permonst *); extern int monsndx (struct permonst *); extern int name_to_mon (const char *); extern int name_to_monclass (const char *,int *); extern int gender (struct monst *); extern int pronoun_gender (struct monst *); extern boolean levl_follower (struct monst *); extern int little_to_big (int); extern int big_to_little (int); extern const char *locomotion (const struct permonst *,const char *); extern const char *stagger (const struct permonst *,const char *); extern const char *on_fire (struct permonst *,struct attack *); extern const struct permonst *raceptr (struct monst *); extern boolean olfaction (struct permonst *); extern boolean itsstuck (struct monst *); extern boolean mb_trapped (struct monst *); extern boolean monhaskey (struct monst *,int); extern void mon_regen (struct monst *,int); extern int dochugw (struct monst *); extern boolean onscary (int,int,struct monst *); extern void monflee (struct monst *, int, int, int); extern void mon_yells (struct monst *, const char *); extern int dochug (struct monst *); extern int m_move (struct monst *,int); extern void dissolve_bars (int,int); extern boolean closed_door (int,int); extern boolean accessible (int,int); extern void set_apparxy (struct monst *); extern boolean can_ooze (struct monst *); extern boolean can_fog (struct monst *); extern boolean should_displace (struct monst *,coord *,long *,int, int,int); extern boolean undesirable_disp (struct monst *,int,int); extern void monst_init(void); extern void monstr_init(void); extern struct monst *mk_mplayer (struct permonst *,int, int,int); extern void create_mplayers (int,int); extern void mplayer_talk (struct monst *); # 1459 "../include/extern.h" extern int thitu (int,int,struct obj *,const char *); extern int ohitmon (struct monst *,struct obj *,int,int); extern void thrwmu (struct monst *); extern int spitmu (struct monst *,struct attack *); extern int breamu (struct monst *,struct attack *); extern boolean linedup (int,int,int,int,int); extern boolean lined_up (struct monst *); extern struct obj *m_carrying (struct monst *,int); extern void m_useupall (struct monst *,struct obj *); extern void m_useup (struct monst *,struct obj *); extern void m_throw (struct monst *,int,int,int,int,int,struct obj *); extern boolean hits_bars (struct obj **,int,int,int,int); extern boolean find_defensive (struct monst *); extern int use_defensive (struct monst *); extern int rnd_defensive_item (struct monst *); extern boolean find_offensive (struct monst *); extern int use_offensive (struct monst *); extern int rnd_offensive_item (struct monst *); extern boolean find_misc (struct monst *); extern int use_misc (struct monst *); extern int rnd_misc_item (struct monst *); extern boolean searches_for_item (struct monst *,struct obj *); extern boolean mon_reflects (struct monst *,const char *); extern boolean ureflects (const char *,const char *); extern boolean munstone (struct monst *,int); extern boolean munslime (struct monst *,int); extern void awaken_soldiers (struct monst *); extern int do_play_instrument (struct obj *); # 1504 "../include/extern.h" extern struct nhregex * regex_init(void); extern boolean regex_compile (const char *, struct nhregex *); extern const char *regex_error_desc (struct nhregex *); extern boolean regex_match (const char *, struct nhregex*); extern void regex_free (struct nhregex *); # 1525 "../include/extern.h" extern void init_objects(void); extern void obj_shuffle_range (int,int *,int *); extern int find_skates(void); extern void oinit(void); extern void savenames (int,int); extern void restnames (int); extern void discover_object (int,int,int); extern void undiscover_object (int); extern int dodiscovered(void); extern int doclassdisco(void); extern void rename_disco(void); extern void objects_init(void); extern char *obj_typename (int); extern char *simple_typename (int); extern boolean obj_is_pname (struct obj *); extern char *distant_name (struct obj *,char *(*)(struct obj *)); extern char *fruitname (int); extern char *xname (struct obj *); extern char *mshot_xname (struct obj *); extern boolean the_unique_obj (struct obj *); extern boolean the_unique_pm (struct permonst *); extern char *doname (struct obj *); extern boolean not_fully_identified (struct obj *); extern char *corpse_xname (struct obj *,const char *,unsigned); extern char *cxname (struct obj *); extern char *cxname_singular (struct obj *); extern char *killer_xname (struct obj *); extern char *short_oname (struct obj *,char *(*)(struct obj *),char *(*)(struct obj *), unsigned); extern const char *singular (struct obj *,char *(*)(struct obj *)); extern char *an (const char *); extern char *An (const char *); extern char *The (const char *); extern char *the (const char *); extern char *aobjnam (struct obj *,const char *); extern char *yobjnam (struct obj *,const char *); extern char *Yobjnam2 (struct obj *,const char *); extern char *Tobjnam (struct obj *,const char *); extern char *otense (struct obj *,const char *); extern char *vtense (const char *,const char *); extern char *Doname2 (struct obj *); extern char *yname (struct obj *); extern char *Yname2 (struct obj *); extern char *ysimple_name (struct obj *); extern char *Ysimple_name2 (struct obj *); extern char *simpleonames (struct obj *); extern char *ansimpleoname (struct obj *); extern char *thesimpleoname (struct obj *); extern char *bare_artifactname (struct obj *); extern char *makeplural (const char *); extern char *makesingular (const char *); extern struct obj *readobjnam (char *,struct obj *); extern int rnd_class (int,int); extern const char *suit_simple_name (struct obj *); extern const char *cloak_simple_name (struct obj *); extern const char *helm_simple_name (struct obj *); extern const char *mimic_obj_name (struct monst *); extern char *safe_qbuf (char *,const char *,const char *,struct obj *, char *(*)(struct obj *),char *(*)(struct obj *),const char *); extern boolean match_optname (const char *,const char *,int,int); extern void initoptions(void); extern void initoptions_init(void); extern void initoptions_finish(void); extern void parseoptions (char *,int,int); extern int doset(void); extern int dotogglepickup(void); extern void option_help(void); extern void next_opt (winid,const char *); extern int fruitadd (char *,struct fruit *); extern int choose_classes_menu (const char *,int,int,char *,char *); extern void add_menu_cmd_alias (int, int); extern char map_menu_cmd (int); extern void assign_warnings (uchar *); extern char *nh_getenv (const char *); extern void set_duplicate_opt_detection (int); extern void set_wc_option_mod_status (unsigned long, int); extern void set_wc2_option_mod_status (unsigned long, int); extern void set_option_mod_status (const char *,int); extern int add_autopickup_exception (const char *); extern void free_autopickup_exceptions(void); extern int load_symset (const char *,int); extern void parsesymbols (char *); extern struct symparse *match_sym (char *); extern void set_playmode(void); extern int sym_val (char *); extern boolean add_menu_coloring (char *); extern boolean get_menu_coloring (char *, int *, int *); extern void free_menu_coloring(void); extern char *self_lookat (char *); extern int dowhatis(void); extern int doquickwhatis(void); extern int doidtrap(void); extern int dowhatdoes(void); extern char *dowhatdoes_core (int, char *); extern int dohelp(void); extern int dohistory(void); extern int do_screen_description (coord, int, int, char *, const char **); extern int do_look (int, coord *); # 1688 "../include/extern.h" extern int collect_obj_classes (char *,struct obj *,int,boolean (*) (struct obj *), int *); extern boolean rider_corpse_revival (struct obj *,int); extern void add_valid_menu_class (int); extern boolean allow_all (struct obj *); extern boolean allow_category (struct obj *); extern boolean is_worn_by_type (struct obj *); extern int ck_bag (struct obj *); extern int pickup (int); extern int pickup_object (struct obj *, long, int); extern int query_category (const char *, struct obj *, int, menu_item **, int); extern int query_objlist (const char *, struct obj *, int, menu_item **, int, boolean (*)(struct obj *)); extern struct obj *pick_obj (struct obj *); extern int encumber_msg(void); extern int doloot(void); extern boolean container_gone (int (*)(struct obj *)); extern boolean u_handsy(void); extern int use_container (struct obj **,int); extern int loot_mon (struct monst *,int *,boolean *); extern int dotip(void); extern boolean is_autopickup_exception (struct obj *, int); extern void pline (const char *,...) __attribute__ ((format (printf, 1, 2))); extern void Norep (const char *,...) __attribute__ ((format (printf, 1, 2))); extern void free_youbuf(void); extern void You (const char *,...) __attribute__ ((format (printf, 1, 2))); extern void Your (const char *,...) __attribute__ ((format (printf, 1, 2))); extern void You_feel (const char *,...) __attribute__ ((format (printf, 1, 2))); extern void You_cant (const char *,...) __attribute__ ((format (printf, 1, 2))); extern void You_hear (const char *,...) __attribute__ ((format (printf, 1, 2))); extern void You_see (const char *,...) __attribute__ ((format (printf, 1, 2))); extern void pline_The (const char *,...) __attribute__ ((format (printf, 1, 2))); extern void There (const char *,...) __attribute__ ((format (printf, 1, 2))); extern void verbalize (const char *,...) __attribute__ ((format (printf, 1, 2))); extern void raw_printf (const char *,...) __attribute__ ((format (printf, 1, 2))); extern void impossible (const char *,...) __attribute__ ((format (printf, 1, 2))); extern const char *align_str (int); extern void mstatusline (struct monst *); extern void ustatusline(void); extern void self_invis_message(void); extern void pudding_merge_message (struct obj*, struct obj*); extern void set_uasmon(void); extern void float_vs_flight(void); extern void change_sex(void); extern void polyself (int); extern int polymon (int); extern void rehumanize(void); extern int dobreathe(void); extern int dospit(void); extern int doremove(void); extern int dospinweb(void); extern int dosummon(void); extern int dogaze(void); extern int dohide(void); extern int dopoly(void); extern int domindblast(void); extern void skinback (int); extern const char *mbodypart (struct monst *,int); extern const char *body_part (int); extern int poly_gender(void); extern void ugolemeffects (int,int); extern void set_itimeout (long *,long); extern void incr_itimeout (long *,int); extern void make_confused (long,int); extern void make_stunned (long,int); extern void make_blinded (long,int); extern void make_sick (long, const char *, int,int); extern void make_slimed (long,const char *); extern void make_stoned (long,const char *,int,const char *); extern void make_vomiting (long,int); extern boolean make_hallucinated (long,int,long); extern int dodrink(void); extern int dopotion (struct obj *); extern int peffects (struct obj *); extern void healup (int,int,int,int); extern void strange_feeling (struct obj *,const char *); extern void potionhit (struct monst *,struct obj *,int); extern void potionbreathe (struct obj *); extern int dodip(void); extern void mongrantswish (struct monst **); extern void djinni_from_bottle (struct obj *); extern struct monst *split_mon (struct monst *,struct monst *); extern const char *bottlename(void); extern boolean critically_low_hp (int); extern int dosacrifice(void); extern boolean can_pray (int); extern int dopray(void); extern const char *u_gname(void); extern int doturn(void); extern const char *a_gname(void); extern const char *a_gname_at (int x,int y); extern const char *align_gname (int); extern const char *halu_gname (int); extern const char *align_gtitle (int); extern void altar_wrath (int,int); extern int move_special (struct monst *,int,int,int,int, int,int,int,int); extern char temple_occupied (char *); extern boolean inhistemple (struct monst *); extern int pri_move (struct monst *); extern void priestini (d_level *,struct mkroom *,int,int,int); extern aligntyp mon_aligntyp (struct monst *); extern char *priestname (struct monst *,char *); extern boolean p_coaligned (struct monst *); extern struct monst *findpriest (int); extern void intemple (int); extern void forget_temple_entry (struct monst *); extern void priest_talk (struct monst *); extern struct monst *mk_roamer (struct permonst *,int, int,int,int); extern void reset_hostility (struct monst *); extern boolean in_your_sanctuary (struct monst *,int,int); extern void ghod_hitsu (struct monst *); extern void angry_priest(void); extern void clearpriests(void); extern void restpriest (struct monst *,int); extern void newepri (struct monst *); extern void free_epri (struct monst *); extern void onquest(void); extern void nemdead(void); extern void artitouch (struct obj *); extern boolean ok_to_quest(void); extern void leader_speaks (struct monst *); extern void nemesis_speaks(void); extern void quest_chat (struct monst *); extern void quest_talk (struct monst *); extern void quest_stat_check (struct monst *); extern void finish_quest (struct obj *); extern void load_qtlist(void); extern void unload_qtlist(void); extern short quest_info (int); extern const char *ldrname(void); extern boolean is_quest_artifact (struct obj*); extern void com_pager (int); extern void qt_pager (int); extern struct permonst *qt_montype(void); extern void deliver_splev_message(void); # 1867 "../include/extern.h" extern void learnscroll (struct obj *); extern char *tshirt_text (struct obj *, char *); extern int doread(void); extern boolean is_chargeable (struct obj *); extern void recharge (struct obj *,int); extern void forget_objects (int); extern void forget_levels (int); extern void forget_traps(void); extern void forget_map (int); extern int seffects (struct obj *); extern void drop_boulder_on_player (int, int, int, int); extern boolean drop_boulder_on_monster (int, int, int, int); extern void wand_explode (struct obj *,int); extern void litroom (int,struct obj *); extern void do_genocide (int); extern void punish (struct obj *); extern void unpunish(void); extern boolean cant_revive (int *,int,struct obj *); extern boolean create_particular(void); extern void init_rect(void); extern NhRect *get_rect (NhRect *); extern NhRect *rnd_rect(void); extern void remove_rect (NhRect *); extern void add_rect (NhRect *); extern void split_rects (NhRect *,NhRect *); extern void clear_regions(void); extern void run_regions(void); extern boolean in_out_region (int,int); extern boolean m_in_out_region (struct monst *,int,int); extern void update_player_regions(void); extern void update_monster_region (struct monst *); extern NhRegion *visible_region_at (int,int); extern void show_region (NhRegion*, int, int); extern void save_regions (int,int); extern void rest_regions (int,int); extern NhRegion* create_gas_cloud (int, int, int, int); extern boolean region_danger(void); extern void region_safety(void); extern void inven_inuse (int); extern int dorecover (int); extern void restcemetery (int,struct cemetery **); extern void trickery (char *); extern void getlev (int,int,int,int); extern void get_plname_from_file (int, char *); extern void minit(void); extern boolean lookup_id_mapping (unsigned, unsigned *); extern void mread (int,genericptr_t,unsigned int); extern int validate (int,const char *); extern void reset_restpref(void); extern void set_restpref (const char *); extern void set_savepref (const char *); extern void genl_outrip (winid,int,time_t); extern int rn2 (int); extern int rnl (int); extern int rnd (int); extern int d (int,int); extern int rne (int); extern int rnz (int); extern boolean validrole (int); extern boolean validrace (int, int); extern boolean validgend (int, int, int); extern boolean validalign (int, int, int); extern int randrole(void); extern int randrace (int); extern int randgend (int, int); extern int randalign (int, int); extern int str2role (const char *); extern int str2race (const char *); extern int str2gend (char *); extern int str2align (char *); extern boolean ok_role (int, int, int, int); extern int pick_role (int, int, int, int); extern boolean ok_race (int, int, int, int); extern int pick_race (int, int, int, int); extern boolean ok_gend (int, int, int, int); extern int pick_gend (int, int, int, int); extern boolean ok_align (int, int, int, int); extern int pick_align (int, int, int, int); extern void rigid_role_checks(void); extern boolean setrolefilter (char *); extern char *build_plselection_prompt (char *,int,int,int,int,int); extern char *root_plselection_prompt (char *,int,int,int,int,int); extern void plnamesuffix(void); extern void role_selection_prolog (int,winid); extern void role_menu_extra (int,winid); extern void role_init(void); extern const char *Hello (struct monst *); extern const char *Goodbye(void); extern char *getrumor (int,char *, int); extern char *get_rnd_text (const char *, char *); extern void outrumor (int,int); extern void outoracle (int, int); extern void save_oracles (int,int); extern void restore_oracles (int); extern int doconsult (struct monst *); extern void rumor_check(void); extern int dosave(void); extern int dosave0(void); extern boolean tricked_fileremoved (int, char *); extern void savestateinlock(void); extern void savelev (int,int,int); extern genericptr_t mon_to_buffer (struct monst *, int *); extern void bufon (int); extern void bufoff (int); extern void bflush (int); extern void bwrite (int,genericptr_t,unsigned int); extern void bclose (int); extern void def_bclose (int); extern void savecemetery (int,int,struct cemetery **); extern void savefruitchn (int,int); extern void store_plname_in_file (int); extern void free_dungeons(void); extern void freedynamicdata(void); extern void store_savefileinfo (int); extern long money2mon (struct monst *, long); extern void money2u (struct monst *, long); extern void shkgone (struct monst *); extern void set_residency (struct monst *,int); extern void replshk (struct monst *,struct monst *); extern void restshk (struct monst *,int); extern char inside_shop (int,int); extern void u_left_shop (char *,int); extern void remote_burglary (int,int); extern void u_entered_shop (char *); extern void pick_pick (struct obj *); extern boolean same_price (struct obj *,struct obj *); extern void shopper_financial_report(void); extern int inhishop (struct monst *); extern struct monst *shop_keeper (int); extern boolean tended_shop (struct mkroom *); extern boolean is_unpaid (struct obj *); extern void delete_contents (struct obj *); extern void obfree (struct obj *,struct obj *); extern void home_shk (struct monst *,int); extern void make_happy_shk (struct monst *,int); extern void make_happy_shoppers (int); extern void hot_pursuit (struct monst *); extern void make_angry_shk (struct monst *,int,int); extern int dopay(void); extern boolean paybill (int); extern void finish_paybill(void); extern struct obj *find_oid (unsigned); extern long contained_cost (struct obj *,struct monst *,long,int, int); extern long contained_gold (struct obj *); extern void picked_container (struct obj *); extern void alter_cost (struct obj *,long); extern long unpaid_cost (struct obj *,int); extern boolean billable (struct monst **,struct obj *,int,int); extern void addtobill (struct obj *,int,int,int); extern void splitbill (struct obj *,struct obj *); extern void subfrombill (struct obj *,struct monst *); extern long stolen_value (struct obj *,int,int,int,int); extern void sellobj_state (int); extern void sellobj (struct obj *,int,int); extern int doinvbill (int); extern struct monst *shkcatch (struct obj *,int,int); extern void add_damage (int,int,long); extern int repair_damage (struct monst *,struct damage *,int); extern int shk_move (struct monst *); extern void after_shk_move (struct monst *); extern boolean is_fshk (struct monst *); extern void shopdig (int); extern void pay_for_damage (const char *,int); extern boolean costly_spot (int,int); extern struct obj *shop_object (int,int); extern void price_quote (struct obj *); extern void shk_chat (struct monst *); extern void check_unpaid_usage (struct obj *,int); extern void check_unpaid (struct obj *); extern void costly_gold (int,int,long); extern boolean block_door (int,int); extern boolean block_entry (int,int); extern char *shk_your (char *,struct obj *); extern char *Shk_Your (char *,struct obj *); extern void neweshk (struct monst *); extern void free_eshk (struct monst *); extern void stock_room (int,struct mkroom *); extern boolean saleable (struct monst *,struct obj *); extern int get_shop_item (int); extern const char *shkname (struct monst *); extern boolean shkname_is_pname (struct monst *); extern boolean is_izchak (struct monst *,int); extern void take_gold(void); extern int dosit(void); extern void rndcurse(void); extern void attrcurse(void); extern void dosounds(void); extern const char *growl_sound (struct monst *); extern void growl (struct monst *); extern void yelp (struct monst *); extern void whimper (struct monst *); extern void beg (struct monst *); extern int dotalk(void); extern void sys_early_init(void); extern void sysopt_release(void); extern void sysopt_seduce_set (int); # 2131 "../include/extern.h" extern boolean check_room (xchar *,xchar *,xchar *,xchar *,int); extern boolean create_room (int,int,int,int, int,int,int,int); extern void create_secret_door (struct mkroom *,int); extern boolean dig_corridor (coord *,coord *,int,int,int); extern void fill_room (struct mkroom *,int); extern boolean load_special (const char *); extern int study_book (struct obj *); extern void book_disappears (struct obj *); extern void book_substitution (struct obj *,struct obj *); extern void age_spells(void); extern int docast(void); extern int spell_skilltype (int); extern int spelleffects (int,int); extern void losespells(void); extern int dovspell(void); extern void initialspell (struct obj *); extern long somegold (long); extern void stealgold (struct monst *); extern void remove_worn_item (struct obj *,int); extern int steal (struct monst *, char *); extern int mpickobj (struct monst *,struct obj *); extern void stealamulet (struct monst *); extern void maybe_absorb_item (struct monst *,struct obj *,int,int); extern void mdrop_obj (struct monst *,struct obj *,int); extern void mdrop_special_objs (struct monst *); extern void relobj (struct monst *,int,int); extern struct obj *findgold (struct obj *); extern void rider_cant_reach(void); extern boolean can_saddle (struct monst *); extern int use_saddle (struct obj *); extern boolean can_ride (struct monst *); extern int doride(void); extern boolean mount_steed (struct monst *, int); extern void exercise_steed(void); extern void kick_steed(void); extern void dismount_steed (int); extern void place_monster (struct monst *,int,int); extern boolean stucksteed (int); extern boolean goodpos (int,int,struct monst *,unsigned); extern boolean enexto (coord *,int,int,struct permonst *); extern boolean enexto_core (coord *,int,int,struct permonst *,unsigned); extern void teleds (int,int,int); extern boolean safe_teleds (int); extern boolean teleport_pet (struct monst *,int); extern void tele(void); extern boolean scrolltele (struct obj *); extern int dotele(void); extern void level_tele(void); extern void domagicportal (struct trap *); extern void tele_trap (struct trap *); extern void level_tele_trap (struct trap *); extern void rloc_to (struct monst *,int,int); extern boolean rloc (struct monst *, int); extern boolean tele_restrict (struct monst *); extern void mtele_trap (struct monst *, struct trap *,int); extern int mlevel_tele_trap (struct monst *, struct trap *,int,int); extern boolean rloco (struct obj *); extern int random_teleport_level(void); extern boolean u_teleport_mon (struct monst *,int); # 2217 "../include/extern.h" extern void burn_away_slime(void); extern void nh_timeout(void); extern void fall_asleep (int, int); extern void attach_egg_hatch_timeout (struct obj *, long); extern void attach_fig_transform_timeout (struct obj *); extern void kill_egg (struct obj *); extern void hatch_egg (union any *, long); extern void learn_egg_type (int); extern void burn_object (union any *, long); extern void begin_burn (struct obj *, int); extern void end_burn (struct obj *, int); extern void do_storms(void); extern boolean start_timer (long, int, int, union any *); extern long stop_timer (int, union any *); extern long peek_timer (int,union any *); extern void run_timers(void); extern void obj_move_timers (struct obj *, struct obj *); extern void obj_split_timers (struct obj *, struct obj *); extern void obj_stop_timers (struct obj *); extern boolean obj_has_timer (struct obj *,int); extern void spot_stop_timers (int,int,int); extern long spot_time_expires (int,int,int); extern long spot_time_left (int,int,int); extern boolean obj_is_local (struct obj *); extern void save_timers (int,int,int); extern void restore_timers (int,int,int,long); extern void relink_timers (int); extern int wiz_timeout_queue(void); extern void timer_sanity_check(void); extern void formatkiller (char *,unsigned,int); extern void topten (int,time_t); extern void prscore (int,char **); extern struct obj *tt_oname (struct obj *); extern void initrack(void); extern void settrack(void); extern coord *gettrack (int,int); extern boolean burnarmor (struct monst *); extern int erode_obj (struct obj *,const char *,int,int); extern boolean grease_protect (struct obj *,const char *,struct monst *); extern struct trap *maketrap (int,int,int); extern void fall_through (int); extern struct monst *animate_statue (struct obj *,int,int,int,int *); extern struct monst *activate_statue_trap (struct trap *,int,int,int); extern void dotrap (struct trap *, unsigned); extern void seetrap (struct trap *); extern void feeltrap (struct trap *); extern int mintrap (struct monst *); extern void instapetrify (const char *); extern void minstapetrify (struct monst *,int); extern void selftouch (const char *); extern void mselftouch (struct monst *,const char *,int); extern void float_up(void); extern void fill_pit (int,int); extern int float_down (long, long); extern void climb_pit(void); extern boolean fire_damage (struct obj *,int,int,int); extern int fire_damage_chain (struct obj *,int,int,int,int); extern void acid_damage(struct obj *); extern int water_damage (struct obj *,const char*,int); extern void water_damage_chain (struct obj *,int); extern boolean drown(void); extern void drain_en (int); extern int dountrap(void); extern void cnv_trap_obj (int,int,struct trap *,int); extern int untrap (int); extern boolean openholdingtrap (struct monst *,boolean *); extern boolean closeholdingtrap (struct monst *,boolean *); extern boolean openfallingtrap (struct monst *,int,boolean *); extern boolean chest_trap (struct obj *,int,int); extern void deltrap (struct trap *); extern boolean delfloortrap (struct trap *); extern struct trap *t_at (int,int); extern void b_trapped (const char *,int); extern boolean unconscious(void); extern void blow_up_landmine (struct trap *); extern int launch_obj (int,int,int,int,int,int); extern boolean launch_in_progress(void); extern void force_launch_placement(void); extern boolean uteetering_at_seen_pit (struct trap *); extern boolean lava_effects(void); extern void sink_into_lava(void); extern void sokoban_guilt(void); extern void u_init(void); extern void erode_armor (struct monst *,int); extern boolean attack_checks (struct monst *,struct obj *); extern void check_caitiff (struct monst *); extern int find_roll_to_hit (struct monst *,int,struct obj *,int *,int *); extern boolean attack (struct monst *); extern boolean hmon (struct monst *,struct obj *,int); extern int damageum (struct monst *,struct attack *); extern void missum (struct monst *,struct attack *,int); extern int passive (struct monst *,int,int,int,int); extern void passive_obj (struct monst *,struct obj *,struct attack *); extern void stumble_onto_mimic (struct monst *); extern int flash_hits_mon (struct monst *,struct obj *); extern void light_hits_gremlin (struct monst *,int); extern void sethanguphandler (void (*)(int)); extern boolean authorize_wizard_mode(void); extern boolean check_user_string (char *); extern void gettty(void); extern void settty (const char *); extern void setftty(void); extern void intron(void); extern void introff(void); extern void error (const char *,...) __attribute__ ((format (printf, 1, 2))); extern void getlock(void); extern void regularize (char *); extern int dosh(void); extern int child (int); extern boolean file_exists (const char *); # 2381 "../include/extern.h" extern void newegd (struct monst *); extern void free_egd (struct monst *); extern boolean grddead (struct monst *); extern char vault_occupied (char *); extern void invault(void); extern int gd_move (struct monst *); extern void paygd(void); extern long hidden_gold(void); extern boolean gd_sound(void); extern void vault_gd_watching (unsigned int); extern char *version_string (char *); extern char *getversionstring (char *); extern int doversion(void); extern int doextversion(void); extern boolean check_version (struct version_info *, const char *,int); extern boolean uptodate (int,const char *); extern void store_version (int); extern unsigned long get_feature_notice_ver (char *); extern unsigned long get_current_feature_ver(void); extern const char *copyright_banner_line (int); # 2436 "../include/extern.h" extern void vision_init(void); extern int does_block (int,int,struct rm*); extern void vision_reset(void); extern void vision_recalc (int); extern void block_point (int,int); extern void unblock_point (int,int); extern boolean clear_path (int,int,int,int); extern void do_clear_area (int,int,int, void (*)(int,int,genericptr_t),genericptr_t); extern unsigned howmonseen (struct monst *); # 2529 "../include/extern.h" extern const char *weapon_descr (struct obj *); extern int hitval (struct obj *,struct monst *); extern int dmgval (struct obj *,struct monst *); extern struct obj *select_rwep (struct monst *); extern struct obj *select_hwep (struct monst *); extern void possibly_unwield (struct monst *,int); extern void mwepgone (struct monst *); extern int mon_wield_item (struct monst *); extern int abon(void); extern int dbon(void); extern int enhance_weapon_skill(void); extern void unrestrict_weapon_skill (int); extern void use_skill (int,int); extern void add_weapon_skill (int); extern void lose_weapon_skill (int); extern int weapon_type (struct obj *); extern int uwep_skill_type(void); extern int weapon_hit_bonus (struct obj *); extern int weapon_dam_bonus (struct obj *); extern void skill_init (const struct def_skill *); extern void were_change (struct monst *); extern int counter_were (int); extern int were_beastie (int); extern void new_were (struct monst *); extern int were_summon (struct permonst *,int,int *,char *); extern void you_were(void); extern void you_unwere (int); extern void setuwep (struct obj *); extern void setuqwep (struct obj *); extern void setuswapwep (struct obj *); extern int dowield(void); extern int doswapweapon(void); extern int dowieldquiver(void); extern boolean wield_tool (struct obj *,const char *); extern int can_twoweapon(void); extern void drop_uswapwep(void); extern int dotwoweapon(void); extern void uwepgone(void); extern void uswapwepgone(void); extern void uqwepgone(void); extern void untwoweapon(void); extern int chwepon (struct obj *,int); extern int welded (struct obj *); extern void weldmsg (struct obj *); extern void setmnotwielded (struct monst *,struct obj *); extern boolean mwelded (struct obj *); extern void choose_windows (const char *); extern boolean genl_can_suspend_no(void); extern boolean genl_can_suspend_yes(void); extern char genl_message_menu (int,int,const char *); extern void genl_preference_update (const char *); extern char *genl_getmsghistory (int); extern void genl_putmsghistory (const char *,int); extern void nhwindows_hangup(void); extern void amulet(void); extern int mon_has_amulet (struct monst *); extern int mon_has_special (struct monst *); extern int tactics (struct monst *); extern void aggravate(void); extern void clonewiz(void); extern int pick_nasty(void); extern int nasty (struct monst*); extern void resurrect(void); extern void intervene(void); extern void wizdead(void); extern void cuss (struct monst *); extern int get_wormno(void); extern void initworm (struct monst *,int); extern void worm_move (struct monst *); extern void worm_nomove (struct monst *); extern void wormgone (struct monst *); extern void wormhitu (struct monst *); extern void cutworm (struct monst *,int,int,struct obj *); extern void see_wsegs (struct monst *); extern void detect_wsegs (struct monst *,int); extern void save_worm (int,int); extern void rest_worm (int); extern void place_wsegs (struct monst *); extern void remove_worm (struct monst *); extern void place_worm_tail_randomly (struct monst *,int,int); extern int count_wsegs (struct monst *); extern boolean worm_known (struct monst *); extern boolean worm_cross (int,int,int,int); extern void setworn (struct obj *,long); extern void setnotworn (struct obj *); extern long wearslot (struct obj *); extern void mon_set_minvis (struct monst *); extern void mon_adjust_speed (struct monst *,int,struct obj *); extern void update_mon_intrinsics (struct monst *,struct obj *,int,int); extern int find_mac (struct monst *); extern void m_dowear (struct monst *,int); extern struct obj *which_armor (struct monst *,long); extern void mon_break_armor (struct monst *,int); extern void bypass_obj (struct obj *); extern void clear_bypasses(void); extern void bypass_objlist (struct obj *,int); extern struct obj *nxt_unbypassed_obj (struct obj *); extern int racial_exception (struct monst *, struct obj *); extern int dowrite (struct obj *); extern void learnwand (struct obj *); extern int bhitm (struct monst *,struct obj *); extern void probe_monster (struct monst *); extern boolean get_obj_location (struct obj *,xchar *,xchar *,int); extern boolean get_mon_location (struct monst *,xchar *,xchar *,int); extern struct monst *get_container_location (struct obj *obj, int *, int *); extern struct monst *montraits (struct obj *,coord *); extern struct monst *revive (struct obj *,int); extern int unturn_dead (struct monst *); extern void cancel_item (struct obj *); extern boolean drain_item (struct obj *); extern struct obj *poly_obj (struct obj *, int); extern boolean obj_resists (struct obj *,int,int); extern boolean obj_shudders (struct obj *); extern void do_osshock (struct obj *); extern int bhito (struct obj *,struct obj *); extern int bhitpile (struct obj *,int (*)(struct obj *,struct obj *),int,int,int); extern int zappable (struct obj *); extern void zapnodir (struct obj *); extern int dozap(void); extern int zapyourself (struct obj *,int); extern void ubreatheu (struct attack *); extern int lightdamage (struct obj *,int,int); extern boolean flashburn (long); extern boolean cancel_monst (struct monst *,struct obj *, int,int,int); extern void zapsetup(void); extern void zapwrapup(void); extern void weffects (struct obj *); extern int spell_damage_bonus (int); extern const char *exclam (int force); extern void hit (const char *,struct monst *,const char *); extern void miss (const char *,struct monst *); extern struct monst *bhit (int,int,int,int,int (*)(struct monst *,struct obj *), int (*)(struct obj *,struct obj *),struct obj **); extern struct monst *boomhit (struct obj *,int,int); extern int zhitm (struct monst *,int,int,struct obj **); extern int burn_floor_objects (int,int,int,int); extern void buzz (int,int,int,int,int,int); extern void melt_ice (int,int,const char *); extern void start_melt_ice_timeout (int,int,long); extern void melt_ice_away (union any *, long); extern int zap_over_floor (int,int,int,boolean *,int); extern void fracture_rock (struct obj *); extern boolean break_statue (struct obj *); extern void destroy_item (int,int); extern int destroy_mitem (struct monst *,int,int); extern int resist (struct monst *,int,int,int); extern void makewish(void); # 178 "../include/hack.h" 2 # 1 "../include/winprocs.h" 1 # 9 "../include/winprocs.h" # 1 "../include/botl.h" 1 # 62 "../include/botl.h" extern const char *status_fieldnames[]; # 10 "../include/winprocs.h" 2 struct window_procs { const char *name; unsigned long wincap; unsigned long wincap2; void (*win_init_nhwindows) (int *, char **); void (*win_player_selection)(void); void (*win_askname)(void); void (*win_get_nh_event)(void) ; void (*win_exit_nhwindows) (const char *); void (*win_suspend_nhwindows) (const char *); void (*win_resume_nhwindows)(void); winid (*win_create_nhwindow) (int); void (*win_clear_nhwindow) (winid); void (*win_display_nhwindow) (winid, int); void (*win_destroy_nhwindow) (winid); void (*win_curs) (winid,int,int); void (*win_putstr) (winid, int, const char *); void (*win_putmixed) (winid, int, const char *); void (*win_display_file) (const char *, int); void (*win_start_menu) (winid); void (*win_add_menu) (winid,int,const union any *, int,int,int,const char *, int); void (*win_end_menu) (winid, const char *); int (*win_select_menu) (winid, int, struct mi **); char (*win_message_menu) (int,int,const char *); void (*win_update_inventory)(void); void (*win_mark_synch)(void); void (*win_wait_synch)(void); void (*win_cliparound) (int, int); void (*win_print_glyph) (winid,int,int,int); void (*win_raw_print) (const char *); void (*win_raw_print_bold) (const char *); int (*win_nhgetch)(void); int (*win_nh_poskey) (int *, int *, int *); void (*win_nhbell)(void); int (*win_doprev_message)(void); char (*win_yn_function) (const char *, const char *, int); void (*win_getlin) (const char *,char *); int (*win_get_ext_cmd)(void); void (*win_number_pad) (int); void (*win_delay_output)(void); # 70 "../include/winprocs.h" void (*win_start_screen)(void); void (*win_end_screen)(void); void (*win_outrip) (winid,int,time_t); void (*win_preference_update) (const char *); char * (*win_getmsghistory) (int); void (*win_putmsghistory) (const char *,int); void (*win_status_init)(void); void (*win_status_finish)(void); void (*win_status_enablefield) (int,const char *,const char *,int); void (*win_status_update) (int,genericptr_t,int,int); void (*win_status_threshold) (int,int,anything,int,int,int); boolean (*win_can_suspend)(void); }; extern volatile struct window_procs windowprocs; # 258 "../include/winprocs.h" struct wc_Opt { const char *wc_name; unsigned long wc_bit; }; # 179 "../include/hack.h" 2 # 1 "../include/sys.h" 1 # 9 "../include/sys.h" struct sysopt { char *support; char *recover; char *wizards; char *explorers; char *shellers; char *debugfiles; int env_dbgfl; int maxplayers; int persmax; int pers_is_uid; int entrymax; int pointsmin; int tt_oname_maxrank; char *gdbpath; char *greppath; int panictrace_gdb; int panictrace_libc; int seduce; int check_save_uid; }; extern struct sysopt sysopt; # 180 "../include/hack.h" 2 # 15 "lev_main.c" 2 # 1 "../include/date.h" 1 # 16 "lev_main.c" 2 # 1 "../include/sp_lev.h" 1 # 57 "../include/sp_lev.h" enum opcode_defs { SPO_NULL = 0, SPO_MESSAGE, SPO_MONSTER, SPO_OBJECT, SPO_ENGRAVING, SPO_ROOM, SPO_SUBROOM, SPO_DOOR, SPO_STAIR, SPO_LADDER, SPO_ALTAR, SPO_FOUNTAIN, SPO_SINK, SPO_POOL, SPO_TRAP, SPO_GOLD, SPO_CORRIDOR, SPO_LEVREGION, SPO_DRAWBRIDGE, SPO_MAZEWALK, SPO_NON_DIGGABLE, SPO_NON_PASSWALL, SPO_WALLIFY, SPO_MAP, SPO_ROOM_DOOR, SPO_REGION, SPO_MINERALIZE, SPO_CMP, SPO_JMP, SPO_JL, SPO_JLE, SPO_JG, SPO_JGE, SPO_JE, SPO_JNE, SPO_TERRAIN, SPO_REPLACETERRAIN, SPO_EXIT, SPO_ENDROOM, SPO_POP_CONTAINER, SPO_PUSH, SPO_POP, SPO_RN2, SPO_DEC, SPO_INC, SPO_MATH_ADD, SPO_MATH_SUB, SPO_MATH_MUL, SPO_MATH_DIV, SPO_MATH_MOD, SPO_MATH_SIGN, SPO_COPY, SPO_END_MONINVENT, SPO_GRAVE, SPO_FRAME_PUSH, SPO_FRAME_POP, SPO_CALL, SPO_RETURN, SPO_INITLEVEL, SPO_LEVEL_FLAGS, SPO_VAR_INIT, SPO_SHUFFLE_ARRAY, SPO_DICE, SPO_SEL_ADD, SPO_SEL_POINT, SPO_SEL_RECT, SPO_SEL_FILLRECT, SPO_SEL_LINE, SPO_SEL_RNDLINE, SPO_SEL_GROW, SPO_SEL_FLOOD, SPO_SEL_RNDCOORD, SPO_SEL_ELLIPSE, SPO_SEL_FILTER, SPO_SEL_GRADIENT, SPO_SEL_COMPLEMENT, MAX_SP_OPCODES }; # 246 "../include/sp_lev.h" struct opvar { xchar spovartyp; union { char *str; long l; } vardata; }; struct splev_var { struct splev_var *next; char *name; xchar svtyp; union { struct opvar *value; struct opvar **arrayvalues; } data; long array_len; }; struct splevstack { long depth; long depth_alloc; struct opvar **stackdata; }; struct sp_frame { struct sp_frame *next; struct splevstack *stack; struct splev_var *variables; long n_opcode; }; struct sp_coder { struct splevstack *stack; struct sp_frame *frame; int premapped; boolean solidify; struct mkroom *croom; struct mkroom *tmproomlist[5 +1]; boolean failed_room[5 +1]; int n_subroom; boolean exit_script; int lvl_is_joined; int opcode; struct opvar *opdat; }; # 307 "../include/sp_lev.h" typedef struct { xchar is_random; long getloc_flags; int x, y; } unpacked_coord; typedef struct { int cmp_what; int cmp_val; } opcmp; typedef struct { long jmp_target; } opjmp; typedef union str_or_len { char *str; int len; } Str_or_Len; typedef struct { xchar init_style; long flags; schar filling; boolean init_present, padding; char fg, bg; boolean smoothed, joined; xchar lit, walled; boolean icedpools; } lev_init; typedef struct { xchar wall, pos, secret, mask; } room_door; typedef struct { long coord; xchar x, y, type; } trap; typedef struct { Str_or_Len name, appear_as; short id; aligntyp align; long coord; xchar x, y, class, appear; schar peaceful, asleep; short female, invis, cancelled, revived, avenge, fleeing, blinded, paralyzed, stunned, confused; long seentraps; short has_invent; } monster; typedef struct { Str_or_Len name; int corpsenm; short id, spe; long coord; xchar x, y, class, containment; schar curse_state; int quan; short buried; short lit; short eroded, locked, trapped, recharged, invis, greased, broken; } object; typedef struct { long coord; xchar x, y; aligntyp align; xchar shrine; } altar; typedef struct { xchar x1, y1, x2, y2; xchar rtype, rlit, rirreg; } region; typedef struct { xchar ter, tlit; } terrain; typedef struct { xchar chance; xchar x1,y1,x2,y2; xchar fromter, toter, tolit; } replaceterrain; typedef struct { struct { xchar x1, y1, x2, y2; } inarea; struct { xchar x1, y1, x2, y2; } delarea; boolean in_islev, del_islev; xchar rtype, padding; Str_or_Len rname; } lev_region; typedef struct { struct { xchar room; xchar wall; xchar door; } src, dest; } corridor; typedef struct _room { Str_or_Len name; Str_or_Len parent; xchar x, y, w, h; xchar xalign, yalign; xchar rtype, chance, rlit, filled, joined; } room; typedef struct { schar zaligntyp; schar keep_region; schar halign, valign; char xsize, ysize; char **map; } mazepart; typedef struct { int opcode; struct opvar *opdat; } _opcode; typedef struct { _opcode *opcodes; long n_opcodes; } sp_lev; typedef struct { xchar x, y, direction, count, lit; char typ; } spill; struct lc_funcdefs_parm { char *name; char parmtype; struct lc_funcdefs_parm *next; }; struct lc_funcdefs { struct lc_funcdefs *next; char *name; long addr; sp_lev code; long n_called; struct lc_funcdefs_parm *params; long n_params; }; struct lc_vardefs { struct lc_vardefs *next; char *name; long var_type; long n_used; }; struct lc_breakdef { struct lc_breakdef *next; struct opvar *breakpoint; int break_depth; }; # 17 "lev_main.c" 2 # 1 "/usr/include/ctype.h" 1 3 4 # 69 "/usr/include/ctype.h" 3 4 # 1 "/usr/include/runetype.h" 1 3 4 # 70 "/usr/include/runetype.h" 3 4 typedef __darwin_wint_t wint_t; # 81 "/usr/include/runetype.h" 3 4 typedef struct { __darwin_rune_t __min; __darwin_rune_t __max; __darwin_rune_t __map; __uint32_t *__types; } _RuneEntry; typedef struct { int __nranges; _RuneEntry *__ranges; } _RuneRange; typedef struct { char __name[14]; __uint32_t __mask; } _RuneCharClass; typedef struct { char __magic[8]; char __encoding[32]; __darwin_rune_t (*__sgetrune)(const char *, __darwin_size_t, char const **); int (*__sputrune)(__darwin_rune_t, char *, __darwin_size_t, char **); __darwin_rune_t __invalid_rune; __uint32_t __runetype[(1 <<8 )]; __darwin_rune_t __maplower[(1 <<8 )]; __darwin_rune_t __mapupper[(1 <<8 )]; _RuneRange __runetype_ext; _RuneRange __maplower_ext; _RuneRange __mapupper_ext; void *__variable; int __variable_len; int __ncharclasses; _RuneCharClass *__charclasses; } _RuneLocale; extern _RuneLocale _DefaultRuneLocale; extern _RuneLocale *_CurrentRuneLocale; # 70 "/usr/include/ctype.h" 2 3 4 # 145 "/usr/include/ctype.h" 3 4 unsigned long ___runetype(__darwin_ct_rune_t); __darwin_ct_rune_t ___tolower(__darwin_ct_rune_t); __darwin_ct_rune_t ___toupper(__darwin_ct_rune_t); static __inline int isascii(int _c) { return ((_c & ~0x7F) == 0); } # 164 "/usr/include/ctype.h" 3 4 int __maskrune(__darwin_ct_rune_t, unsigned long); static __inline int __istype(__darwin_ct_rune_t _c, unsigned long _f) { return (isascii(_c) ? !!(_DefaultRuneLocale.__runetype[_c] & _f) : !!__maskrune(_c, _f)); } static __inline __darwin_ct_rune_t __isctype(__darwin_ct_rune_t _c, unsigned long _f) { return (_c < 0 || _c >= (1 <<8 )) ? 0 : !!(_DefaultRuneLocale.__runetype[_c] & _f); } # 204 "/usr/include/ctype.h" 3 4 __darwin_ct_rune_t __toupper(__darwin_ct_rune_t); __darwin_ct_rune_t __tolower(__darwin_ct_rune_t); static __inline int __wcwidth(__darwin_ct_rune_t _c) { unsigned int _x; if (_c == 0) return (0); _x = (unsigned int)__maskrune(_c, 0xe0000000L|0x00040000L); if ((_x & 0xe0000000L) != 0) return ((_x & 0xe0000000L) >> 30); return ((_x & 0x00040000L) != 0 ? 1 : -1); } static __inline int isalnum(int _c) { return (__istype(_c, 0x00000100L|0x00000400L)); } static __inline int isalpha(int _c) { return (__istype(_c, 0x00000100L)); } static __inline int isblank(int _c) { return (__istype(_c, 0x00020000L)); } static __inline int iscntrl(int _c) { return (__istype(_c, 0x00000200L)); } static __inline int isdigit(int _c) { return (__isctype(_c, 0x00000400L)); } static __inline int isgraph(int _c) { return (__istype(_c, 0x00000800L)); } static __inline int islower(int _c) { return (__istype(_c, 0x00001000L)); } static __inline int isprint(int _c) { return (__istype(_c, 0x00040000L)); } static __inline int ispunct(int _c) { return (__istype(_c, 0x00002000L)); } static __inline int isspace(int _c) { return (__istype(_c, 0x00004000L)); } static __inline int isupper(int _c) { return (__istype(_c, 0x00008000L)); } static __inline int isxdigit(int _c) { return (__isctype(_c, 0x00010000L)); } static __inline int toascii(int _c) { return (_c & 0x7F); } static __inline int tolower(int _c) { return (__tolower(_c)); } static __inline int toupper(int _c) { return (__toupper(_c)); } static __inline int digittoint(int _c) { return (__maskrune(_c, 0x0F)); } static __inline int ishexnumber(int _c) { return (__istype(_c, 0x00010000L)); } static __inline int isideogram(int _c) { return (__istype(_c, 0x00080000L)); } static __inline int isnumber(int _c) { return (__istype(_c, 0x00000400L)); } static __inline int isphonogram(int _c) { return (__istype(_c, 0x00200000L)); } static __inline int isrune(int _c) { return (__istype(_c, 0xFFFFFFF0L)); } static __inline int isspecial(int _c) { return (__istype(_c, 0x00100000L)); } # 21 "lev_main.c" 2 # 47 "lev_main.c" # 1 "/usr/include/fcntl.h" 1 3 4 # 23 "/usr/include/fcntl.h" 3 4 # 1 "/usr/include/sys/fcntl.h" 1 3 4 # 305 "/usr/include/sys/fcntl.h" 3 4 struct flock { off_t l_start; off_t l_len; pid_t l_pid; short l_type; short l_whence; }; struct radvisory { off_t ra_offset; int ra_count; }; typedef struct fsignatures { off_t fs_file_start; void *fs_blob_start; size_t fs_blob_size; } fsignatures_t; # 343 "/usr/include/sys/fcntl.h" 3 4 typedef struct fstore { unsigned int fst_flags; int fst_posmode; off_t fst_offset; off_t fst_length; off_t fst_bytesalloc; } fstore_t; typedef struct fbootstraptransfer { off_t fbt_offset; size_t fbt_length; void *fbt_buffer; } fbootstraptransfer_t; # 377 "/usr/include/sys/fcntl.h" 3 4 #pragma pack(4) struct log2phys { unsigned int l2p_flags; off_t l2p_contigbytes; off_t l2p_devoffset; }; #pragma pack() # 396 "/usr/include/sys/fcntl.h" 3 4 struct _filesec; typedef struct _filesec *filesec_t; typedef enum { FILESEC_OWNER = 1, FILESEC_GROUP = 2, FILESEC_UUID = 3, FILESEC_MODE = 4, FILESEC_ACL = 5, FILESEC_GRPUUID = 6, FILESEC_ACL_RAW = 100, FILESEC_ACL_ALLOCSIZE = 101 } filesec_property_t; int open(const char *, int, ...) __asm("_" "open" "$UNIX2003"); int creat(const char *, mode_t) __asm("_" "creat" "$UNIX2003"); int fcntl(int, int, ...) __asm("_" "fcntl" "$UNIX2003"); int openx_np(const char *, int, filesec_t); int flock(int, int); filesec_t filesec_init(void); filesec_t filesec_dup(filesec_t); void filesec_free(filesec_t); int filesec_get_property(filesec_t, filesec_property_t, void *); int filesec_set_property(filesec_t, filesec_property_t, const void *); int filesec_query_property(filesec_t, filesec_property_t, int *); # 23 "/usr/include/fcntl.h" 2 3 4 # 48 "lev_main.c" 2 # 82 "lev_main.c" extern int yyparse(void); extern void init_yyin (FILE *); extern void init_yyout (FILE *); int main (int, char **); void yyerror (const char *); void yywarning (const char *); int yywrap(void); int get_floor_type (int); int get_room_type (char *); int get_trap_type (char *); int get_monster_id (char *, int); int get_object_id (char *, int); boolean check_monster_char (int); boolean check_object_char (int); char what_map_char (int); void scan_map (char *, sp_lev *); boolean check_subrooms(void); boolean write_level_file (char *, sp_lev *); struct lc_funcdefs *funcdef_new (long, char *); void funcdef_free_all (struct lc_funcdefs *); struct lc_funcdefs *funcdef_defined (struct lc_funcdefs *, char *, int); struct lc_vardefs *vardef_new (long, char *); void vardef_free_all (struct lc_vardefs *); struct lc_vardefs *vardef_defined (struct lc_vardefs *, char *, int); void splev_add_from (sp_lev *, sp_lev *); extern void monst_init(void); extern void objects_init(void); extern void decl_init(void); void add_opcode (sp_lev *, int, genericptr_t); static boolean write_common_data (int); static boolean write_maze (int, sp_lev *); static void init_obj_classes(void); static int case_insensitive_comp (const char *, const char *); void lc_pline (const char *, ...); void lc_error (const char *, ...); void lc_warning (const char *, ...); char *decode_parm_chr (int); char *decode_parm_str (char *); struct opvar *set_opvar_int (struct opvar *, long); struct opvar *set_opvar_coord (struct opvar *, long); struct opvar *set_opvar_region (struct opvar *, long); struct opvar *set_opvar_mapchar (struct opvar *, long); struct opvar *set_opvar_monst (struct opvar *, long); struct opvar *set_opvar_obj (struct opvar *, long); struct opvar *set_opvar_str (struct opvar *, const char *); struct opvar *set_opvar_var (struct opvar *, const char *); void add_opvars (sp_lev *, const char *, ...); void break_stmt_start(void); void break_stmt_end (sp_lev *); void break_stmt_new (sp_lev *, long); char *funcdef_paramtypes (struct lc_funcdefs *); const char *spovar2str (long); void vardef_used (struct lc_vardefs *, char *); void check_vardef_type (struct lc_vardefs *, char *, long); struct lc_vardefs *add_vardef_type (struct lc_vardefs *, char *, long); int reverse_jmp_opcode (int); struct opvar *opvar_clone (struct opvar *); void start_level_def (sp_lev **, char *); static struct { const char *name; int type; } trap_types[] = { { "arrow", 1 }, { "dart", 2 }, { "falling rock", 3 }, { "board", 4 }, { "bear", 5 }, { "land mine", 6 }, { "rolling boulder", 7 }, { "sleep gas", 8 }, { "rust", 9 }, { "fire", 10 }, { "pit", 11 }, { "spiked pit", 12 }, { "hole", 13 }, { "trap door", 14 }, { "teleport", 15 }, { "level teleport", 16 }, { "magic portal", 17 }, { "web", 18 }, { "statue", 19 }, { "magic", 20 }, { "anti magic", 21 }, { "polymorph", 22 }, { 0, 0 } }; static struct { const char *name; int type; } room_types[] = { { "ordinary", 0 }, { "throne", 2 }, { "swamp", 3 }, { "vault", 4 }, { "beehive", 5 }, { "morgue", 6 }, { "barracks", 7 }, { "zoo", 8 }, { "delphi", 9 }, { "temple", 10 }, { "anthole", 13 }, { "cocknest", 12 }, { "leprehall", 11 }, { "shop", 14 }, { "armor shop", 15 }, { "scroll shop", 16 }, { "potion shop", 17 }, { "weapon shop", 18 }, { "food shop", 19 }, { "ring shop", 20 }, { "wand shop", 21 }, { "tool shop", 22 }, { "book shop", 23 }, { "health food shop", 24 }, { "candle shop", 25 }, { 0, 0 } }; const char *fname = "(stdin)"; int fatal_error = 0; int got_errors = 0; int be_verbose = 0; int fname_counter = 1; extern unsigned int max_x_map, max_y_map; extern int nh_line_number; extern int token_start_pos; extern char curr_token[512]; struct lc_vardefs *variable_definitions = ((void *)0); struct lc_funcdefs *function_definitions = ((void *)0); extern int allow_break_statements; extern struct lc_breakdef *break_list; int main(argc, argv) int argc; char **argv; { FILE *fin; int i; boolean errors_encountered = ((boolean)0); # 263 "lev_main.c" monst_init(); objects_init(); decl_init(); init_obj_classes(); init_yyout(__stdoutp); if (argc == 1) { init_yyin(__stdinp); (void) yyparse(); if (fatal_error > 0) { errors_encountered = ((boolean)1); } } else { for (i = 1; i < argc; i++) { fname = argv[i]; if (!strcmp(fname, "-v")) { be_verbose++; continue; } fin = freopen(fname, "r", __stdinp); if (!fin) { lc_pline("Can't open \"%s\" for input.\n", fname); perror(fname); errors_encountered = ((boolean)1); } else { fname_counter = 1; init_yyin(fin); (void) yyparse(); nh_line_number = 1; if (fatal_error > 0 || got_errors > 0) { errors_encountered = ((boolean)1); fatal_error = 0; } } } } exit(errors_encountered ? 1 : 0); return 0; } # 313 "lev_main.c" void yyerror(s) const char *s; { char *e = ((char *) s + strlen(s) - 1); (void) fprintf(__stderrp, "%s: line %d, pos %d: %s", fname, nh_line_number, token_start_pos - (int) strlen(curr_token), s); if (*e != '.' && *e != '!') (void) fprintf(__stderrp, " at \"%s\"", curr_token); (void) fprintf(__stderrp, "\n"); if (++fatal_error > 25) { (void) fprintf(__stderrp, "Too many errors, good bye!\n"); exit(1); } } void yywarning(s) const char *s; { (void) fprintf(__stderrp, "%s: line %d : WARNING : %s\n", fname, nh_line_number, s); } int yywrap() { return 1; } # 361 "lev_main.c" static int lc_pline_mode = 0; static void lc_vpline (const char *, va_list); void lc_pline (const char * line, ...) { va_list the_args; { __builtin_va_start(the_args,line); ; lc_vpline(line, the_args); __builtin_va_end(the_args); }; } static void lc_vpline(const char *line, va_list the_args) # 392 "lev_main.c" { char pbuf[3 * 256]; static char nomsg[] = "(no message)"; if (!line || !*line) line = nomsg; if (strchr(line, '%')) { (void) vsprintf(pbuf, line, the_args); pbuf[256 - 1] = '\0'; line = pbuf; } switch (lc_pline_mode) { case 2: yyerror(line); break; case 1: yywarning(line); break; default: (void) fprintf(__stderrp, "%s\n", line); break; } lc_pline_mode = 0; return; } void lc_error (const char * line, ...) { va_list the_args; { __builtin_va_start(the_args,line); ; lc_pline_mode = 2; lc_vpline(line, the_args); __builtin_va_end(the_args); }; return; } void lc_warning (const char * line, ...) { va_list the_args; { __builtin_va_start(the_args,line); ; lc_pline_mode = 1; lc_vpline(line, the_args); __builtin_va_end(the_args); }; return; } char * decode_parm_chr(chr) char chr; { static char buf[32]; switch (chr) { default: (void) strcpy(buf, "unknown"); break; case 'i': (void) strcpy(buf, "int"); break; case 'r': (void) strcpy(buf, "region"); break; case 's': (void) strcpy(buf, "str"); break; case 'O': (void) strcpy(buf, "obj"); break; case 'c': (void) strcpy(buf, "coord"); break; case ' ': (void) strcpy(buf, "nothing"); break; case 'm': (void) strcpy(buf, "mapchar"); break; case 'M': (void) strcpy(buf, "monster"); break; } return buf; } char * decode_parm_str(str) char *str; { static char tmpbuf[1024]; char *p = str; tmpbuf[0] = '\0'; if (str) { for (; *p; p++) { (void) strcat(tmpbuf, decode_parm_chr(*p)); if (*(p + 1)) (void) strcat(tmpbuf, ", "); } } return tmpbuf; } struct opvar * set_opvar_int(ov, val) struct opvar *ov; long val; { if (ov) { ov->spovartyp = 0x01; ov->vardata.l = val; } return ov; } struct opvar * set_opvar_coord(ov, val) struct opvar *ov; long val; { if (ov) { ov->spovartyp = 0x04; ov->vardata.l = val; } return ov; } struct opvar * set_opvar_region(ov, val) struct opvar *ov; long val; { if (ov) { ov->spovartyp = 0x05; ov->vardata.l = val; } return ov; } struct opvar * set_opvar_mapchar(ov, val) struct opvar *ov; long val; { if (ov) { ov->spovartyp = 0x06; ov->vardata.l = val; } return ov; } struct opvar * set_opvar_monst(ov, val) struct opvar *ov; long val; { if (ov) { ov->spovartyp = 0x07; ov->vardata.l = val; } return ov; } struct opvar * set_opvar_obj(ov, val) struct opvar *ov; long val; { if (ov) { ov->spovartyp = 0x08; ov->vardata.l = val; } return ov; } struct opvar * set_opvar_str(ov, val) struct opvar *ov; const char *val; { if (ov) { ov->spovartyp = 0x02; ov->vardata.str = (val) ? strdup(val) : ((void *)0); } return ov; } struct opvar * set_opvar_var(ov, val) struct opvar *ov; const char *val; { if (ov) { ov->spovartyp = 0x03; ov->vardata.str = (val) ? strdup(val) : ((void *)0); } return ov; } static void vadd_opvars (sp_lev *, const char *, va_list); void add_opvars (sp_lev * sp, const char * fmt, ...) { va_list the_args; __builtin_va_start(the_args,fmt); ; vadd_opvars(sp, fmt, the_args); __builtin_va_end(the_args); }; } static void vadd_opvars(sp_lev *sp, const char *fmt, va_list the_args) { # 633 "lev_main.c" const char *p, *lp; long la; for (p = fmt; *p != '\0'; p++) { switch (*p) { case ' ': break; case 'i': { struct opvar *ov = (struct opvar *) memset((genericptr_t) alloc(sizeof(struct opvar)), 0, sizeof(struct opvar)); set_opvar_int(ov, la = __builtin_va_arg(the_args,long) ); add_opcode(sp, SPO_PUSH, ov); break; } case 'c': { struct opvar *ov = (struct opvar *) memset((genericptr_t) alloc(sizeof(struct opvar)), 0, sizeof(struct opvar)); set_opvar_coord(ov, la = __builtin_va_arg(the_args,long) ); add_opcode(sp, SPO_PUSH, ov); break; } case 'r': { struct opvar *ov = (struct opvar *) memset((genericptr_t) alloc(sizeof(struct opvar)), 0, sizeof(struct opvar)); set_opvar_region(ov, la = __builtin_va_arg(the_args,long) ); add_opcode(sp, SPO_PUSH, ov); break; } case 'm': { struct opvar *ov = (struct opvar *) memset((genericptr_t) alloc(sizeof(struct opvar)), 0, sizeof(struct opvar)); set_opvar_mapchar(ov, la = __builtin_va_arg(the_args,long) ); add_opcode(sp, SPO_PUSH, ov); break; } case 'M': { struct opvar *ov = (struct opvar *) memset((genericptr_t) alloc(sizeof(struct opvar)), 0, sizeof(struct opvar)); set_opvar_monst(ov, la = __builtin_va_arg(the_args,long) ); add_opcode(sp, SPO_PUSH, ov); break; } case 'O': { struct opvar *ov = (struct opvar *) memset((genericptr_t) alloc(sizeof(struct opvar)), 0, sizeof(struct opvar)); set_opvar_obj(ov, la = __builtin_va_arg(the_args,long) ); add_opcode(sp, SPO_PUSH, ov); break; } case 's': { struct opvar *ov = (struct opvar *) memset((genericptr_t) alloc(sizeof(struct opvar)), 0, sizeof(struct opvar)); set_opvar_str(ov, lp = __builtin_va_arg(the_args,const char *) ); add_opcode(sp, SPO_PUSH, ov); break; } case 'v': { struct opvar *ov = (struct opvar *) memset((genericptr_t) alloc(sizeof(struct opvar)), 0, sizeof(struct opvar)); set_opvar_var(ov, lp = __builtin_va_arg(the_args,const char *) ); add_opcode(sp, SPO_PUSH, ov); break; } case 'o': { long i = la = __builtin_va_arg(the_args,int); if (i < 0 || i >= MAX_SP_OPCODES) lc_pline("add_opvars: unknown opcode '%ld'.", i); add_opcode(sp, i, ((void *)0)); break; } default: lc_pline("add_opvars: illegal format character '%c'.", *p); break; } } return; } void break_stmt_start() { allow_break_statements++; } void break_stmt_end(splev) sp_lev *splev; { struct lc_breakdef *tmp = break_list; struct lc_breakdef *prv = ((void *)0); while (tmp) { if (tmp->break_depth == allow_break_statements) { struct lc_breakdef *nxt = tmp->next; set_opvar_int(tmp->breakpoint, splev->n_opcodes - tmp->breakpoint->vardata.l - 1); tmp->next = ((void *)0); if (tmp) free((genericptr_t)(tmp)); if (!prv) break_list = ((void *)0); else prv->next = nxt; tmp = nxt; } else { prv = tmp; tmp = tmp->next; } } allow_break_statements--; } void break_stmt_new(splev, i) sp_lev *splev; long i; { struct lc_breakdef *tmp = (struct lc_breakdef *) memset((genericptr_t) alloc(sizeof(struct lc_breakdef)), 0, sizeof(struct lc_breakdef)); tmp->breakpoint = (struct opvar *) memset((genericptr_t) alloc(sizeof(struct opvar)), 0, sizeof(struct opvar)); tmp->break_depth = allow_break_statements; tmp->next = break_list; break_list = tmp; set_opvar_int(tmp->breakpoint, i); add_opcode(splev, SPO_PUSH, tmp->breakpoint); add_opcode(splev, SPO_JMP, ((void *)0)); } struct lc_funcdefs * funcdef_new(addr, name) long addr; char *name; { struct lc_funcdefs *f = (struct lc_funcdefs *) memset((genericptr_t) alloc(sizeof(struct lc_funcdefs)), 0, sizeof(struct lc_funcdefs)); if (!f) { lc_error("Could not alloc function definition for '%s'.", name); return ((void *)0); } f->next = ((void *)0); f->addr = addr; f->name = strdup(name); f->n_called = 0; f->n_params = 0; f->params = ((void *)0); f->code.opcodes = ((void *)0); f->code.n_opcodes = 0; return f; } void funcdef_free_all(fchain) struct lc_funcdefs *fchain; { struct lc_funcdefs *tmp = fchain; struct lc_funcdefs *nxt; struct lc_funcdefs_parm *tmpparam; while (tmp) { nxt = tmp->next; if (tmp->name) free((genericptr_t)(tmp->name)); while (tmp->params) { tmpparam = tmp->params->next; if (tmp->params->name) free((genericptr_t)(tmp->params->name)); tmp->params = tmpparam; } if (tmp) free((genericptr_t)(tmp)); tmp = nxt; } } char * funcdef_paramtypes(f) struct lc_funcdefs *f; { int i = 0; struct lc_funcdefs_parm *fp = f->params; char *tmp = (char *) alloc((f->n_params) + 1); if (!tmp) return ((void *)0); while (fp) { tmp[i++] = fp->parmtype; fp = fp->next; } tmp[i] = '\0'; return tmp; } struct lc_funcdefs * funcdef_defined(f, name, casesense) struct lc_funcdefs *f; char *name; int casesense; { while (f) { if (casesense) { if (!strcmp(name, f->name)) return f; } else { if (!case_insensitive_comp(name, f->name)) return f; } f = f->next; } return ((void *)0); } struct lc_vardefs * vardef_new(typ, name) long typ; char *name; { struct lc_vardefs *f = (struct lc_vardefs *) memset((genericptr_t) alloc(sizeof(struct lc_vardefs)), 0, sizeof(struct lc_vardefs)); if (!f) { lc_error("Could not alloc variable definition for '%s'.", name); return ((void *)0); } f->next = ((void *)0); f->var_type = typ; f->name = strdup(name); f->n_used = 0; return f; } void vardef_free_all(fchain) struct lc_vardefs *fchain; { struct lc_vardefs *tmp = fchain; struct lc_vardefs *nxt; while (tmp) { if (be_verbose && (tmp->n_used == 0)) lc_warning("Unused variable '%s'", tmp->name); nxt = tmp->next; if (tmp->name) free((genericptr_t)(tmp->name)); if (tmp) free((genericptr_t)(tmp)); tmp = nxt; } } struct lc_vardefs * vardef_defined(f, name, casesense) struct lc_vardefs *f; char *name; int casesense; { while (f) { if (casesense) { if (!strcmp(name, f->name)) return f; } else { if (!case_insensitive_comp(name, f->name)) return f; } f = f->next; } return ((void *)0); } const char * spovar2str(spovar) long spovar; { static int togl = 0; static char buf[2][128]; const char *n = ((void *)0); int is_array = (spovar & 0x40); spovar &= ~0x40; switch (spovar) { default: lc_error("spovar2str(%ld)", spovar); break; case 0x01: n = "integer"; break; case 0x02: n = "string"; break; case 0x03: n = "variable"; break; case 0x04: n = "coordinate"; break; case 0x05: n = "region"; break; case 0x06: n = "mapchar"; break; case 0x07: n = "monster"; break; case 0x08: n = "object"; break; } togl = ((togl + 1) % 2); snprintf(buf[togl], 127, "%s%s", n, (is_array ? " array" : "")); return buf[togl]; } void vardef_used(vd, varname) struct lc_vardefs *vd; char *varname; { struct lc_vardefs *tmp; if ((tmp = vardef_defined(vd, varname, 1))) tmp->n_used++; } void check_vardef_type(vd, varname, vartype) struct lc_vardefs *vd; char *varname; long vartype; { struct lc_vardefs *tmp; if ((tmp = vardef_defined(vd, varname, 1))) { if (tmp->var_type != vartype) lc_error("Trying to use variable '%s' as %s, when it is %s.", varname, spovar2str(vartype), spovar2str(tmp->var_type)); } else lc_error("Variable '%s' not defined.", varname); } struct lc_vardefs * add_vardef_type(vd, varname, vartype) struct lc_vardefs *vd; char *varname; long vartype; { struct lc_vardefs *tmp; if ((tmp = vardef_defined(vd, varname, 1))) { if (tmp->var_type != vartype) lc_error("Trying to redefine variable '%s' as %s, when it is %s.", varname, spovar2str(vartype), spovar2str(tmp->var_type)); } else { tmp = vardef_new(vartype, varname); tmp->next = vd; return tmp; } return vd; } int reverse_jmp_opcode(opcode) int opcode; { switch (opcode) { case SPO_JE: return SPO_JNE; case SPO_JNE: return SPO_JE; case SPO_JL: return SPO_JGE; case SPO_JG: return SPO_JLE; case SPO_JLE: return SPO_JG; case SPO_JGE: return SPO_JL; default: lc_error("Cannot reverse comparison jmp opcode %d.", opcode); return SPO_NULL; } } struct opvar * opvar_clone(ov) struct opvar *ov; { if (ov) { struct opvar *tmpov = (struct opvar *) alloc(sizeof(struct opvar)); if (!tmpov) panic("could not alloc opvar struct"); switch (ov->spovartyp) { case 0x04: case 0x05: case 0x06: case 0x07: case 0x08: case 0x01: { tmpov->spovartyp = ov->spovartyp; tmpov->vardata.l = ov->vardata.l; } break; case 0x03: case 0x02: { int len = strlen(ov->vardata.str); tmpov->spovartyp = ov->spovartyp; tmpov->vardata.str = (char *) alloc(len + 1); (void) memcpy((genericptr_t) tmpov->vardata.str, (genericptr_t) ov->vardata.str, len); tmpov->vardata.str[len] = '\0'; } break; default: { lc_error("Unknown opvar_clone value type (%d)!", ov->spovartyp); } } return tmpov; } return ((void *)0); } void splev_add_from(splev, from_splev) sp_lev *splev; sp_lev *from_splev; { int i; if (splev && from_splev) for (i = 0; i < from_splev->n_opcodes; i++) add_opcode(splev, from_splev->opcodes[i].opcode, opvar_clone(from_splev->opcodes[i].opdat)); } void start_level_def(splev, ldfname) sp_lev **splev; char *ldfname; { struct lc_funcdefs *f; if (strchr(ldfname, '.')) lc_error("Invalid dot ('.') in level name '%s'.", ldfname); if ((int) strlen(ldfname) > 14) lc_error("Level names limited to 14 characters ('%s').", ldfname); f = function_definitions; while (f) { f->n_called = 0; f = f->next; } *splev = (sp_lev *) alloc(sizeof(sp_lev)); (*splev)->n_opcodes = 0; (*splev)->opcodes = ((void *)0); vardef_free_all(variable_definitions); variable_definitions = ((void *)0); } int get_floor_type(c) char c; { int val; ; val = what_map_char(c); if (val == 127) { val = (-1); yywarning("Invalid fill character in MAZE declaration"); } return val; } int get_room_type(s) char *s; { register int i; ; for (i = 0; room_types[i].name; i++) if (!strcmp(s, room_types[i].name)) return ((int) room_types[i].type); return (-1); } int get_trap_type(s) char *s; { register int i; ; for (i = 0; trap_types[i].name; i++) if (!strcmp(s, trap_types[i].name)) return trap_types[i].type; return (-1); } int get_monster_id(s, c) char *s; char c; { register int i, class; ; class = c ? def_char_to_monclass(c) : 0; if (class == 61) return (-1); for (i = ((-1)+1); i < 381; i++) if (!class || class == mons[i].mlet) if (!strcmp(s, mons[i].mname)) return i; for (i = ((-1)+1); i < 381; i++) if (!class || class == mons[i].mlet) if (!case_insensitive_comp(s, mons[i].mname)) { if (be_verbose) lc_warning("Monster type \"%s\" matches \"%s\".", s, mons[i].mname); return i; } return (-1); } int get_object_id(s, c) char *s; char c; { int i, class; const char *objname; ; class = (c > 0) ? def_char_to_objclass(c) : 0; if (class == 18) return (-1); for (i = class ? bases[class] : 0; i < 437; i++) { if (class && objects[i].oc_class != class) break; objname = obj_descr[i].oc_name; if (objname && !strcmp(s, objname)) return i; } for (i = class ? bases[class] : 0; i < 437; i++) { if (class && objects[i].oc_class != class) break; objname = obj_descr[i].oc_name; if (objname && !case_insensitive_comp(s, objname)) { if (be_verbose) lc_warning("Object type \"%s\" matches \"%s\".", s, objname); return i; } } return (-1); } static void init_obj_classes() { int i, class, prev_class; prev_class = -1; for (i = 0; i < 437; i++) { class = objects[i].oc_class; if (class != prev_class) { bases[class] = i; prev_class = class; } } } boolean check_monster_char(c) char c; { return (def_char_to_monclass(c) != 61); } boolean check_object_char(c) char c; { return (def_char_to_objclass(c) != 18); } char what_map_char(c) char c; { ; switch (c) { case ' ': return (0); case '#': return (23); case '.': return (24); case '-': return (2); case '|': return (1); case '+': return (22); case 'A': return (34); case 'B': return (7); case 'C': return (35); case 'S': return (14); case 'H': return (15); case '{': return (27); case '\\': return (28); case 'K': return (29); case '}': return (17); case 'P': return (16); case 'L': return (20); case 'I': return (32); case 'W': return (18); case 'T': return (13); case 'F': return (21); case 'x': return (36); } return (127); } void add_opcode(sp, opc, dat) sp_lev *sp; int opc; genericptr_t dat; { long nop = sp->n_opcodes; _opcode *tmp; if ((opc < 0) || (opc >= MAX_SP_OPCODES)) lc_error("Unknown opcode '%d'", opc); tmp = (_opcode *) alloc(sizeof(_opcode) * (nop + 1)); if (sp->opcodes && nop) { (void) memcpy(tmp, sp->opcodes, sizeof(_opcode) * nop); free(sp->opcodes); } else if (!tmp) lc_error("Could not alloc opcode space"); sp->opcodes = tmp; sp->opcodes[nop].opcode = opc; sp->opcodes[nop].opdat = dat; sp->n_opcodes++; } void scan_map(map, sp) char *map; sp_lev *sp; { register int i, len; register char *s1, *s2; int max_len = 0; int max_hig = 0; char *tmpmap[21]; int dx, dy; char *mbuf; for (s1 = s2 = map; *s1; s1++) if (*s1 < '0' || *s1 > '9') *s2++ = *s1; *s2 = '\0'; s1 = map; while (s1 && *s1) { s2 = strchr(s1, '\n'); if (s2) { len = (int) (s2 - s1); s1 = s2 + 1; } else { len = (int) strlen(s1); s1 = (char *) 0; } if (len > max_len) max_len = len; } while (map && *map) { tmpmap[max_hig] = (char *) alloc(max_len); s1 = strchr(map, '\n'); if (s1) { len = (int) (s1 - map); s1++; } else { len = (int) strlen(map); s1 = map + len; } for (i = 0; i < len; i++) if ((tmpmap[max_hig][i] = what_map_char(map[i])) == 127) { lc_warning("Invalid character '%c' @ (%d, %d) - replacing " "with stone", map[i], max_hig, i); tmpmap[max_hig][i] = 0; } while (i < max_len) tmpmap[max_hig][i++] = 0; map = s1; max_hig++; } max_x_map = max_len - 1; max_y_map = max_hig - 1; if (max_len > 76 || max_hig > 21) { lc_error("Map too large at (%d x %d), max is (%d x %d)", max_len, max_hig, 76, 21); } mbuf = (char *) alloc(((max_hig - 1) * max_len) + (max_len - 1) + 2); for (dy = 0; dy < max_hig; dy++) for (dx = 0; dx < max_len; dx++) mbuf[(dy * max_len) + dx] = (tmpmap[dy][dx] + 1); mbuf[((max_hig - 1) * max_len) + (max_len - 1) + 1] = '\0'; add_opvars(sp, "siio", mbuf,max_hig,max_len,SPO_MAP); for (dy = 0; dy < max_hig; dy++) if (tmpmap[dy]) free((genericptr_t)(tmpmap[dy])); if (mbuf) free((genericptr_t)(mbuf)); } static boolean write_common_data(fd) int fd; { static struct version_info version_data = { 0x03060000UL, 0x00060000UL, 0x211b517dUL, 0xc48195c4UL, 0x00025000UL }; if ((long) write(fd, (genericptr_t)(&version_data), sizeof version_data) != (long) (sizeof version_data)) return ((boolean)0);; return ((boolean)1); } static boolean write_maze(fd, maze) int fd; sp_lev *maze; { int i; if (!write_common_data(fd)) return ((boolean)0); if ((long) write(fd, (genericptr_t)(&(maze->n_opcodes)), sizeof(maze->n_opcodes)) != (long) (sizeof(maze->n_opcodes))) return ((boolean)0);; for (i = 0; i < maze->n_opcodes; i++) { _opcode tmpo = maze->opcodes[i]; if ((long) write(fd, (genericptr_t)(&(tmpo.opcode)), sizeof(tmpo.opcode)) != (long) (sizeof(tmpo.opcode))) return ((boolean)0);; if (tmpo.opcode < SPO_NULL || tmpo.opcode >= MAX_SP_OPCODES) panic("write_maze: unknown opcode (%d).", tmpo.opcode); if (tmpo.opcode == SPO_PUSH) { genericptr_t opdat = tmpo.opdat; if (opdat) { struct opvar *ov = (struct opvar *) opdat; int size; if ((long) write(fd, (genericptr_t)(&(ov->spovartyp)), sizeof(ov->spovartyp)) != (long) (sizeof(ov->spovartyp))) return ((boolean)0);; switch (ov->spovartyp) { case 0x00: break; case 0x04: case 0x05: case 0x06: case 0x07: case 0x08: case 0x01: if ((long) write(fd, (genericptr_t)(&(ov->vardata.l)), sizeof(ov->vardata.l)) != (long) (sizeof(ov->vardata.l))) return ((boolean)0);; break; case 0x03: case 0x02: if (ov->vardata.str) size = strlen(ov->vardata.str); else size = 0; if ((long) write(fd, (genericptr_t)(&size), sizeof(size)) != (long) (sizeof(size))) return ((boolean)0);; if (size) { if ((long) write(fd, (genericptr_t)(ov->vardata.str), size) != (long) (size)) return ((boolean)0);; if (ov->vardata.str) free((genericptr_t)(ov->vardata.str)); } break; default: panic("write_maze: unknown data type (%d).", ov->spovartyp); } } else panic("write_maze: PUSH with no data."); } else { genericptr_t opdat = tmpo.opdat; if (opdat) panic("write_maze: opcode (%d) has data.", tmpo.opcode); } if (tmpo.opdat) free((genericptr_t)(tmpo.opdat)); } if (maze->opcodes) free((genericptr_t)(maze->opcodes)); maze->opcodes = ((void *)0); return ((boolean)1); } boolean write_level_file(filename, lvl) char *filename; sp_lev *lvl; { int fout; char lbuf[60]; lbuf[0] = '\0'; (void) strcat(lbuf, filename); (void) strcat(lbuf, ".lev"); fout = open(lbuf, 0x0001 | 0x0200 | 0, 0644); if (fout < 0) return ((boolean)0); if (!lvl) panic("write_level_file"); if (be_verbose) fprintf(__stdoutp, "File: '%s', opcodes: %ld\n", lbuf, lvl->n_opcodes); if (!write_maze(fout, lvl)) return ((boolean)0); (void) close(fout); return ((boolean)1); } static int case_insensitive_comp(s1, s2) const char *s1; const char *s2; { unsigned char u1, u2; for (;; s1++, s2++) { u1 = tolower((unsigned char) *s1); u2 = tolower((unsigned char) *s2); if ((u1 == '\0') || (u1 != u2)) { break; } } return u1 - u2; }