#ifdef __STDC__ 
#define ANSI_HDRS	1 
#define ANSI_C		1
#endif

#ifdef ANSI_C
#ifdef APOLLO
#define DIR_H
#else
#include <stdlib.h>
#include <stddef.h>
#include <string.h>
#endif
#endif

#ifdef __GNUC__
#include <unistd.h>
#endif

#ifdef ANSI_HDRS
#define	ANSI_PARMS( x )	x
#else
#define	ANSI_PARMS( x )	()
#endif

#ifndef ANSI_C
#define	VOIDPARM
#else
#define	VOIDPARM void
#endif

#include <stdio.h>
#include <errno.h>
#include <pwd.h>
#include <fcntl.h>
#include <time.h>
#include <sys/types.h>
#include <sys/stat.h>

#ifdef DIR_H
#include <sys/dir.h>
#define dirent direct
#else
#include <dirent.h>
#endif

#if SCO
#define SCO
#endif

#ifdef SCO
#define MAXPATHLEN PATHSIZE + 1
#endif

#include <sys/param.h>

/*  To make programs "prettier"... */

/* Logical functions made readable */
#ifndef boolean
typedef int boolean;
#endif
#ifndef FALSE
#define FALSE		(0)
#endif
#ifndef TRUE
#define TRUE		(1)
#endif
#define	IS		==
#define ISNT		!=
#define AND		&&
#define OR		||
#define NOT		!

/* Bitwise functions made readable */
typedef unsigned char byte;
typedef unsigned int bits;
#define AND_		&
#define OR_		|
#define XOR_		^
#define SHR_		>>
#define SHL_		<<
#define CMP1S_		~

/* Assorted character constants */
#define NULLTERM	    '\0'
#define TAB		    '\t'
#define EOL		    '\n'
#define CR		    '\r'
#define BELL		    '\7'
#define SLASH		    '/'
#define SPACE		    ' '
#define QUOTE		    '"'
#define DOT		    '.'
#define DASH		    '-'
#define COMMA		    ','
#define POUNDSIGN	    '#'
#define EQUALSIGN	    '='
#define ZERO	    	    '0'
#define ONE	    	    '1'
#define TWO	    	    '2'
#define THREE	    	    '3'
#define FOUR	    	    '4'
#define FIVE	    	    '5'
#define SIX	    	    '6'
#define SEVEN	    	    '7'
#define EIGHT	    	    '8'
#define NINE	    	    '9'

#define alphaNumeric( c )						    \
    ( ( ( c >= ZERO ) AND ( c <= NINE ) ) OR 				    \
      ( ( c >= 'A' ) AND ( c <= 'Z' ) ) OR				    \
      ( ( c >= 'a' ) AND ( c <= 'z' ) ) )

/* Structure for a directory listing (DE).  Structure allows linked lists. */
/* This listing can either span multiple levels, or be a file. 		   */
typedef struct DirEntry DirEntry;
struct DirEntry
{
    char *name;
    DirEntry *nDEDE;
    DirEntry *lDEDE;
};

#define gDEName( dl ) 		    	( dl )->name
#define rDEName( dl, val ) 		gDEName( dl ) = copyString( val )
#define nDE( dl )			( dl )->nDEDE
#define lDE( dl )			( dl )->lDEDE

#define UNKNOWN	0
#define GIF	1
#define JFIF	2
#define PM	3
#define PBM	4
#define XBM	5
#define PIC	6

#define USERKEY			"USER="
#define USERALIASKEY		"USERALIAS="
#define USERHOSTKEY		"USERHOST="
#define SIGPATHKEY		"SIGPATH="
#define SITEHOSTKEY		"SITEHOST="
#define SITEPATHKEY		"SITEPATH="

extern int errno;

extern char *reasonForFail;
extern boolean DEBUG_PROC;
extern boolean noConfirm;
extern boolean verboseOutput;
extern char *tmpDir, *theFile, *partRoot, *scriptRoot, *fileRoot, *fileName;
extern char *fileStats, *picRes;
extern int fileType, topDECnt;
extern DirEntry *topDE;
extern char *anonUser;
extern char *anonSite;
extern char *anonHost;
extern char *anonPath;
extern char *anonSig;
extern char *anonAlias;
extern char *anonFile;
extern char *anonOther;

/* From xbfile.c... */
extern VOIDPARM getFileStats ANSI_PARMS( ( VOIDPARM ) );

/* From xbutil.c... */
extern char *copyString ANSI_PARMS( ( char *val ) );
extern VOIDPARM setString ANSI_PARMS( ( char **str, char *val ) );
extern char *addString ANSI_PARMS( ( char *str1, char *str2, char *str3 ) );
extern char *stringIn ANSI_PARMS( ( char *a, char *b ) );
extern char *getAnswer ANSI_PARMS( ( VOIDPARM ) );
extern boolean getRootName ANSI_PARMS( ( VOIDPARM ) );
extern boolean verifyEnvPath ANSI_PARMS( ( char *var ) );
extern char *descPath ANSI_PARMS( ( VOIDPARM ) );
extern boolean fileExists ANSI_PARMS( ( char *name ) );
extern VOIDPARM dirList ANSI_PARMS( ( char *pattern ) );
extern char *shellResult ANSI_PARMS( ( char *cmd, int *result ) );
extern VOIDPARM closePipes ANSI_PARMS( ( VOIDPARM ) );
extern boolean openTopShell ANSI_PARMS( ( VOIDPARM ) );
extern boolean closeTopShell ANSI_PARMS( ( VOIDPARM ) );
extern int lineRead ANSI_PARMS( ( FILE *src, char dst[] ) );
extern char *utilInPath ANSI_PARMS( ( char *util, boolean shouldBitch ) );
extern VOIDPARM suggest ANSI_PARMS( ( char *util, char *switches ) );

/* From xbanon.c... */
extern char *anonFileParse ANSI_PARMS( ( VOIDPARM ) );
extern char *anonDataFilePath ANSI_PARMS( ( VOIDPARM ) );
extern VOIDPARM addAnonHeader ANSI_PARMS( ( FILE *fd, int part ) );


syntax highlighted by Code2HTML, v. 0.9.1