WATCOM Make Version 10.6
Copyright by WATCOM International Corp. 1988, 1996. All rights reserved.
WATCOM is a trademark of WATCOM International Corp.
	wcc386 /p /c alscript.c
WATCOM C32 Optimizing Compiler  Version 10.6 
Copyright by WATCOM International Corp. 1984, 1996. All rights reserved.
WATCOM is a trademark of WATCOM International Corp.
Error! E1073: Invalid option '/c'






































































 
#pragma pack(__push,1);




 


 


 







typedef unsigned short wchar_t;








 typedef unsigned size_t;



 
  
 



 
  typedef char *__va_list[1];
 
 



 




typedef struct	__iobuf {
	unsigned char	*_ptr;		 
	int		_cnt;		 
	unsigned char	*_base; 	 
	unsigned	_flag;		 
	int		_handle;	 
	unsigned	_bufsize;	 
	unsigned char	_ungotten;	 
	unsigned char	_tmpfchar;	 
} FILE;

typedef long	fpos_t;


 
 
 
  
 



extern	FILE   __near __iob[];








































extern void	clearerr( FILE *__fp );
extern int	fclose( FILE *__fp );
extern int	feof( FILE *__fp );
extern int	ferror( FILE *__fp );
extern int	fflush( FILE *__fp );
extern int	fgetc( FILE *__fp );
extern int	fgetpos( FILE *__fp, fpos_t *__pos );
extern char	*fgets( char *__s, int __n, FILE *__fp );
extern FILE	*fopen( const char *__filename, const char *__mode );
extern int	fprintf( FILE *__fp, const char *__format, ... );
extern int	fputc( int __c, FILE *__fp );
extern int	fputs( const char *__s, FILE *__fp );
extern size_t	fread( void *__ptr, size_t __size, size_t __n, FILE *__fp );
extern FILE	*freopen( const char *__filename, const char *__mode, FILE *__fp );
extern int	fscanf( FILE*__fp, const char *__format, ... );
extern int	fseek( FILE *__fp, long int __offset, int __whence );
extern int	fsetpos( FILE *__fp, const fpos_t *__pos );
extern long int ftell( FILE *__fp );
extern size_t	fwrite( const void *__ptr, size_t __size, size_t __n, FILE *__fp );
extern int	getc( FILE *__fp );
extern int	getchar( void );
extern char	*gets( char *__s );
extern void	perror( const char *__s );
extern int	printf( const char *__format, ... );
extern int	putc( int __c, FILE *__fp );
extern int	putchar( int __c );
extern int	puts( const char *__s );
extern int	remove( const char *__filename );
extern int	rename( const char *__old, const char *__new );
extern void	rewind( FILE *__fp );
extern int	scanf( const char *__format, ... );
extern void	setbuf( FILE *__fp, char *__buf );
extern int	setvbuf( FILE *__fp, char *__buf, int __mode, size_t __size );
extern int	sprintf( char *__s, const char *__format, ... );
extern int	sscanf( const char *__s, const char *__format, ... );
extern FILE	*tmpfile( void );
extern char	*tmpnam( char *__s );
extern int	ungetc( int __c, FILE *__fp );
extern int	vfprintf( FILE *__fp, const char *__format, __va_list __arg );
extern int	vprintf( const char *__format, __va_list __arg );
extern int	vsprintf( char *__s, const char *__format, __va_list __arg );


extern int	fcloseall( void );
extern FILE	*fdopen( int __handle, const char *__mode );
extern FILE	*_fdopen( int __handle, const char *__mode );
extern int	_grow_handles( int __new_count );
extern int	fgetchar( void );
extern int	fputchar( int __c );
extern FILE	*_fsopen( const char *__filename, const char *__mode, int __shflag );
extern int	flushall( void );
extern int	vfscanf( FILE *__fp, const char *__format, __va_list __arg );
extern int	vscanf( const char *__format, __va_list __arg );
extern int	vsscanf( const char *__s, const char *__format, __va_list __arg );
extern int	_bprintf( char *__buf, unsigned int __bufsize, const char *__fmt, ... );
extern int	_vbprintf( char *__s, unsigned int __bufsize, const char *__format, __va_list __arg );
















 
#pragma pack(__pop);












 
#pragma pack(__push,1);




















    


typedef struct	{
	int	quot;
	int	rem;
} div_t;

typedef struct	{
	long	quot;
	long	rem;
} ldiv_t;

extern void	 abort( void );
extern int	 abs( int __j );
extern int	 atexit( register void ( *__func )( void ) );
extern double	 atof( const char *__nptr );
extern int	 atoi( const char *__nptr );
extern long int  atol( const char *__nptr );
extern void	*bsearch( const void *__key, const void *__base,
		    size_t __nmemb, size_t __size,
		    int ( *__compar )( const void *__pkey, const void *__pbase ) );
extern void	 break_on( void );
extern void	 break_off( void );
extern void	*calloc( size_t __n, size_t __size );
extern div_t	 div( int __numer, int __denom );
extern void	 exit( int __status );
extern void	 free( void *__ptr );
extern char	*getenv( const char *__name );
extern long int  labs( long int __j );
extern ldiv_t	 ldiv( long int __numer, long int __denom );
extern void	*malloc( size_t __size );
extern int	 mblen( const char *__s, size_t __n );
extern size_t	 mbstowcs( wchar_t *__pwcs, const char *__s, size_t __n );
extern int	 mbtowc( wchar_t *__pwc, const char *__s, size_t __n );
extern size_t	 wcstombs( char *__s, const wchar_t *__pwcs, size_t __n );
extern int	 wctomb( char *__s, wchar_t __wchar );
extern void	 qsort( void *__base, size_t __nmemb, size_t __size,
		    int (*__compar)( const void *, const void * ) );
extern int	 rand( void );
extern void	*realloc( void *__ptr, size_t __size );
extern void	 srand( unsigned int __seed );
extern double	 strtod( const char *__nptr, char **__endptr );
extern long int  strtol( const char *__nptr, char **__endptr, int __base );
extern unsigned long	 strtoul( const char *__nptr, char **__endptr, int __base );
extern int	 system( const char *__string );










extern void	 _exit( int __status );
extern char	*ecvt( double __val, int __ndig, int *__dec, int *__sign );
extern char	*_ecvt( double __val, int __ndig, int *__dec, int *__sign );
extern char	*fcvt( double __val, int __ndig, int *__dec, int *__sign );
extern char	*_fcvt( double __val, int __ndig, int *__dec, int *__sign );
extern char	*_fullpath( char *__buf, const char *__path, size_t __size );
extern char	*gcvt( double __val, int __ndig, char *__buf );
extern char	*_gcvt( double __val, int __ndig, char *__buf );
extern char	*itoa( int __value, char *__buf, int __radix );
extern char	*_itoa( int __value, char *__buf, int __radix );
extern unsigned long _lrotl( unsigned long __value, unsigned int __shift );
extern unsigned long _lrotr( unsigned long __value, unsigned int __shift );
extern char	*ltoa( long int __value, char *__buf, int __radix );
extern char	*_ltoa( long int __value, char *__buf, int __radix );
extern void	 _makepath( char *__path, const char *__drive,
		    const char *__dir, const char *__fname,
		    const char *__ext );
extern unsigned int _rotl( unsigned int __value, unsigned int __shift );
extern unsigned int _rotr( unsigned int __value, unsigned int __shift );
extern int	 putenv( const char *__string );
extern void	 _searchenv( const char *__name, const char *__env_var,
		    char *__buf );
extern void	 _splitpath2( const char *__inp, char *__outp,
		    char **__drive, char **__dir, char **__fn, char **__ext );
extern void	 _splitpath( const char *__path, char *__drive,
		    char *__dir, char *__fname, char *__ext );
extern void	 swab( char *__src, char *__dest, int __num );

extern char	*ultoa( unsigned long int __value, char *__buf, int __radix );
extern char	*_utoa( unsigned int __value, char *__buf, int __radix );
extern char	*utoa( unsigned int __value, char *__buf, int __radix );



































extern char **__near environ;	 


    

extern int  (*__get_errno_ptr()) ;

extern	int		 (*__get_doserrno_ptr()) ;	 
extern	unsigned __near _psp;		 


extern	unsigned char __near _osmode;	 
extern	int	__near	_fmode; 	 
extern char *		sys_errlist[];	 
extern int	__near	sys_nerr;	 
extern unsigned __near	__minreal;	 
extern unsigned long __near __win_alloc_flags;  
extern unsigned long __near __win_realloc_flags; 
extern unsigned char __near _osmajor;	 
extern unsigned char __near _osminor;	 
extern unsigned __near	    _amblksiz;	 

extern void __near *__brk(unsigned __new_brk_value);
extern void __near *sbrk(int __increment);
 typedef void (*onexit_t)();
extern onexit_t onexit(onexit_t __func);


 
#pragma pack(__pop);


























extern void *memchr( const void *__s, int __c, size_t __n );
extern int   memcmp( const void *__s1, const void *__s2, size_t __n );
extern void *memcpy( void *__s1, const void *__s2, size_t __n );
extern void *memmove( void *__s1, const void *__s2, size_t __n );
extern void *memset( void *__s, int __c, size_t __n );
extern char *strcat( char *__s1, const char *__s2 );
extern char *strchr( const char *__s, int __c );
extern int strcmp( const char *__s1, const char *__s2 );
extern int strcoll( const char *__s1, const char *__s2 );
extern size_t strxfrm( char *__s1, const char *__s2, size_t __n );
extern char *strcpy( char *__s1, const char *__s2 );
extern size_t strcspn( const char *__s1, const char *__s2 );
extern char *strerror( int __errnum );
extern size_t strlen( const char *__s );
extern char *strncat( char *__s1, const char *__s2, size_t __n );
extern int strncmp( const char *__s1, const char *__s2, size_t __n );
extern char *strncpy( char *__s1, const char *__s2, size_t __n );
extern char *strpbrk( const char *__s1, const char *__s2 );
extern char *strrchr( const char *__s, int __c );
extern size_t strspn( const char *__s1, const char *__s2 );
extern char *strstr( const char *__s1, const char *__s2 );
extern char *strtok( char *__s1, const char *__s2 );






extern void __far *_fmemccpy(void __far *__s1,const void __far *__s2,int __c,size_t __n);


extern void __far *_fmemchr( const void __far *__s, int __c, size_t __n );


extern void __far *_fmemcpy( void __far *__s1, const void __far *__s2, size_t __n );


extern void __far *_fmemmove( void __far *__s1, const void __far *__s2, size_t __n );


extern void __far *_fmemset( void __far *__s, int __c, size_t __n );


extern int  _fmemcmp( const void __far *__s1, const void __far *__s2, size_t __n );


extern int  _fmemicmp( const void __far *__s1, const void __far *__s2, size_t __n );


extern char __far *_fstrcat( char __far *__s1, const char __far *__s2 );


extern char __far *_fstrchr( const char __far *__s, int __c );


extern int  _fstrcmp( const char __far *__s1, const char __far *__s2 );


extern char __far *_fstrcpy( char __far *__s1, const char __far *__s2 );


extern size_t _fstrcspn( const char __far *__s1, const char __far *__s2 );


extern char __far *_fstrdup( const char __far *__string );


extern int  _fstricmp( const char __far *__s1, const char __far *__s2 );


extern char __far *_fstrncat( char __far *__s1, const char __far *__s2, size_t __n );


extern size_t _fstrlen( const char __far *__s );


extern char __far *_fstrlwr( char __far *__string );


extern int  _fstrncmp( const char __far *__s1, const char __far *__s2, size_t __n );


extern char __far *_fstrncpy( char __far *__s1, const char __far *__s2, size_t __n );


extern int  _fstrnicmp( const char __far *__s1, const char __far *__s2, size_t __n );


extern char __far *_fstrnset( char __far *__string, int __c, size_t __len );


extern char __far *_fstrpbrk( const char __far *__s1, const char __far *__s2 );


extern char __far *_fstrrchr( const char __far *__s, int __c );


extern char __far *_fstrrev( char __far *__string );


extern char __far *_fstrset( char __far *__string, int __c );


extern size_t _fstrspn( const char __far *__s1, const char __far *__s2 );


extern char __far *_fstrstr( const char __far *__s1, const char __far *__s2 );


extern char __far *_fstrtok( char __far *__s1, const char __far *__s2 );


extern char __far *_fstrupr( char __far *__string );

extern void movedata( unsigned __srcseg, unsigned __srcoff,
	       unsigned __tgtseg, unsigned __tgtoff, unsigned __len );
extern void *memccpy( void *__s1, const void *__s2, int __c, size_t __n );
extern int  memicmp( const void *__s1, const void *__s2, size_t __n );
extern int  _memicmp( const void *__s1, const void *__s2, size_t __n );
extern int   strcmpi( const char *__s1, const char *__s2 );
extern char *strdup( const char *__string );
extern char *_strdup( const char *__string );
extern int   stricmp( const char *__s1, const char *__s2 );
extern int   _stricmp( const char *__s1, const char *__s2 );
extern char *strlwr( char *__string );
extern char *_strlwr( char *__string );
extern int   strnicmp( const char *__s1, const char *__s2, size_t __n );
extern int   _strnicmp( const char *__s1, const char *__s2, size_t __n );
extern char *strnset( char *__string, int __c, size_t __len );
extern char *strrev( char *__string );
extern char *_strrev( char *__string );
extern char *strset( char *__string, int __c );
extern char *strupr( char *__string );
extern char *_strupr( char *__string );












struct pmatrix {
    char *title;     
    char *indx;	     
    int  inlen;	     
    int **array;     
};



struct seqdat {	 
    int ilen;	 
    char *id;	 
    int tlen;	 
    char *title;	 
    int slen;	 
    char *seq;	 
};





struct smseq {
	int nseq;		 
	int blen;		 
	char *title;		 
	int ninfo;               
	char **info;		 
	char *gapchars;		 
};










struct sident {
    char *id;	     
    char *title;     
    int uid;	     
};

struct alseq {
    char *line;	     
};

struct mseq {
    int nseq;		 
    int blen;		 
    struct sident *itd;	 
    struct alseq *bloc;	


 
};


struct defstr {
	int maxilen;	 
	int maxtlen;	 
	int maxslen;	 
};






















typedef int GJ_LIM;               
typedef int GJ_PEN;               
typedef int GJ_FLG;               
typedef float GJ_FLOAT;           
typedef double GJ_DBL;            
typedef int GJ_S_COUNT;           
typedef long GJ_L_COUNT;          

typedef struct {                     
  char *name;                     
  FILE *handle;
} GJFILE;

struct tokens {                   
  int ntok;                       
  char **tok;
};

typedef struct {
  int  min ;
  int  max ;
} IRANGE;





void *GJmalloc(size_t);
void *GJrealloc(void *,size_t);
void *GJmallocNQ(size_t);
void *GJreallocNQ(void *,size_t);
void GJfree(void *);
void GJerror(const char *);
char *GJstrdup(const char *);
char *GJstoupper(const char *);
char *GJstolower(const char *);
char *GJstoup(char *);
char *GJstolo(char *);

FILE *GJfopen(const char *, const char *,int);
int  GJfclose(FILE *,int);
GJFILE *GJfilemake(const char *name,const char *type,int action);
GJFILE *GJfilerename(GJFILE *ret_val, const char *name);
GJFILE *GJfileclose(GJFILE *ret_val,int action);
GJFILE *GJfileopen(GJFILE *ret_val,const char *type,int action);
GJFILE *GJfileclean(GJFILE *fval,int action);
void GJinitfile(void);

char *GJfnonnull(char *);
char *GJstrappend(char *,char *);
char *GJremovechar(char *,char);
char *GJremovechar2(char *string,char c);
char *GJstrcreate(size_t, char *);
char *GJstrlocate(char *,char *);
char *GJsubchar(char *,char,char);
char *GJstrtok(char *,const char *);
void error(const char *, int);
unsigned char **uchararr(int,int);
void ucharfree(unsigned char **array,int i);
signed   char **chararr(int,int);
void GJCinit(signed char **,int ,int ,char );
void mcheck(void *, char *);
char *GJstrblank(char *, int);
void GJUCinit(unsigned char **,int ,int ,unsigned char );
char *GJcat(int N,...);
struct tokens *GJgettokens(const char *delims, char *buff);
void GJfreetokens(struct tokens *tok);
char * GJtoktostr(struct tokens *tok, char delim, int s, int e);
void GJ_start_clock(void);
void GJ_stop_clock(FILE *fp);
char *GJstrrename(char *old,const char *new);
void GJindexx(int *arrin,int n,int *indx);

void GJpline(FILE *fp,char c,int n);
char *GJlocaltime(void);
void GJpstring(FILE *fp,char *s,int n);

IRANGE *irange(int *ivec, int n);




























int MAXtlen = 500;
int MAXnbloc = 500;
int MAXilen = 50;
int precis = 100;
int MAXslen = 8000;
int MAXnseq;

void ALwritestddefs(FILE *);
int alps(char *command_file,int silent, int pipe, int single);

main(int argc,char *argv[])
{
  char *alps_file;
  int silent;
  int quick;
  int i;
  int pipe;
  int singlepage;  
  FILE *fp;
  char *Alscript_Version =  "ALSCRIPT Version 2.05 - 11 August 1998" ;

  extern FILE *std_out,*std_err,*std_in;

  silent = 0;
  quick = 0;
  pipe = 0;

  alps_file =  0 ;
  
  
  GJinitfile();

  singlepage = 0;
  
  if(argc > 1){
    
    i = 1;
    while(i<argc){
        if(argv[i][0] == '-'){
            if(strcmp(argv[i],"-f")==0){
                
                alps_file = GJstrdup(argv[++i]);
            }else if(strcmp(argv[i],"-s")==0){
                
                silent = 1;
            }else if(strcmp(argv[i],"-q")==0){
                
                quick = 1;
                pipe = 1;
            }else if(strcmp(argv[i],"-p")==0){
                
                pipe = 1;
                silent = 1;
            }else if(strcmp(argv[i],"-single")==0){
                
		singlepage = 1;
            }
            ++i;
        }else if(i == 1){
            
            alps_file = GJstrdup(argv[1]);
            break;
        }
    }
  }

  if(!silent){    
    fprintf(std_err,"\nALSCRIPT  (ALignment to PostScript)\n");

    fprintf(std_err,"%s\n",Alscript_Version);
    fprintf(std_err,"\nSee ALSCRIPT.DOC for details\n");

    fprintf(std_err,"\nPlease Reference: Barton, G. J. (1993), Protein Engineering, 6, 37-40.\n");

    fprintf(std_err,"\nBy: G. J. Barton\n");
    fprintf(std_err,"\nCopyright: Geoffrey J. Barton (1992,1997)\n");
    fprintf(std_err,"email: geoff@ebi.ac.uk\n\n");

    fprintf(std_err,"Initial Defaults:\n");
    fprintf(std_err,"Maximum number of sequences:\t %d \t(Change using MAX_NSEQ command)\n",MAXnbloc);
    fprintf(std_err,"Maximum sequence length:\t %d \t(Change using MAX_SEQ_LEN command)\n",MAXslen);
    fprintf(std_err,"Maximum identifier length:\t %d \t(Change using MAX_ID_LEN command)\n",MAXilen);
  }

  if(alps_file ==  0  && !quick){
    fprintf(std_err,"Enter ALscript Command File name: ");
    alps_file = (char *) GJmalloc(sizeof(char) * MAXtlen);
    fscanf(std_in,"%s",alps_file);
  }

  if(quick){
    
    fp = GJfopen("ALPSQ.COM","w",1);
    ALwritestddefs(fp);
    GJfclose(fp,1);
    alps_file = GJstrdup("ALPSQ.COM");
  }

  if(!silent)fprintf(std_err,"ALscript Command File: %s\n",alps_file);

  if(alps(alps_file,silent,pipe,singlepage) == 1){
    if(!silent)fprintf(std_err,"ALscript Finished\n");
    exit(0);
  }else{
    error("Error in ALscript",1);
  }
}



void ALwritestddefs(FILE *alps_file)
{
    fprintf(alps_file,"#ALSCRIPT - Default definitions\n");
    fprintf(alps_file,"#For explanation of commands see file: alscript.doc\n");
    fprintf(alps_file,"#Input from stdin and output to stdout by default\n");
    fprintf(alps_file,"#block_file ?\n");
    fprintf(alps_file,"#output_file ?\n");
    fprintf(alps_file,"landscape\n");
    fprintf(alps_file,"number_seqs\n");
    fprintf(alps_file,"pointsize 8\n");
    fprintf(alps_file,"define_font 0 Helvetica DEFAULT\n");
    fprintf(alps_file,"define_font 1 Helvetica REL 0.5 \n");
    fprintf(alps_file,"define_font 2 Helvetica-Bold DEFAULT\n");
    fprintf(alps_file,"define_font 3 Times-Bold DEFAULT\n");
    fprintf(alps_file,"define_font 4 Helvetica-BoldOblique DEFAULT\n");
    fprintf(alps_file,"setup\n");
    fprintf(alps_file,"mask SETUP\n");
    fprintf(alps_file,"mask LEGAL \"ARNDCQEGHILKMFPSTWYVBZX\"\n");    
    fprintf(alps_file,"mask FRE ALL\n");
    fprintf(alps_file,"mask SHADE ALL 0\n");
    fprintf(alps_file,"mask INVERSE ALL\n");
    fprintf(alps_file,"mask SHADE ALL 0\n");
    fprintf(alps_file,"mask RESET\n");
    fprintf(alps_file,"#shade_chars GP ALL 0\n");
    fprintf(alps_file,"#inverse_chars GP ALL \n");
    fprintf(alps_file,"#shade_chars LIVAWYFM ALL 0.8 \n");
    fprintf(alps_file,"font_chars DEKRH ALL 4\n");
}












