🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: gnu.gcc.bug
Article #973

gcc 2.2.2 and Ultrix 4.2c on ghostscript2.5

#973
From: Doug Berry
Date: Thu, 20 Aug 1992 12:48
2602 lines
26382 bytes
I've had a problem with the compiler

I made the compiler by doing 
  configure decstation
here's gcc -v
-------------------%<-----------------------
Reading specs from /usr/local/lib/gcc-lib/decstation/2.2.2/specs
gcc version 2.2.2
-------------------%<-----------------------
i was making ghostscript2.5 on a DECstation 5000/25 running
Ultrix 4.2c when...

gcc  -g -O  -I/usr/local/lib/gcc-lib/include -c gsmain.c
pid 3074 (cc1) was killed on an unaligned access, at pc 0x46e40c
gcc: Internal compiler error: program cc1 got fatal signal 10
make: *** [gsmain.o] Error 1
-------------------%<-----------------------
here is output from gcc -E -I/usr/local/lib/gcc-lib/include gsmain.c
-------------------%<-----------------------
# 1 "gsmain.c"
 


















 
 
# 1 "memory_.h" 1
 


















 
 

 
 













# 57 "memory_.h"




# 1 "/usr/include/memory.h" 1 3
 
extern void
	*memccpy(),
	*memchr(),
	*memcpy(),
	*memmove(),
	*memset();
extern int memcmp();
# 61 "memory_.h" 2






 
 
 
 
 
 




extern void memswab2(), memswab4();


 
 
 
 



extern void memflip8x8();

# 22 "gsmain.c" 2

# 1 "string_.h" 1
 


















 
 










# 1 "/usr/local/lib/gcc-lib/decstation/2.2.2/include/string.h" 1 3
 



 


























 














typedef	unsigned int	size_t;		 


 


		



 




extern char
	*strcat( char *__s1, const char *__s2 ),	
	*strchr( const char *__s, int __c ),
	*strcpy( char *__s1, const char *__s2 ),
	*strerror( int __n ),		
	*strncat( char *__s1, const char *__s2, size_t __n ),
	*strncpy( char *__s1, const char *__s2, size_t __n ),
	*strpbrk(const char *__s1, const char *__s2 ),	
	*strrchr( const char *__s, int __c ),
	*strstr( const char *__s, const char *__t ),
	*strtok( char *__s1, const char *__s2 );	

extern int
	memcmp( const void *__s1, const void *__s2, size_t __n ),
	strcmp( const char *__s1, const char *__s2 ),
	strcoll( const char *__s1, const char *__s2 ),
	strncmp( const char *__s1, const char *__s2, size_t __n );

extern void
	*memchr( const void *__s, int __c, size_t __n ),	
	*memcpy( void *__s1, const void *__s2, size_t __n ),
	*memmove( void *__s1, const void *__s2, size_t __n ),
	*memset( void *__s, int __c, size_t __n );

extern size_t
	strcspn( const char *__s1, const char *__s2 ),
	strlen( const char *__s ),
	strspn( const char *__s1, const char *__s2 ),
	strxfrm( char *__to, const char *__from, size_t __maxsize  );

# 125 "/usr/local/lib/gcc-lib/decstation/2.2.2/include/string.h" 3

# 32 "string_.h" 2



# 23 "gsmain.c" 2

# 1 "ghost.h" 1
 


















 
 
# 1 "gx.h" 1
 


















 
 
# 1 "gs.h" 1
 


















 
 
# 1 "/usr/local/lib/gcc-lib/decstation/2.2.2/include/stdio.h" 1 3
 
 


























 



























































# 1 "/usr/local/lib/gcc-lib/decstation/2.2.2/include/ansi_compat.h" 1 3
 



 





















 

















# 116 "/usr/local/lib/gcc-lib/decstation/2.2.2/include/ansi_compat.h" 3

# 89 "/usr/local/lib/gcc-lib/decstation/2.2.2/include/stdio.h" 2 3













			 




extern	struct	_iobuf {
	int	_cnt;
	char	*_ptr;
	char	*_base;
	int	_bufsiz;
	short	_flag;
	short	_file;
} _iob[3 ];
typedef	struct _iobuf	FILE;

typedef	long	fpos_t;

















 




		



 



extern int 	getc( FILE *__stream );
extern int	getchar( void );
extern int	putc( int __c, FILE *__stream);
extern int	putchar( int __c);
extern int	feof( FILE *__stream );
extern int	ferror( FILE *__stream );
extern int	fileno( FILE *__stream );
extern int	_filbuf( FILE *p);
extern int	_flsbuf( unsigned char x , FILE *p);
















typedef char *va_list;

 



extern void	clearerr( FILE *__stream); 
extern int	fclose( FILE *__stream );
extern FILE *	fdopen( int __filedes, char *__type );
extern int	fflush( FILE *__stream );
extern int	fgetc( FILE *__stream );
extern int	fgetpos( FILE *__stream, fpos_t *__pos );
extern char *	fgets( char *__s, int __n, FILE *__stream );
extern FILE *	fopen( const char *__filename, const char *__type );
extern int	fprintf( FILE *__stream, const char *__format, ... );
extern int	fputc( int __c, FILE *__stream );
extern int	fputs( const char *__s, FILE *__stream );
extern size_t	fread( void *__ptr, size_t __size,
			size_t __nitems, FILE *__stream ); 
extern FILE *	freopen( const char *__filename, const char *__type,
			FILE *__stream );
extern int	fscanf( FILE *__stream, const char *__format, ... );
extern int	fseek( FILE *__stream, long __offset, int __ptrname );
extern int	fsetpos( FILE *__stream, const fpos_t *__pos );
extern long	ftell( FILE *__stream );
extern size_t	fwrite( const void *__ptr, size_t __size,
			size_t __nitems, FILE *__stream );
extern char *	gets( char *__s );	
extern void	perror( const char *__s );
extern FILE  *	popen(const char *__command, const char *__type );
extern int	printf( const char *__format, ... );	
extern int	puts( const char *__s );	
extern int	remove( const char *__filename );
extern int	rename( const char *__from, const char *__to );
extern void	rewind( FILE *__stream );
extern int	scanf( const char *__format, ... );	
extern void	setbuf( FILE *__stream, char *__buf );
extern int	setvbuf( FILE *__stream, char *__buf,
			int __type, size_t __size );
extern int	sscanf( const char *__s, const char *__format, ... );
extern FILE *	tmpfile( void );	
extern char *	tmpnam( char *__s );
extern int	ungetc( int __c, FILE *__stream );
extern int	vfprintf( FILE *__stream, const char *__format, va_list __ap );
extern int	vprintf( const char *__format, va_list __ap );
extern int	vsprintf( char *__s, const char *__format, va_list __ap);


extern char *	tempnam( const char *__dir, const char *__pfx);
extern int	putw( int __w, FILE *__stream );
extern int	getw(FILE *__stream);
extern int	pclose( FILE *__stream );


# 299 "/usr/local/lib/gcc-lib/decstation/2.2.2/include/stdio.h" 3



 
extern int	sprintf( char *__s, const char *__format, ... );



















# 22 "gs.h" 2

# 1 "std.h" 1
 


















 
 




 
# 1 "arch.h" 1
 












# 27 "std.h" 2



 

























 
 




 
 
 







 




 
 









 



 
 


 
typedef unsigned char byte;
typedef unsigned char uchar;
typedef unsigned short ushort;
typedef unsigned int uint;
typedef unsigned long ulong;

 
 
 
 




# 1 "/usr/local/lib/gcc-lib/decstation/2.2.2/include/sys/types.h" 1 3
 

 



























 















































# 1 "/usr/local/lib/gcc-lib/decstation/2.2.2/include/ansi_compat.h" 1 3
 



 





















 

















# 116 "/usr/local/lib/gcc-lib/decstation/2.2.2/include/ansi_compat.h" 3

# 79 "/usr/local/lib/gcc-lib/decstation/2.2.2/include/sys/types.h" 2 3




 



 


 


 


typedef	unsigned char	u_char;
typedef	unsigned short	u_short;
typedef	unsigned int	u_int;
typedef	unsigned int	uint_ ;		 
typedef	unsigned long	u_long;
typedef	unsigned short	ushort_ ;		 

typedef	volatile char		v_char;
typedef	volatile short		v_short;
typedef	volatile long		v_long;
typedef	volatile unsigned char	vu_char;
typedef	volatile unsigned short	vu_short;
typedef	volatile unsigned long	vu_long;

typedef

	signed

		char	s_char;









typedef	struct	_physadr { int r[1]; } *physadr;
 



typedef	struct	label_t	{
	int	val[12];
} label_t;


typedef	struct	_quad { long val[2]; } quad;
typedef	long	daddr_t;
typedef	char *	caddr_t;
typedef u_long	gno_t;
typedef short	cnt_t;			 
typedef	long	swblk_t;
typedef long	paddr_t;		 
typedef	long	audit_ID_t;


typedef	short	dev_t;
typedef short	gid_t;			 
typedef	unsigned long	ino_t;
typedef unsigned short	mode_t;		 
typedef short	nlink_t;		 
typedef	int	off_t;


typedef int	pid_t;			 

typedef short	uid_t;			 


typedef int	time_t;












typedef int	clock_t;			 

typedef long	key_t;			 




 











 









 

typedef long	fd_mask;






typedef	struct fd_set {
	fd_mask	fds_bits[(((4096	 )+(( (sizeof(fd_mask) * 8		)	)-1))/( (sizeof(fd_mask) * 8		)	)) ];
} fd_set;








# 111 "std.h" 2






 
 





 
 




# 138 "std.h"


 
 



typedef char *ptr_ord_t;

 








 







 




 
 
 
 
 
 
typedef double floatp;

 
 






 



















# 219 "std.h"


 
 
 
 
 
typedef char *(*proc_alloc_t)(unsigned num_elements, unsigned element_size, const char *client_name );
typedef void (*proc_free_t)(char *data, unsigned num_elements, unsigned element_size, const char *client_name );

 
 
 
 

 























































































# 23 "gs.h" 2


 
extern FILE *gs_stdin, *gs_stdout, *gs_stderr;

 
 














 
 
 













 
typedef struct gs_point_s {
	double x, y;
} gs_point;
typedef struct gs_int_point_s {
	int x, y;
} gs_int_point;
 
 
 
 
typedef struct gs_rect_s {
	gs_point p, q;			 
} gs_rect;
typedef struct gs_int_rect_s {
	gs_int_point p, q;
} gs_int_rect;

 
 
typedef struct gs_state_s gs_state;

 
 
typedef struct {
	proc_alloc_t alloc;
	proc_free_t free;
} gs_memory_procs;
 
 
char *gs_malloc(uint, uint, const char * );
void gs_free(char *, uint, uint, const char * );
# 22 "gx.h" 2

# 1 "gdebug.h" 1
 


















 
 

 
extern char gs_debug[128];
 








 






 
# 65 "gdebug.h"












# 23 "gx.h" 2


 
extern int gs_log_error(int, const char   *, int );


# 22 "ghost.h" 2

# 1 "iref.h" 1
 


















 
 

 
typedef struct ref_s ref;

 



typedef enum {
	t_array,			 
	t_boolean,			 
	t_condition,			 
	t_dictionary,			 
	t_file,				 
	t_fontID,			 
	t_gstate,			 
	t_integer,			 
	t_lock,				 
	t_mark,				 
	t_name,				 
	t_null,				 
	t_operator,			 
	t_real,				 
	t_save,				 
	t_string,			 
 
	t_mixedarray,			 
	t_shortarray,			 
 






	t_device,			 
	t_oparray,			 
	t_next_index		 
} ref_type;
 






 





 






 








 












 
 
 

					 


					 









 


 
typedef struct dict_s dict;
typedef struct name_s name;
 
 
typedef int (*dummy_op_proc_p)();


 
 



struct stream_s;
struct gs_font_s;
struct gs_color_s;
struct gs_condition_s;
struct gs_lock_s;
struct gx_device_s;
struct gstate_obj_s;
struct vm_save_s;
struct tas_s {
	ushort type_attrs;
	ushort rsize;
};
struct ref_s {

	struct tas_s tas;




 






















	union v {			 
		long intval;
		ushort index;		 
		float realval;
		byte *bytes;
		const byte *const_bytes;
		struct ref_s *refs;
		const struct ref_s *const_refs;
		name *pname;
		const name *const_pname;
		dict *pdict;
		const dict *const_pdict;
		const ushort   *packed;
		dummy_op_proc_p opproc;
		struct stream_s *pfile;
		struct gs_font_s *pfont;
		struct gs_condition_s *pcond;
		struct gs_lock_s *plock;
		struct gx_device_s *pdevice;
		struct gs_state_s *pgstate;
		struct vm_save_s *psave;
	} value;
};
# 23 "ghost.h" 2

# 24 "gsmain.c" 2

# 1 "gp.h" 1
 


















 
 

 





 

 





extern void gp_init(void );

 



extern void gp_exit(void );

 

 



extern void gp_get_clock(long *pdt );

 

 







typedef struct gx_device_s gx_device;


 
extern void gp_console_puts(const char *, uint );

 
extern int gp_make_console_current(gx_device * );

 
extern int gp_make_graphics_current(gx_device * );

 

 





extern FILE *gp_open_printer(char *fname );

 
extern void gp_close_printer(FILE *pfile, const char *fname );

 

 
extern const char gp_file_name_list_separator;

 
extern const char gp_scratch_file_name_prefix[];

 
extern const int gp_file_names_ignore_case;

 
 
 
extern const char gp_fmode_binary_suffix[];
 
 
extern const char gp_fmode_rb[];
extern const char gp_fmode_wb[];

 
 
extern FILE *gp_open_scratch_file(const char *prefix, char *fname,
				     const char *mode );

 
 
extern int gp_file_name_is_absolute(const char *fname, uint len );

 
 
extern const char *
	gp_file_name_concat_string(const char *prefix, uint plen,
				      const char *fname, uint len );

 

 
 
typedef struct file_status_s {
	long size_pages;
	long size_bytes;
	long time_referenced;
	long time_created;
} file_status;
extern int gp_file_status(const char *fname, file_status *pstatus );

 

struct file_enum_s;	 
typedef struct file_enum_s file_enum;

 









extern file_enum *gp_enumerate_files_init(const char *pat, uint patlen,
					     proc_alloc_t palloc,
					     proc_free_t pfree );

 






extern uint gp_enumerate_files_next(file_enum *pfen, char *ptr, uint maxlen );

 





extern void gp_enumerate_files_close(file_enum *pfen );
# 25 "gsmain.c" 2

# 1 "gsmatrix.h" 1
 


















 
 




 
 

 
 
 







struct gs_matrix_s {
	long _xx  ; float xx;	long _xy  ; float xy;	long _yx  ; float yx;	long _yy  ; float yy;	long _tx  ; float tx;	long _ty  ; float ty ;
};


typedef struct gs_matrix_s gs_matrix;

 




 



 
void	gs_make_identity(gs_matrix * );
int	gs_make_translation(floatp, floatp, gs_matrix * ),
	gs_make_scaling(floatp, floatp, gs_matrix * ),
	gs_make_rotation(floatp, gs_matrix * );

 
int	gs_matrix_multiply(const gs_matrix *, const gs_matrix *, gs_matrix * ),
	gs_matrix_invert(const gs_matrix *, gs_matrix * ),
	gs_matrix_rotate(const gs_matrix *, floatp, gs_matrix * );

 
int	gs_point_transform(floatp, floatp, const gs_matrix *, gs_point * ),
	gs_point_transform_inverse(floatp, floatp, const gs_matrix *, gs_point * ),
	gs_distance_transform(floatp, floatp, const gs_matrix *, gs_point * ),
	gs_distance_transform_inverse(floatp, floatp, const gs_matrix *, gs_point * ),
	gs_bbox_transform_inverse(gs_rect *, gs_matrix *, gs_rect * );


# 26 "gsmain.c" 2

# 1 "gxdevice.h" 1
 


















 
 

# 1 "gxbitmap.h" 1
 


















 
 




 





typedef unsigned long gx_bitmap_id;


 













typedef struct gx_bitmap_s {
	byte *data;
	int raster;			 
	gs_int_point size;		 
	gx_bitmap_id id;
	ushort rep_width, rep_height;	 
} gx_bitmap;


# 23 "gxdevice.h" 2


 

 
typedef unsigned long gx_color_index;
 



 
typedef unsigned short gx_color_value;
 
 







 
typedef struct gx_device_color_info_s {
	int num_components;		 
					 
	int depth;			 
	gx_color_value max_gray;	 
	gx_color_value max_rgb;		 
					 
	gx_color_value dither_gray;	 
	gx_color_value dither_rgb;	 
					 
} gx_device_color_info;




 
typedef struct gx_device_procs_s gx_device_procs;

 

# 76 "gxdevice.h"

 
struct gx_device_s {
	int params_size;	gx_device_procs *procs;	const char *dname;	int width;	int height;	float x_pixels_per_inch;	float y_pixels_per_inch;	float l_margin, b_margin, r_margin, t_margin;	gx_device_color_info color_info;	int is_open			;
};





 


typedef struct gs_prop_item_s gs_prop_item;


 
 
 

struct gx_device_procs_s {



	int (*open_device)(gx_device *dev ) ;



	void (*get_initial_matrix)(gx_device *dev, gs_matrix *pmat ) ;



	int (*sync_output)(gx_device *dev ) ;



	int (*output_page)(gx_device *dev, int num_copies, int flush ) ;



	int (*close_device)(gx_device *dev ) ;




	gx_color_index (*map_rgb_color)(gx_device *dev, gx_color_value red, gx_color_value green, gx_color_value blue ) ;




	int (*map_color_rgb)(gx_device *dev, gx_color_index color, gx_color_value rgb[3] ) ;




	int (*fill_rectangle)(gx_device *dev, int x, int y, int width, int height, gx_color_index color ) ;






	int (*tile_rectangle)(gx_device *dev, const gx_bitmap *tile, int x, int y, int width, int height, gx_color_index color0, gx_color_index color1, int phase_x, int phase_y ) ;






	int (*copy_mono)(gx_device *dev, const unsigned char *data, int data_x, int raster, gx_bitmap_id id, int x, int y, int width, int height, gx_color_index color0, gx_color_index color1 ) ;





	int (*copy_color)(gx_device *dev, const unsigned char *data, int data_x, int raster, gx_bitmap_id id, int x, int y, int width, int height ) ;




	int (*draw_line)(gx_device *dev, int x0, int y0, int x1, int y1, gx_color_index color ) ;




	int (*get_bits)(gx_device *dev, int y, unsigned char *data, unsigned int size, int pad_to_word ) ;



	int (*get_props)(gx_device *dev, gs_prop_item *plist ) ;
    


	int (*put_props)(gx_device *dev, gs_prop_item *plist, int count ) ;
    
};

 
 
extern unsigned int gx_device_bytes_per_scan_line(const gx_device *dev, int pad_to_word );

 
 
extern int gx_device_adjust_resolution(gx_device *dev, int actual_width, int actual_height );

 
int gx_default_open_device(gx_device *dev ) ;
void gx_default_get_initial_matrix(gx_device *dev, gs_matrix *pmat ) ;
int gx_default_sync_output(gx_device *dev ) ;
int gx_default_output_page(gx_device *dev, int num_copies, int flush ) ;
int gx_default_close_device(gx_device *dev ) ;
gx_color_index gx_default_map_rgb_color(gx_device *dev, gx_color_value red, gx_color_value green, gx_color_value blue ) ;
int gx_default_map_color_rgb(gx_device *dev, gx_color_index color, gx_color_value rgb[3] ) ;
int gx_default_tile_rectangle(gx_device *dev, const gx_bitmap *tile, int x, int y, int width, int height, gx_color_index color0, gx_color_index color1, int phase_x, int phase_y ) ;
int gx_default_copy_color(gx_device *dev, const unsigned char *data, int data_x, int raster, gx_bitmap_id id, int x, int y, int width, int height ) ;
int gx_default_draw_line(gx_device *dev, int x0, int y0, int x1, int y1, gx_color_index color ) ;
int gx_default_get_bits(gx_device *dev, int y, unsigned char *data, unsigned int size, int pad_to_word ) ;
int gx_default_get_props(gx_device *dev, gs_prop_item *plist ) ;
int gx_default_put_props(gx_device *dev, gs_prop_item *plist, int count ) ;
# 27 "gsmain.c" 2

# 1 "gserrors.h" 1
 


















 
 

 
 
 
 














# 28 "gsmain.c" 2

# 1 "estack.h" 1
 


















 
 

 





typedef ref   *es_ptr;
typedef const ref   *const_es_ptr;
extern es_ptr esbot, esp, estop;
 








extern es_ptr esfile;


 














 





 
 





 



 




# 29 "gsmain.c" 2

# 1 "main.h" 1
 


















 
 

 
extern char *gs_lib_env_path;
extern uint gs_memory_chunk_size;
extern int gs_user_errors;

 
extern	void	gs_init0(FILE *, FILE *, FILE *, int ),
		gs_init1(void ),
		gs_init2(void );
extern	void	gs_add_lib_path(const char * );
 
 
 
 
extern	int	gs_run_file(const char *, int, int * ),
		gs_run_string(const char *, int, int * );
extern	void	gs_debug_dump_stack(int code );
extern	void	gs_finit(void ),
		gs_exit(int );
# 30 "gsmain.c" 2

# 1 "ostack.h" 1
 


















 
 

 





typedef ref   *os_ptr;
typedef const ref   *const_os_ptr;
extern os_ptr osbot, osp, ostop;

 


# 31 "gsmain.c" 2

# 1 "store.h" 1
 


















 
 

 
































 


# 67 "store.h"

	 
	 




 



extern int alloc_save_new_mask;		 
extern int alloc_save_test_mask;	 
extern int alloc_save_change(ref *ptr, const char *client_name );








 
 
 


extern ref *alloc_refs(uint num_refs, const char *client_name );
extern void alloc_free_refs(ref *ptr, uint num_refs, const char *client_name );




























 



















# 32 "gsmain.c" 2


 

uint gs_memory_chunk_size = 20000;
int gs_user_errors;

 
const char **gs_lib_paths;
static  int gs_lib_count;
char *gs_lib_env_path;

 
 
extern const char *gs_lib_default_path;
extern const char *gs_init_file;
extern ref gs_init_file_array[];
 
extern int gs_log_errors;
extern FILE *gs_debug_out;

 

 
static  int init1_done, init2_done;

 



 
void
gs_init0(FILE *in, FILE *out, FILE *err, int max_lib_paths)
{	 
	gs_stdin = in;
	gs_stdout = out;
	gs_stderr = err;
	gs_debug_out = gs_stdout;
	 
	 
	 
	 
	gp_init();
	 
	gs_lib_env_path = 0;
	gs_lib_paths =
		(const char **)gs_malloc(max_lib_paths + 3, sizeof(char *),
					 "gs_lib_paths array");
	gs_lib_count = 0;
	gs_user_errors = 1;
	gs_log_errors = 0;
	 
	memset(gs_debug, 0, 128);
	init1_done = init2_done = 0;
}

 
void
gs_init1()
{	if ( !init1_done )
	   {	alloc_init(gs_malloc, gs_free, gs_memory_chunk_size);
		{ extern void name_init(void ); name_init(); } 
		{ extern void obj_init(void ); obj_init(); } 		 
		{ extern void scan_init(void ); scan_init(); } 		 
		init1_done = 1;
	   }
}

 
void
gs_init2()
{	gs_init1();
	if ( !init2_done )
	   {	int code, exit_code;
		{ extern void gs_init(void ); gs_init(); } 
		{ extern void zop_init(void ); zop_init(); } 
		interp_init(1);		 
		{ extern void op_init(void ); op_init(); } 	 
		 
		{	ref *ifp = gs_init_file_array;
			ref ifa;
			for ( ; ifp->value.bytes != 0; ifp++ )
			  ((ifp)->tas.rsize = ( strlen((const char *)ifp->value.bytes))) ;
			(((&ifa)->value. refs = (
				  gs_init_file_array), ((&ifa)->tas.type_attrs = ((  t_array) << 7 ) + (  (0x10 +0x20 ) )) ) , ((&ifa)->tas.rsize = ( 
				  ifp - gs_init_file_array)) ) ;
			initial_enter_name("INITFILES", &ifa);
		}
		 
		code = gs_run_file(gs_init_file, gs_user_errors, &exit_code);
		if ( code < 0 )
		{	if ( code != (-100)  )
				gs_debug_dump_stack(code);
			gs_exit((exit_code ? exit_code : 2));
		}
		init2_done = 1;
	   }
   }

 
void
gs_add_lib_path(const char *lpath)
{	gs_lib_paths[gs_lib_count] = lpath;
	gs_lib_count++;
}

 

 
static  void
set_lib_paths()
{	const char **ppath = &gs_lib_paths[gs_lib_count];
	if ( gs_lib_env_path != 0 ) *ppath++ = gs_lib_env_path;
	if ( gs_lib_default_path != 0 ) *ppath++ = gs_lib_default_path;
	*ppath = 0;
}

 
static  int
run_open(const char *file_name, ref *pfile)
{	 
	 

	byte fn[200 ];
	uint len;
	return lib_file_open(file_name, strlen(file_name), fn, 200 ,
			     &len, pfile);
}
int
gs_run_file(const char *file_name, int user_errors, int *pexit_code)
{	ref initial_file;
	set_lib_paths();
	if ( run_open(file_name, &initial_file) < 0 )
	   {	(  fprintf(gs_stderr  , "Can't find initialization file %s\n",  file_name)) ;
		return gs_log_error((-100) , "gsmain.c", 166)  ;
	   }
	((&initial_file)->tas.type_attrs |= ( 0x20  + 0x40 )) ;
	return gs_interpret(&initial_file, user_errors, pexit_code);
}

int
gs_run_string(const char *str, int user_errors, int *pexit_code)
{	ref stref;
	set_lib_paths();
	(((&stref)->value. const_bytes = ( (byte *)str), ((&stref)->tas.type_attrs = ((  t_string) << 7 ) + (  0x40  + (0x10 +0x20 ) )) ) , ((&stref)->tas.rsize = ( 
		  strlen(str))) ) ;
	return gs_interpret(&stref, gs_user_errors, pexit_code);
}

 

 
extern gx_device *gx_device_list[];
void gs_malloc_release(void );
void file_close_all(void );
int gs_closedevice(gx_device * );
void gp_exit(void );
void gs_finit()
{	gx_device **pdev = gx_device_list;
	fflush(gs_stderr );			 
	for ( ; *pdev != 0; pdev++ )
	  gs_closedevice(*pdev);
	 
	file_close_all();
	 
	gs_malloc_release();
	 
	gp_exit();
}
void
gs_exit(int code)
{	gs_finit();
	exit(code);
}

 

 
extern void debug_print_ref(const ref * );
extern void debug_dump_refs(const ref *, uint, const char * );
extern ref error_object;

 
void
gs_debug_dump_stack(int code)
{	zflush(osp);	 
	fprintf(gs_stderr  , "\nUnexpected interpreter error %d!\nError object: ",  code) ;
	debug_print_ref(&error_object);
	fputc('\n', gs_stderr  ) ;
	debug_dump_refs(osbot, osp + 1 - osbot, "Operand stack");
	debug_dump_refs(esbot, esp + 1 - esbot, "Execution stack");
}

 
int
gs_log_error(int err, const char   *file, int line)
{	if ( gs_log_errors )
	  { if ( file == 0  )
	      fprintf(gs_stderr  , "Returning error %d\n",  err) ;
	    else
	      fprintf(gs_stderr  , "%s(%d): returning error %d\n", 
		       (char *)file,  line,  err) ;
	  }
	return err;
}
-------------------%<-----------------------

I hope this helps...
doug
-- 
  uucp:  ...utzoo!sis!doug            phone: +1 416 845 9430 x2140
  else:  doug.berry@sheridanc.on.ca
Technical Details
Message-ID: <9208202048.AA03085@monk.sheridanc.on.ca>
Path: arc1-ca.pugleaf.net!sparky!uunet!usc!rpi!uwm.edu!linac!pacific.mps.ohio-state.edu!cis.ohio-state.edu!monk.sheridanc.on.ca!doug

Show Full Headers
Complete Article Headers
Newsgroups: gnu.gcc.bug
Path: arc1-ca.pugleaf.net!sparky!uunet!usc!rpi!uwm.edu!linac!pacific.mps.ohio-state.edu!cis.ohio-state.edu!monk.sheridanc.on.ca!doug
From: doug@monk.sheridanc.on.ca (Doug Berry)
Subject: gcc 2.2.2 and Ultrix 4.2c on ghostscript2.5
Message-ID: <9208202048.AA03085@monk.sheridanc.on.ca>
Sender: gnulists@ai.mit.edu
Organization: GNUs Not Usenet
Distribution: gnu
Date: Thu, 20 Aug 1992 12:48:44 GMT
Approved: bug-gcc@prep.ai.mit.edu
Lines: 2603